45 Commits

Author SHA1 Message Date
Oliver Smith
ccfd8e40ea Bump version: 0.2.4.7-ebf2 → 0.3.0
Change-Id: Ibdd991c03499926404b92bac9d76238aade4175c
2024-07-25 09:49:50 +02:00
Vadim Yanitskiy
ebf2429f39 README.md: cosmetic: fix a typo
Change-Id: I5cd00ad066223fa33cf76ff1c85fbd810f37062c
2024-06-05 18:34:07 +07:00
Oliver Smith
ddfea86880 debian/postinst: add checks, be verbose
Do not attempt to change permissions/ownership if the package gets
upgraded from a version higher than the next release.

Do not fail if the user deleted the config file.

Be verbose when changing permissions.

Related: OS#4107
Change-Id: I8994759df644d6edd8f937051b95690537b749be
2024-05-14 15:21:06 +02:00
Oliver Smith
b9e204f3bd contrib: remove rpm spec file
Related: https://osmocom.org/news/255
Related: OS#6446
Change-Id: I9e7a3beb861faab1b6852aa5b57847c590986976
2024-05-08 14:41:10 +02:00
Oliver Smith
7dbd34a37e .deb/.rpm: various fixes related to non-root
* Explicitly chown /var/lib/osmocom to osmocom:osmocom, instead of
  relying on systemd to do it when the service starts up. This does not
  work with the systemd versions in debian 10 and almalinux 8.
* deb: Use "useradd" instead of the interactive "adduser" perl script
  from Debian. This makes it consistent with how we do it in rpm, and
  avoids the dependency on "adduser".
* deb: Consistently use tabs through the file, instead of mixing tabs
  and spaces.
* deb: Remove support for the "dpkg-statoverride --list" logic. This
  seems to be a rather obscure feature to override permissions for
  certain files or directories, for which it does not seem to be a good
  idea to make the postinst script less maintainable. Something similar
  can be achieved by using your own Osmocom config file in a different
  path with different permissions.

Related: OS#4107
Change-Id: Ib129217f6aff713d1d0e7aa831b4b54823e9bade
2024-04-26 15:08:47 +02:00
Max
961e96bfd9 .deb/.rpm: add osmocom user during package install
Create osmocom user & group during package installation.
Fix the configuration dir/files permission to match.

Related: OS#4107
Tweaked-By: Oliver Smith <osmith@sysmocom.de>
Change-Id: I459ac6b80526afa0f5d47a8b56f40d5f636dbe28
2024-04-24 16:16:33 +02:00
Vadim Yanitskiy
4b739ac260 build: include README.md into the release tarball
Change-Id: Icef2122de065683ee6a18f507c1834066c950349
2024-01-26 23:38:57 +07:00
Andreas Eversberg
f66763e891 Use uniform log format for default config files
Related: OS#6272
Change-Id: I24f454bd83f32504b9c135d1620b7d02167e8bc6
2023-12-01 12:53:08 +01:00
Pau Espin Pedrol
e7535a4a9b Bump version: 0.2.3.12-7385-dirty → 0.2.4
Change-Id: Ib73d7f15f55a52479a7728f86e96e93bba699ec5
2023-09-12 17:14:42 +02:00
Vadim Yanitskiy
7385427397 configure.ac: migrate from python2 to python3
Fortunatelly we don't have any python2 specific code, so just bump.

Change-Id: Iaab94a1e896b78dc8699256e326edc165b0ed922
Related: OS#5950
2023-07-15 00:47:40 +07:00
Pau Espin Pedrol
81e12318ae Write explicit role & sctp-role fields in ASP configurations
Change-Id: Idf7b2288e93edb408b644da759f844ac0ce1210b
2023-06-08 19:42:04 +02:00
Oliver Smith
85f1cca096 systemd: depend on networking-online.target
Related: SYS#6400
Change-Id: Idadcbbf55e976ae035cfac4b85ccd870e0f27b82
2023-05-26 14:10:49 +02:00
Vadim Yanitskiy
e8c4967639 copyright: fix typo: sysmocom s/s.m.f.c./s.f.m.c./ GmbH
Change-Id: Ib155c44fb318cab38227c196919fc6cbba86c4bb
2023-05-18 17:22:27 +07:00
Neels Janosch Hofmeyr
d09e87c645 ctrl-test: drop bogus 'rm -f $(CTRL_TEST_DB)'
That is a copy-paste artifact from osmo-hlr.git and looks pretty
dangerous when CTRL_TEST_DB is not defined.

Change-Id: Idcf9296a6e7e520c2f0b42f8aace01d616bcfc56
2023-05-05 02:14:01 +02:00
Oliver Smith
386d5acdbe debian: set compat level to 10
Related: OS#5958
Change-Id: Ib45ad7c44cdefa4c5acab2da09f24796253a133d
2023-04-25 16:48:33 +02:00
Vadim Yanitskiy
8c11b24ca0 tests: execute osmotest{vty,config}.py against osmo-smlc
Change-Id: I61d970563a1902cce704d5c1a6adea9d8be438e4
2023-03-30 02:40:18 +07:00
Vadim Yanitskiy
8bcac6f928 tests: $(BUILT_SOURCES) is not defined, depend on osmo-smlc
Change-Id: I75a038b2730c7e0d4637db6dfb780839a49abc2e
2023-03-30 02:19:12 +07:00
Vadim Yanitskiy
74b4e61f36 Makefile.am: remove unneeded AM_LDFLAGS with LIBS
Change-Id: Ic6886d2e47c053fe39647bc9ec3be704c935bee5
2023-03-09 18:10:18 +07:00
Vadim Yanitskiy
7118875839 Makefile.am: remove $(COVERAGE_LDFLAGS) from osmo_smlc_LDADD
Change-Id: Ia7073d2baf4c758ebff167b6cf1b3ba9c1552821
2023-03-09 18:09:44 +07:00
Vadim Yanitskiy
cf29f44722 configure.ac: set -std=gnu11
Avoid using different dialects by accident (and resulting compiler
errors if compiler assumes a different dialect), like in
I72310886bef4db635078b75715c9d98ee45391cc.

Related: https://lists.osmocom.org/pipermail/openbsc/2019-September/013030.html
Related: https://lists.osmocom.org/pipermail/openbsc/2021-January/013360.html
Related: osmo-pcu Ia57ba101627e3cc0babeca82631e207a3e2e0960
Change-Id: I76ed877d160f98e3627293b0539bec5fac1e8469
2023-03-09 15:39:18 +07:00
arehbein
0fda654d29 Transition to use of 'telnet_init_default'
Related: OS#5809
Change-Id: Icc57c68337d55c6594c1c36e9bf41624d11dab0a
2023-02-25 17:48:58 +01:00
Pau Espin Pedrol
848316e9d4 Bump version: 0.2.2.4-5ac8-dirty → 0.2.3
Change-Id: I84d05f283cfd28298f3a4ef6df1c49265638969b
2023-02-07 17:42:01 +01:00
Max
5ac8ab7cd9 ctrl: take both address and port from vty config
Change-Id: I5d73257c0233ce6772847809a6163b6ca4c88f83
2022-12-17 21:32:29 +03:00
Max
518550e404 Set working directory in systemd service file
By default systemd will execute service with root directory
(or home directory for user instance) which might result in
attempts to create files in unexpected place. Let's set it
to 'osmocom' subdir of state directory
(/var/lib for system instance) instead.

Related: OS#4821
Change-Id: Ie8b014e8eac23221a6a7087bb2b886014323680b
2022-09-12 07:12:35 +00:00
Max
f2a03654bb Add git-review config
Change-Id: Ia16bb7936e9382dcc51d9122bd7582d75eb7ae15
2022-09-09 22:40:27 +07:00
Vadim Yanitskiy
accb1d1b25 contrib/jenkins.sh: execute distcheck/maintainer-clean with $PARALLEL_MAKE
Change-Id: I14b0e0343dc70b72cc9e14641bccaa6da2059e46
2022-08-29 00:33:10 +07:00
Pau Espin Pedrol
f30a8a1133 Bump version: 0.2.1.5-cd82-dirty → 0.2.2
Change-Id: I17fe1460bb04da7d10ebaa1410cdb0dd670ece24
2022-06-29 12:21:07 +02:00
Harald Welte
cd82cb23be Fill README with content; convert to markdown
Change-Id: I54297aba4dbb4f521caaeb555de9e5404f9e6dcd
2022-06-18 14:01:07 +02:00
Harald Welte
bc54ff06f8 update git URLs (git -> https; gitea)
Change-Id: I8788fa6b0495b8ee72b1bb5485f6cd3a4835eb0b
2022-06-18 14:01:07 +02:00
Vadim Yanitskiy
b9b65d953f tests: use 'check_PROGRAMS' instead of 'noinst_PROGRAMS'
When using 'check_PROGRAMS', autoconf/automake generates smarter
Makefiles, so that the test programs are not being compiled during
the normal 'make all', but only during 'make check'.

Change-Id: I9b60429c8c3922dd97809c72ed7960ffdc059d8b
2022-04-14 02:18:50 +03:00
Pau Espin Pedrol
454047c586 deb/rpm packaging: Drop dependency on autoconf-archive
it is not needed since ec37263a37.

Change-Id: I729b7dc0f2971b959810a46baa8a344e8b71e4a4
2022-01-11 18:26:44 +01:00
Oliver Smith
5b7f1fd5c8 treewide: remove FSF address
Remove the paragraph about writing to the Free Software Foundation's
mailing address. The FSF has changed addresses in the past, and may do
so again. In 2021 this is not useful, let's rather have a bit less
boilerplate at the start of source files.

Change-Id: Ieb4f9b4ad5073c9b5996cb960b248c450fd5f2dd
2021-12-14 12:22:00 +01:00
Pau Espin Pedrol
8ec775714c Bump version: 0.2.0.2-ec37-dirty → 0.2.1
Change-Id: I4a2e2ff8e5f8d08fb4f8bb1f75e92ede9bb5521f
2021-11-16 18:14:21 +01:00
Oliver Smith
ec37263a37 configure: don't turn some warnings into errors
Do not turn some compiler warnings into errors by default. This part was
copied from openbsc.git 34f012 ("Turn some compiler warnings into
errors"), where it was added before --enable-werror was available.

We build with --enable-werror during development and in CI. If the code
is built with a different compiler that throws additional warnings, it
should not stop the build.

Related: OS#5289
Change-Id: I22f6f4d3d4b81d4791a72a7bce130035bef58c31
2021-11-04 11:12:30 +01:00
Pau Espin Pedrol
44a2a85202 Use new stat item/ctr getter APIs
Generated with spatch:
"""
@@
expression E1, E2;
@@
- &E2->ctr[E1]
+ rate_ctr_group_get_ctr(E2, E1)
"""

Change-Id: I594c08b8fe0ed54a31353d8c6c911cc7293ae7c0
2021-06-04 18:07:05 +02:00
Pau Espin Pedrol
ed87bd5c74 Bump version: 0.1.0.8-14c9-dirty → 0.2.0
Change-Id: I67c0bde168c91f3d38cb228b4318321a70b68c3e
2021-02-24 14:30:57 +01:00
Pau Espin Pedrol
14c9c7bcd7 smlc_subscr_test: Replace use of deprecated log_set_print_filename() API
hex_category is also set explicitly to keep same results (old API used
to set it internally).

Change-Id: I49365dfcd24bed55101917d2ea034c4327ab51d6
2021-02-24 14:28:37 +01:00
Pau Espin Pedrol
b36a18f139 main: Support setting cmdline --vty-ref-mode
Change-Id: Iadb004319514cb134b0863ea16b3289e6f1a097a
2021-02-24 14:26:30 +01:00
Pau Espin Pedrol
427fbbd541 gitignore: Ignore autofoo files *~
Change-Id: I97997a44e26e8fe9b98606e63aa6d5986d0d85f6
2021-02-24 14:15:48 +01:00
Neels Hofmeyr
5dadf0ae6e manual: describe TA-based positioning and cell locations
Change-Id: I3d8ae0f6fef0c60499a5e133d3dd0ebd54e8c321
2020-10-28 03:19:44 +01:00
Harald Welte
8b6341b02f fix osmo-smlc.service: drop unknown '-s' command line argument
Change-Id: I3804fea29e06280f12b62e8c27d2a0ba4aafa7a0
2020-10-22 16:02:26 +02:00
Harald Welte
dbf98d5433 osmo-smlc.spec.in: Add dependency to autoconf-archive
I don't really understand why our other spec files only contain
a dependency to autoconf and get away with that (while still using
autoconf-archive from configure.ac), but let's try this.

Change-Id: Ica5f58297722b650a3862326d31b8eb8947ee1b6
2020-10-22 08:05:51 +02:00
Harald Welte
63ec8a9c59 debian: the osmo-smlc example is not in the osmo-msc directory
Change-Id: Ie6e2c591fc37fed716f0d30df9096b535f06a118
2020-10-22 08:04:58 +02:00
Harald Welte
fb2abb8f8c debian/spec: Add build depedency to autoconf-archive
Change-Id: I56ff1c97ef7f11ac35eb78558cc7a0049f39cd56
2020-10-21 20:58:02 +02:00
Harald Welte
033b15679c update vty reference XML
Change-Id: Ifae832b399fb905892cab36f6d4fa7704a2541f0
2020-10-21 20:21:40 +02:00
36 changed files with 1287 additions and 208 deletions

1
.gitignore vendored
View File

@@ -34,6 +34,7 @@ stamp-h1
libtool
ltmain.sh
m4/*.m4
*~
# git-version-gen magic
.tarball-version

4
.gitreview Normal file
View File

@@ -0,0 +1,4 @@
[gerrit]
host=gerrit.osmocom.org
project=osmo-smlc

View File

@@ -19,7 +19,7 @@ SUBDIRS = \
BUILT_SOURCES = $(top_srcdir)/.version
EXTRA_DIST = \
.version \
contrib/osmo-smlc.spec.in \
README.md \
debian \
git-version-gen \
osmoappdesc.py \

4
README
View File

@@ -1,4 +0,0 @@
About OsmoSMLC
==============
FIXME

69
README.md Normal file
View File

@@ -0,0 +1,69 @@
osmo-smlc - Osmocom Serving Mobile Location Centre
==================================================
This repository contains a C-language implementation of a minimalistic
GSM Serving Mobile Location Centre (SMLC) for 2G (GSM). It is part of the
[Osmocom](https://osmocom.org/) Open Source Mobile Communications project.
OsmoSMLC exposes
* 3GPP Lb interface towards the BSC
* The Osmocom typical telnet VTY and CTRL interfaces.
* The Osmocom typical statsd exporter.
OsmoSMLC supports the following location methods:
* currently only the Timing Advance based method of determining a mobile station; operator must configure the
locations of the cells in the osmo-smlc configuration file
Homepage
--------
You can find the OsmoSMLC issue tracker and wiki online at
<https://osmocom.org/projects/osmo-smlc> and <https://osmocom.org/projects/osmo-smlc/wiki>
GIT Repository
--------------
You can clone from the official osmo-smlc.git repository using
git clone https://gitea.osmocom.org/cellular-infrastructure/osmo-smlc
There is a web interface at <https://gitea.osmocom.org/cellular-infrastructure/osmo-smlc>
Documentation
-------------
User Manuals and VTY reference manuals are [optionally] built in PDF form
as part of the build process.
Pre-rendered PDF version of the current "master" can be found at
[User Manual](https://ftp.osmocom.org/docs/latest/osmosmlc-usermanual.pdf)
as well as the [VTY Reference Manual](https://ftp.osmocom.org/docs/latest/osmosmlc-vty-reference.pdf)
Mailing List
------------
Discussions related to osmo-smlc are happening on the
openbsc@lists.osmocom.org mailing list, please see
<https://lists.osmocom.org/mailman/listinfo/openbsc> for subscription
options and the list archive.
Please observe the [Osmocom Mailing List
Rules](https://osmocom.org/projects/cellular-infrastructure/wiki/Mailing_List_Rules)
when posting.
Contributing
------------
Our coding standards are described at
<https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards>
We use a Gerrit based patch submission/review process for managing
contributions. Please see
<https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit> for
more details
The current patch queue for osmo-smlc can be seen at
<https://gerrit.osmocom.org/#/q/project:osmo-smlc+status:open>

View File

@@ -9,6 +9,8 @@ AC_CONFIG_AUX_DIR([.])
AM_INIT_AUTOMAKE([dist-bzip2])
AC_CONFIG_TESTDIR(tests)
CFLAGS="$CFLAGS -std=gnu11"
dnl kernel style compile messages
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
@@ -34,17 +36,12 @@ if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
fi
PKG_PROG_PKG_CONFIG([0.20])
dnl check for AX_CHECK_COMPILE_FLAG
m4_ifdef([AX_CHECK_COMPILE_FLAG], [], [
AC_MSG_ERROR([Please install autoconf-archive; re-run 'autoreconf -fi' for it to take effect.])
])
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.3.0)
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.3.0)
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.3.0)
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.3.0)
PKG_CHECK_MODULES(LIBOSMOSIGTRAN, libosmo-sigtran >= 0.10.0)
PKG_CHECK_MODULES(LIBOSMOSCCP, libosmo-sccp >= 0.10.0)
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.10.0)
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.10.0)
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.10.0)
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.10.0)
PKG_CHECK_MODULES(LIBOSMOSIGTRAN, libosmo-sigtran >= 1.9.0)
PKG_CHECK_MODULES(LIBOSMOSCCP, libosmo-sccp >= 1.9.0)
dnl checks for header files
AC_HEADER_STDC
@@ -92,13 +89,6 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])],
CFLAGS="$saved_CFLAGS"
AC_SUBST(SYMBOL_VISIBILITY)
AX_CHECK_COMPILE_FLAG([-Werror=implicit], [CFLAGS="$CFLAGS -Werror=implicit"])
AX_CHECK_COMPILE_FLAG([-Werror=maybe-uninitialized], [CFLAGS="$CFLAGS -Werror=maybe-uninitialized"])
AX_CHECK_COMPILE_FLAG([-Werror=memset-transposed-args], [CFLAGS="$CFLAGS -Werror=memset-transposed-args"])
AX_CHECK_COMPILE_FLAG([-Wnull-dereference], [CFLAGS="$CFLAGS -Wnull-dereference"])
AX_CHECK_COMPILE_FLAG([-Werror=sizeof-array-argument], [CFLAGS="$CFLAGS -Werror=sizeof-array-argument"])
AX_CHECK_COMPILE_FLAG([-Werror=sizeof-pointer-memaccess], [CFLAGS="$CFLAGS -Werror=sizeof-pointer-memaccess"])
# Coverage build taken from WebKit's configure.in
AC_MSG_CHECKING([whether to enable code coverage support])
AC_ARG_ENABLE(coverage,
@@ -127,13 +117,13 @@ AC_ARG_ENABLE([external_tests],
[Include the VTY/CTRL tests in make check [default=no]]),
[enable_ext_tests="$enableval"],[enable_ext_tests="no"])
if test "x$enable_ext_tests" = "xyes" ; then
AC_CHECK_PROG(PYTHON2_AVAIL,python2,yes)
if test "x$PYTHON2_AVAIL" != "xyes" ; then
AC_MSG_ERROR([Please install python2 to run the VTY/CTRL tests.])
AC_CHECK_PROG(PYTHON3_AVAIL,python3,yes)
if test "x$PYTHON3_AVAIL" != "xyes" ; then
AC_MSG_ERROR([Please install python3 to run the VTY/CTRL tests.])
fi
AC_CHECK_PROG(OSMOTESTEXT_CHECK,osmotestvty.py,yes)
if test "x$OSMOTESTEXT_CHECK" != "xyes" ; then
AC_MSG_ERROR([Please install git://osmocom.org/python/osmo-python-tests to run the VTY/CTRL tests.])
AC_MSG_ERROR([Please install https://gitea.osmocom.org/cellular-infrastructure/osmo-python-tests to run the VTY/CTRL tests.])
fi
fi
AC_MSG_CHECKING([whether to enable VTY/CTRL tests])
@@ -218,5 +208,4 @@ AC_OUTPUT(
doc/manuals/Makefile
contrib/Makefile
contrib/systemd/Makefile
contrib/osmo-smlc.spec
Makefile)

View File

@@ -58,12 +58,12 @@ LD_LIBRARY_PATH="$inst/lib" $MAKE check \
|| cat-testlogs.sh
LD_LIBRARY_PATH="$inst/lib" \
DISTCHECK_CONFIGURE_FLAGS="--enable-vty-tests --enable-external-tests --enable-werror $CONFIG" \
$MAKE distcheck \
$MAKE $PARALLEL_MAKE distcheck \
|| cat-testlogs.sh
if [ "$WITH_MANUALS" = "1" ] && [ "$PUBLISH" = "1" ]; then
make -C "$base/doc/manuals" publish
fi
$MAKE maintainer-clean
$MAKE $PARALLEL_MAKE maintainer-clean
osmo-clean-workspace.sh

View File

@@ -1,88 +0,0 @@
#
# spec file for package osmo-smlc
#
# Copyright (c) 2017, Martin Hauke <mardnh@gmx.de>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
## Disable LTO for now since it breaks compilation of the tests
## https://osmocom.org/issues/4113
%define _lto_cflags %{nil}
Name: osmo-smlc
Version: @VERSION@
Release: 0
Summary: OsmoSMLC: Osmocom's Location Service Center
License: AGPL-3.0-or-later
Group: Hardware/Mobile
URL: https://osmocom.org/projects/osmo-smlc
Source: %{name}-%{version}.tar.xz
BuildRequires: automake >= 1.9
BuildRequires: libtool >= 2
BuildRequires: pkgconfig >= 0.20
%if 0%{?suse_version}
BuildRequires: systemd-rpm-macros
%endif
BuildRequires: pkgconfig(libosmo-netif) >= 0.6.0
BuildRequires: pkgconfig(libosmo-sccp) >= 0.10.0
BuildRequires: pkgconfig(libosmo-sigtran) >= 0.10.0
BuildRequires: pkgconfig(libosmocore) >= 1.2.0
BuildRequires: pkgconfig(libosmoctrl) >= 1.2.0
BuildRequires: pkgconfig(libosmogsm) >= 1.2.0
BuildRequires: pkgconfig(libosmovty) >= 1.2.0
BuildRequires: pkgconfig(talloc)
%{?systemd_requires}
%description
OsmoBSC: Osmocom's Base Station Controller for 2G circuit-switched mobile networks.
%prep
%setup -q
%build
echo "%{version}" >.tarball-version
autoreconf -fi
%configure \
--docdir=%{_docdir}/%{name} \
--with-systemdsystemunitdir=%{_unitdir}
make %{?_smp_mflags}
%install
%make_install
%if 0%{?suse_version}
%preun
%service_del_preun %{name}.service
%postun
%service_del_postun %{name}.service
%pre
%service_add_pre %{name}.service
%post
%service_add_post %{name}.service
%endif
%check
make %{?_smp_mflags} check || (find . -name testsuite.log -exec cat {} +)
%files
%license COPYING
%doc AUTHORS README
%{_bindir}/osmo-smlc
%dir %{_docdir}/%{name}/examples
%dir %{_docdir}/%{name}/examples/osmo-smlc
%{_docdir}/%{name}/examples/osmo-smlc/osmo-smlc.cfg
%dir %{_sysconfdir}/osmocom
%config(noreplace) %{_sysconfdir}/osmocom/osmo-smlc.cfg
%{_unitdir}/%{name}.service
%changelog

View File

@@ -1,10 +1,16 @@
[Unit]
Description=Osmocom Serving Mobile Location Center (SMLC)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/osmo-smlc -c /etc/osmocom/osmo-smlc.cfg -s
StateDirectory=osmocom
WorkingDirectory=%S/osmocom
User=osmocom
Group=osmocom
ExecStart=/usr/bin/osmo-smlc -c /etc/osmocom/osmo-smlc.cfg
RestartSec=2
[Install]

106
debian/changelog vendored
View File

@@ -1,3 +1,109 @@
osmo-smlc (0.3.0) unstable; urgency=medium
[ Andreas Eversberg ]
* Use uniform log format for default config files
[ Vadim Yanitskiy ]
* build: include README.md into the release tarball
* README.md: cosmetic: fix a typo
[ Max ]
* .deb/.rpm: add osmocom user during package install
[ Oliver Smith ]
* .deb/.rpm: various fixes related to non-root
* contrib: remove rpm spec file
* debian/postinst: add checks, be verbose
-- Oliver Smith <osmith@sysmocom.de> Thu, 25 Jul 2024 09:49:50 +0200
osmo-smlc (0.2.4) unstable; urgency=medium
[ arehbein ]
* Transition to use of 'telnet_init_default'
[ Vadim Yanitskiy ]
* configure.ac: set -std=gnu11
* Makefile.am: remove $(COVERAGE_LDFLAGS) from osmo_smlc_LDADD
* Makefile.am: remove unneeded AM_LDFLAGS with LIBS
* tests: $(BUILT_SOURCES) is not defined, depend on osmo-smlc
* tests: execute osmotest{vty,config}.py against osmo-smlc
* copyright: fix typo: sysmocom s/s.m.f.c./s.f.m.c./ GmbH
* configure.ac: migrate from python2 to python3
[ Oliver Smith ]
* debian: set compat level to 10
* systemd: depend on networking-online.target
[ Neels Janosch Hofmeyr ]
* ctrl-test: drop bogus 'rm -f $(CTRL_TEST_DB)'
[ Pau Espin Pedrol ]
* Write explicit role & sctp-role fields in ASP configurations
-- Pau Espin Pedrol <pespin@sysmocom.de> Tue, 12 Sep 2023 17:14:41 +0200
osmo-smlc (0.2.3) unstable; urgency=medium
[ Vadim Yanitskiy ]
* contrib/jenkins.sh: execute distcheck/maintainer-clean with $PARALLEL_MAKE
[ Max ]
* Add git-review config
* Set working directory in systemd service file
* ctrl: take both address and port from vty config
-- Pau Espin Pedrol <pespin@sysmocom.de> Tue, 07 Feb 2023 17:42:00 +0100
osmo-smlc (0.2.2) unstable; urgency=medium
[ Oliver Smith ]
* treewide: remove FSF address
[ Pau Espin Pedrol ]
* deb/rpm packaging: Drop dependency on autoconf-archive
[ Vadim Yanitskiy ]
* tests: use 'check_PROGRAMS' instead of 'noinst_PROGRAMS'
[ Harald Welte ]
* update git URLs (git -> https; gitea)
* Fill README with content; convert to markdown
-- Pau Espin Pedrol <pespin@sysmocom.de> Wed, 29 Jun 2022 12:21:06 +0200
osmo-smlc (0.2.1) unstable; urgency=medium
[ Pau Espin Pedrol ]
* Use new stat item/ctr getter APIs
[ Oliver Smith ]
* configure: don't turn some warnings into errors
-- Pau Espin Pedrol <pespin@sysmocom.de> Tue, 16 Nov 2021 18:14:21 +0100
osmo-smlc (0.2.0) unstable; urgency=medium
[ Harald Welte ]
* contrib/jenkins.sh: Build libosmo-abis, a dependency of libosmo-netif
* fix build of usermanual
* update vty reference XML
* debian/spec: Add build depedency to autoconf-archive
* debian: the osmo-smlc example is not in the osmo-msc directory
* osmo-smlc.spec.in: Add dependency to autoconf-archive
* fix osmo-smlc.service: drop unknown '-s' command line argument
[ Neels Hofmeyr ]
* initial working osmo-smlc implementation
* manual: describe TA-based positioning and cell locations
[ Pau Espin Pedrol ]
* gitignore: Ignore autofoo files *~
* main: Support setting cmdline --vty-ref-mode
* smlc_subscr_test: Replace use of deprecated log_set_print_filename() API
-- Pau Espin Pedrol <pespin@sysmocom.de> Wed, 24 Feb 2021 14:30:56 +0100
osmo-smlc (0.0.1) unstable; urgency=medium
[ Harald Welte ]

2
debian/compat vendored
View File

@@ -1 +1 @@
9
10

14
debian/control vendored
View File

@@ -2,7 +2,7 @@ Source: osmo-smlc
Section: net
Priority: extra
Maintainer: Osmocom team <openbsc@lists.osmocom.org>
Build-Depends: debhelper (>=9),
Build-Depends: debhelper (>= 10),
dh-autoreconf,
autotools-dev,
autoconf,
@@ -11,13 +11,13 @@ Build-Depends: debhelper (>=9),
pkg-config,
libsctp-dev,
libtalloc-dev,
libosmocore-dev (>= 1.3.0),
libosmo-sccp-dev (>= 1.1.0),
libosmo-sigtran-dev (>= 1.1.0),
osmo-gsm-manuals-dev (>= 0.2.0)
libosmocore-dev (>= 1.10.0),
libosmo-sccp-dev (>= 1.9.0),
libosmo-sigtran-dev (>= 1.9.0),
osmo-gsm-manuals-dev (>= 1.6.0)
Standards-Version: 3.9.8
Vcs-Git: git://git.osmocom.org/osmo-smlc.git
Vcs-Browser: https://git.osmocom.org/osmo-smlc/
Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-smlc
Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-smlc
Homepage: https://osmocom.org/projects/osmo-smlc
Package: osmo-smlc

2
debian/copyright vendored
View File

@@ -1,6 +1,6 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: osmo-smlc
Source: git://git.osmocom.org/osmo-smlc
Source: https://gitea.osmocom.org/cellular-infrastructure/osmo-smlc
Files: *
Copyright: 2020 Harald Welte <laforge@osmocom.org>

View File

@@ -1,4 +1,4 @@
etc/osmocom/osmo-smlc.cfg
lib/systemd/system/osmo-smlc.service
usr/bin/osmo-smlc
usr/share/doc/osmo-msc/examples/osmo-smlc/osmo-smlc.cfg usr/share/doc/osmo-smlc/examples
usr/share/doc/osmo-smlc/examples/osmo-smlc/osmo-smlc.cfg usr/share/doc/osmo-smlc/examples

38
debian/postinst vendored Executable file
View File

@@ -0,0 +1,38 @@
#!/bin/sh -e
case "$1" in
configure)
# Create the osmocom group and user (if it doesn't exist yet)
if ! getent group osmocom >/dev/null; then
groupadd --system osmocom
fi
if ! getent passwd osmocom >/dev/null; then
useradd \
--system \
--gid osmocom \
--home-dir /var/lib/osmocom \
--shell /sbin/nologin \
--comment "Open Source Mobile Communications" \
osmocom
fi
# Fix permissions of previous (root-owned) install (OS#4107)
if dpkg --compare-versions "$2" le "0.3.0"; then
if [ -e /etc/osmocom/osmo-smlc.cfg ]; then
chown -v osmocom:osmocom /etc/osmocom/osmo-smlc.cfg
chmod -v 0660 /etc/osmocom/osmo-smlc.cfg
fi
if [ -d /etc/osmocom ]; then
chown -v root:osmocom /etc/osmocom
chmod -v 2775 /etc/osmocom
fi
mkdir -p /var/lib/osmocom
chown -R -v osmocom:osmocom /var/lib/osmocom
fi
;;
esac
# dh_installdeb(1) will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#

View File

@@ -4,7 +4,6 @@ SUBDIRS = \
$(NULL)
msc: \
$(builddir)/location_request_fsm.png \
$(NULL)
dot: \

View File

@@ -1,3 +1,11 @@
log stderr
logging color 1
logging print category-hex 0
logging print category 1
logging timestamp 0
logging print file basename last
logging print level 1
cells
lac-ci 23 42 lat 12.34567 lon 34.56789
cgi 262 42 17 5 lat 12.34765 lon 34.56987

View File

@@ -1,19 +0,0 @@
digraph G {
rankdir=TB
labelloc=t; label="Location Request FSM in OsmoSMLC"
BSC [label="BSC\nvia\nLb interface",shape=box3d]
subgraph cluster_LOC_REQ_FSM {
label="loc_req_fsm"
INIT -> WAIT_TA_RESPONSE
WAIT_TA_RESPONSE -> GOT_TA_RESPONSE
GOT_TA_RESPONSE -> terminate
terminate [shape=octagon]
}
BSC -> INIT [label="BSSMAP-LE Perform\nLocation Req",style=dashed]
WAIT_TA_RESPONSE -> BSC [label="TA Request",style=dashed]
BSC -> WAIT_TA_RESPONSE [label="TA Response",style=dashed]
GOT_TA_RESPONSE -> BSC [label="BSSMAP-LE Perform\nLocation Resp",style=dashed]
}

View File

@@ -0,0 +1,26 @@
== Configure Cell Locations
To determine geographic location estimates based on the serving cell, OsmoSMLC
needs preconfigured global positions by latitude and longitude, for each cell of
each BSC.
On the `cells` configuration node, cell locations can be indicated by LAC and
CI, or by Cell Global Identity. The following example configures the position
for a cell by LAC 23 and CI 42:
----
cells
lac-ci 23 42 lat 12.3456 lon 23.4567
----
The following example configures the position by a Cell Global Identity with
PLMN 001-01, LAC 2 and CI 3:
----
cells
cgi 001 01 2 3 lat 34.5678 lon 45.6789
----
If a cell's latitude and longitude is not configured, all location requests for
subscribers served by that cell are answered by a BSSMAP-LE Perform Location
Response without a Location Estimate and LCS Cause "Facility not supported".

View File

@@ -0,0 +1,11 @@
== Positioning Methods
So far, OsmoSMLC provides only TA-based positioning.
=== TA-Based Positioning
In TA-based positioning, the serving Cell Id and the Timing Advance (a.k.a.
Access Delay) are provided by the BSC. OsmoSMLC returns a GAD "ellipsoid point
with uncertainty circle" as location estimate. The ellipsoid point is the
latitude and longitude of the serving cell, and the uncertainty circle is the
maximum distance from that cell based on the Timing Advance information.

View File

@@ -63,16 +63,18 @@ has to configure a distinct point-code. See <<cs7_config>>.
===== Configure SCCP/M3UA (AoIP)
OsmoSMLC acts as client to contact an STP instance and establish an SCCP/M3UA
link.
link. OsmoSMLC always uses the SSN "SMLC (BSSMAP-LE)" (SSN code 252). The
configurable point-code defaults to 0.23.6 (190).
An example configuration of OsmoSMLC's Lb SCCP link, assuming the SMLC at
point-code 1.23.6 via an SG listening for M3UA at 127.0.0.1:2905:
point-code 1.23.6, listening for M3UA at 127.0.0.1:2905:
----
cs7 instance 0
point-code 1.23.6
asp asp-clnt-msc-0 2905 0 m3ua
remote-ip 127.0.0.1
role asp
sctp-role client
----

View File

@@ -18,6 +18,10 @@ include::./common/chapters/logging.adoc[]
include::./common/chapters/cs7-config.adoc[]
include::{srcdir}/chapters/positioning.adoc[]
include::{srcdir}/chapters/cells.adoc[]
include::./common/chapters/counters-overview.adoc[]
// include::{srcdir}/chapters/counters.adoc[]

File diff suppressed because it is too large Load Diff

View File

@@ -17,10 +17,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#pragma once

View File

@@ -17,10 +17,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#pragma once

View File

@@ -14,12 +14,6 @@ AM_CFLAGS = \
$(COVERAGE_CFLAGS) \
$(NULL)
AM_LDFLAGS = \
$(LIBOSMOCORE_LIBS) \
$(LIBOSMOGSM_LIBS) \
$(COVERAGE_LDFLAGS) \
$(NULL)
SUBDIRS = \
osmo-smlc \
$(NULL)

View File

@@ -39,6 +39,5 @@ osmo_smlc_LDADD = \
$(LIBOSMOGSM_LIBS) \
$(LIBOSMOVTY_LIBS) \
$(LIBOSMOCTRL_LIBS) \
$(COVERAGE_LDFLAGS) \
$(LIBOSMOSIGTRAN_LIBS) \
$(NULL)

View File

@@ -17,10 +17,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#include <limits.h>

View File

@@ -1,7 +1,7 @@
/* SMLC Lb connection implementation */
/*
* (C) 2020 by sysmocom s.m.f.c. <info@sysmocom.de>
* (C) 2020 by sysmocom s.f.m.c. <info@sysmocom.de>
* All Rights Reserved
*
* Author: Neels Hofmeyr

View File

@@ -1,5 +1,5 @@
/*
* (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
* (C) 2019 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
* All Rights Reserved
*
* SPDX-License-Identifier: AGPL-3.0+

View File

@@ -1,5 +1,5 @@
/*
* (C) 2020 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
* (C) 2020 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
* All Rights Reserved
*
* SPDX-License-Identifier: AGPL-3.0+
@@ -186,14 +186,14 @@ static int sccp_lb_sap_down(struct sccp_lb_inst *sli, struct osmo_prim_hdr *oph)
{
int rc;
if (!sli->scu) {
rate_ctr_inc(&g_smlc->ctrs->ctr[SMLC_CTR_BSSMAP_LE_TX_ERR_CONN_NOT_READY]);
rate_ctr_inc(rate_ctr_group_get_ctr(g_smlc->ctrs, SMLC_CTR_BSSMAP_LE_TX_ERR_CONN_NOT_READY));
return -EIO;
}
rc = osmo_sccp_user_sap_down_nofree(sli->scu, oph);
if (rc >= 0)
rate_ctr_inc(&g_smlc->ctrs->ctr[SMLC_CTR_BSSMAP_LE_TX_SUCCESS]);
rate_ctr_inc(rate_ctr_group_get_ctr(g_smlc->ctrs, SMLC_CTR_BSSMAP_LE_TX_SUCCESS));
else
rate_ctr_inc(&g_smlc->ctrs->ctr[SMLC_CTR_BSSMAP_LE_TX_ERR_SEND]);
rate_ctr_inc(rate_ctr_group_get_ctr(g_smlc->ctrs, SMLC_CTR_BSSMAP_LE_TX_ERR_SEND));
return rc;
}

View File

@@ -17,10 +17,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#include <osmocom/smlc/smlc_data.h>
@@ -96,7 +92,7 @@ static int smlc_loc_req_start(struct lb_conn *lb_conn, const struct bssmap_le_pe
{
struct smlc_loc_req *smlc_loc_req;
rate_ctr_inc(&g_smlc->ctrs->ctr[SMLC_CTR_BSSMAP_LE_RX_DT1_PERFORM_LOCATION_REQUEST]);
rate_ctr_inc(rate_ctr_group_get_ctr(g_smlc->ctrs, SMLC_CTR_BSSMAP_LE_RX_DT1_PERFORM_LOCATION_REQUEST));
if (lb_conn->smlc_loc_req) {
/* Another request is already pending. If we send Perform Location Abort, the peer doesn't know which

View File

@@ -78,6 +78,31 @@ static void print_help()
printf(" --vty-ref-xml Generate the VTY reference XML output and exit.\n");
}
static void handle_long_options(const char *prog_name, const int long_option)
{
static int vty_ref_mode = VTY_REF_GEN_MODE_DEFAULT;
switch (long_option) {
case 1:
vty_ref_mode = get_string_value(vty_ref_gen_mode_names, optarg);
if (vty_ref_mode < 0) {
fprintf(stderr, "%s: Unknown VTY reference generation "
"mode '%s'\n", prog_name, optarg);
exit(2);
}
break;
case 2:
fprintf(stderr, "Generating the VTY reference in mode '%s' (%s)\n",
get_value_string(vty_ref_gen_mode_names, vty_ref_mode),
get_value_string(vty_ref_gen_mode_desc, vty_ref_mode));
vty_dump_xml_ref_mode(stdout, (enum vty_ref_gen_mode) vty_ref_mode);
exit(0);
default:
fprintf(stderr, "%s: error parsing cmdline options\n", prog_name);
exit(2);
}
}
static void handle_options(int argc, char **argv)
{
while (1) {
@@ -90,7 +115,8 @@ static void handle_options(int argc, char **argv)
{"config-file", 1, 0, 'c'},
{"version", 0, 0, 'V' },
{"log-level", 1, 0, 'e'},
{"vty-ref-xml", 0, &long_option, 1},
{"vty-ref-mode", 1, &long_option, 1},
{"vty-ref-xml", 0, &long_option, 2},
{0, 0, 0, 0}
};
@@ -105,14 +131,8 @@ static void handle_options(int argc, char **argv)
print_help();
exit(0);
case 0:
switch (long_option) {
case 1:
vty_dump_xml_ref(stdout);
exit(0);
default:
fprintf(stderr, "error parsing cmdline options\n");
exit(2);
}
handle_long_options(argv[0], long_option);
break;
case 'd':
log_parse_category_mask(osmo_stderr_target, optarg);
break;
@@ -242,14 +262,13 @@ int main(int argc, char **argv)
}
/* Start telnet interface after reading config for vty_get_bind_addr() */
rc = telnet_init_dynif(tall_smlc_ctx, g_smlc, vty_get_bind_addr(), OSMO_VTY_PORT_SMLC);
rc = telnet_init_default(tall_smlc_ctx, g_smlc, OSMO_VTY_PORT_SMLC);
if (rc < 0)
exit(1);
/* start control interface after reading config for
* ctrl_vty_get_bind_addr() */
g_smlc->ctrl = ctrl_interface_setup_dynip2(g_smlc, ctrl_vty_get_bind_addr(), OSMO_CTRL_PORT_SMLC,
smlc_ctrl_node_lookup, _LAST_CTRL_NODE_SMLC);
g_smlc->ctrl = ctrl_interface_setup2(g_smlc, OSMO_CTRL_PORT_SMLC, smlc_ctrl_node_lookup, _LAST_CTRL_NODE_SMLC);
if (!g_smlc->ctrl) {
fprintf(stderr, "Failed to init the control interface. Exiting.\n");
exit(1);

View File

@@ -37,11 +37,13 @@ DISTCLEANFILES = \
$(NULL)
if ENABLE_EXT_TESTS
python-tests: $(BUILT_SOURCES)
python-tests: $(top_builddir)/src/osmo-smlc/osmo-smlc
$(MAKE) vty-test
$(MAKE) ctrl-test
osmotestvty.py -p $(abs_top_srcdir) -w $(abs_top_builddir) -v
osmotestconfig.py -p $(abs_top_srcdir) -w $(abs_top_builddir) -v
else
python-tests: $(BUILT_SOURCES)
python-tests:
echo "Not running python-based tests (determined at configure-time)"
endif
@@ -51,7 +53,7 @@ VTY_TEST ?= *.vty
# To update the VTY script from current application behavior,
# pass -u to vty_script_runner.py by doing:
# make vty-test U=-u
vty-test:
vty-test: $(top_builddir)/src/osmo-smlc/osmo-smlc
osmo_verify_transcript_vty.py -v \
-n OsmoSMLC -p 4271 \
-r "$(top_builddir)/src/osmo-smlc/osmo-smlc -c $(top_srcdir)/tests/osmo-smlc.cfg" \
@@ -60,14 +62,11 @@ vty-test:
# To update the CTRL script from current application behavior,
# pass -u to ctrl_script_runner.py by doing:
# make ctrl-test U=-u
ctrl-test:
-rm -f $(CTRL_TEST_DB)
ctrl-test: $(top_builddir)/src/osmo-smlc/osmo-smlc
osmo_verify_transcript_ctrl.py -v \
-p 4272 \
-r "$(top_builddir)/src/osmo-smlc/osmo-smlc -c $(top_srcdir)/tests/osmo-smlc.cfg" \
$(U) $(srcdir)/*.ctrl
-rm -f $(CTRL_TEST_DB)
-rm $(CTRL_TEST_DB)-*
check-local: atconfig $(TESTSUITE)
$(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)

View File

@@ -20,7 +20,7 @@ EXTRA_DIST = \
smlc_subscr_test.err \
$(NULL)
noinst_PROGRAMS = \
check_PROGRAMS = \
smlc_subscr_test \
$(NULL)

View File

@@ -140,10 +140,11 @@ int main()
void *ctx = talloc_named_const(NULL, 0, "smlc_subscr_test");
osmo_init_logging2(ctx, &log_info);
log_set_print_filename(osmo_stderr_target, 0);
log_set_print_filename2(osmo_stderr_target, LOG_FILENAME_NONE);
log_set_print_timestamp(osmo_stderr_target, 0);
log_set_use_color(osmo_stderr_target, 0);
log_set_print_category(osmo_stderr_target, 1);
log_set_print_category_hex(osmo_stderr_target, 0);
g_smlc = smlc_state_alloc(ctx);
@@ -154,4 +155,3 @@ int main()
printf("Done\n");
return 0;
}