mirror of
				https://gitea.osmocom.org/cellular-infrastructure/osmo-smlc.git
				synced 2025-11-04 06:03:33 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			0.2.3
			...
			neels/manu
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					eec6a6d9da | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -34,7 +34,6 @@ stamp-h1
 | 
			
		||||
libtool
 | 
			
		||||
ltmain.sh
 | 
			
		||||
m4/*.m4
 | 
			
		||||
*~
 | 
			
		||||
 | 
			
		||||
# git-version-gen magic
 | 
			
		||||
.tarball-version
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
[gerrit]
 | 
			
		||||
host=gerrit.osmocom.org
 | 
			
		||||
project=osmo-smlc
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										69
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										69
									
								
								README.md
									
									
									
									
									
								
							@@ -1,69 +0,0 @@
 | 
			
		||||
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 us 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>
 | 
			
		||||
							
								
								
									
										26
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								configure.ac
									
									
									
									
									
								
							@@ -34,12 +34,17 @@ if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
 | 
			
		||||
fi
 | 
			
		||||
PKG_PROG_PKG_CONFIG([0.20])
 | 
			
		||||
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.8.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.8.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.8.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.8.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOSIGTRAN, libosmo-sigtran >= 1.7.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOSCCP, libosmo-sccp >= 1.7.0)
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
dnl checks for header files
 | 
			
		||||
AC_HEADER_STDC
 | 
			
		||||
@@ -87,6 +92,13 @@ 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,
 | 
			
		||||
@@ -121,7 +133,7 @@ if test "x$enable_ext_tests" = "xyes" ; then
 | 
			
		||||
	fi
 | 
			
		||||
	AC_CHECK_PROG(OSMOTESTEXT_CHECK,osmotestvty.py,yes)
 | 
			
		||||
	 if test "x$OSMOTESTEXT_CHECK" != "xyes" ; then
 | 
			
		||||
		AC_MSG_ERROR([Please install https://gitea.osmocom.org/cellular-infrastructure/osmo-python-tests to run the VTY/CTRL tests.])
 | 
			
		||||
		AC_MSG_ERROR([Please install git://osmocom.org/python/osmo-python-tests to run the VTY/CTRL tests.])
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
AC_MSG_CHECKING([whether to enable VTY/CTRL tests])
 | 
			
		||||
 
 | 
			
		||||
@@ -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 $PARALLEL_MAKE distcheck \
 | 
			
		||||
  $MAKE distcheck \
 | 
			
		||||
  || cat-testlogs.sh
 | 
			
		||||
 | 
			
		||||
if [ "$WITH_MANUALS" = "1" ] && [ "$PUBLISH" = "1" ]; then
 | 
			
		||||
	make -C "$base/doc/manuals" publish
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
$MAKE $PARALLEL_MAKE maintainer-clean
 | 
			
		||||
$MAKE maintainer-clean
 | 
			
		||||
osmo-clean-workspace.sh
 | 
			
		||||
 
 | 
			
		||||
@@ -25,19 +25,20 @@ Group:          Hardware/Mobile
 | 
			
		||||
URL:            https://osmocom.org/projects/osmo-smlc
 | 
			
		||||
Source:         %{name}-%{version}.tar.xz
 | 
			
		||||
BuildRequires:  autoconf
 | 
			
		||||
BuildRequires:  autoconf-archive
 | 
			
		||||
BuildRequires:  automake >= 1.9
 | 
			
		||||
BuildRequires:  libtool >= 2
 | 
			
		||||
BuildRequires:  pkgconfig >= 0.20
 | 
			
		||||
%if 0%{?suse_version}
 | 
			
		||||
BuildRequires:  systemd-rpm-macros
 | 
			
		||||
%endif
 | 
			
		||||
BuildRequires:  pkgconfig(libosmo-netif) >= 1.3.0
 | 
			
		||||
BuildRequires:  pkgconfig(libosmo-sccp) >= 1.7.0
 | 
			
		||||
BuildRequires:  pkgconfig(libosmo-sigtran) >= 1.7.0
 | 
			
		||||
BuildRequires:  pkgconfig(libosmocore) >= 1.8.0
 | 
			
		||||
BuildRequires:  pkgconfig(libosmoctrl) >= 1.8.0
 | 
			
		||||
BuildRequires:  pkgconfig(libosmogsm) >= 1.8.0
 | 
			
		||||
BuildRequires:  pkgconfig(libosmovty) >= 1.8.0
 | 
			
		||||
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}
 | 
			
		||||
 | 
			
		||||
@@ -77,7 +78,7 @@ make %{?_smp_mflags} check || (find . -name testsuite.log -exec cat {} +)
 | 
			
		||||
 | 
			
		||||
%files
 | 
			
		||||
%license COPYING
 | 
			
		||||
%doc AUTHORS README.md
 | 
			
		||||
%doc AUTHORS README
 | 
			
		||||
%{_bindir}/osmo-smlc
 | 
			
		||||
%dir %{_docdir}/%{name}/examples
 | 
			
		||||
%dir %{_docdir}/%{name}/examples/osmo-smlc
 | 
			
		||||
 
 | 
			
		||||
@@ -4,8 +4,6 @@ Description=Osmocom Serving Mobile Location Center (SMLC)
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
Restart=always
 | 
			
		||||
StateDirectory=osmocom
 | 
			
		||||
WorkingDirectory=%S/osmocom
 | 
			
		||||
ExecStart=/usr/bin/osmo-smlc -c /etc/osmocom/osmo-smlc.cfg
 | 
			
		||||
RestartSec=2
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										61
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							@@ -1,64 +1,3 @@
 | 
			
		||||
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 ]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							@@ -6,18 +6,19 @@ Build-Depends: debhelper (>=9),
 | 
			
		||||
               dh-autoreconf,
 | 
			
		||||
               autotools-dev,
 | 
			
		||||
               autoconf,
 | 
			
		||||
               autoconf-archive,
 | 
			
		||||
               automake,
 | 
			
		||||
               libtool,
 | 
			
		||||
               pkg-config,
 | 
			
		||||
               libsctp-dev,
 | 
			
		||||
               libtalloc-dev,
 | 
			
		||||
               libosmocore-dev (>= 1.8.0),
 | 
			
		||||
               libosmo-sccp-dev (>= 1.7.0),
 | 
			
		||||
               libosmo-sigtran-dev (>= 1.7.0),
 | 
			
		||||
               osmo-gsm-manuals-dev (>= 1.4.0)
 | 
			
		||||
               libosmocore-dev (>= 1.3.0),
 | 
			
		||||
               libosmo-sccp-dev (>= 1.1.0),
 | 
			
		||||
               libosmo-sigtran-dev (>= 1.1.0),
 | 
			
		||||
               osmo-gsm-manuals-dev (>= 0.2.0)
 | 
			
		||||
Standards-Version: 3.9.8
 | 
			
		||||
Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-smlc
 | 
			
		||||
Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-smlc
 | 
			
		||||
Vcs-Git: git://git.osmocom.org/osmo-smlc.git
 | 
			
		||||
Vcs-Browser: https://git.osmocom.org/osmo-smlc/
 | 
			
		||||
Homepage: https://osmocom.org/projects/osmo-smlc
 | 
			
		||||
 | 
			
		||||
Package: osmo-smlc
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								debian/copyright
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/copyright
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 | 
			
		||||
Upstream-Name: osmo-smlc
 | 
			
		||||
Source: https://gitea.osmocom.org/cellular-infrastructure/osmo-smlc
 | 
			
		||||
Source: git://git.osmocom.org/osmo-smlc
 | 
			
		||||
 | 
			
		||||
Files:     *
 | 
			
		||||
Copyright: 2020 Harald Welte <laforge@osmocom.org>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
[[cell-locations]]
 | 
			
		||||
== Configure Cell Locations
 | 
			
		||||
 | 
			
		||||
To determine geographic location estimates based on the serving cell, OsmoSMLC
 | 
			
		||||
 
 | 
			
		||||
@@ -8,3 +8,47 @@ aspects of configuring and running the OsmoSMLC.
 | 
			
		||||
=== About OsmoSMLC
 | 
			
		||||
 | 
			
		||||
OsmoSMLC is the Osmocom implementation of a Serving Mobile Location Center.
 | 
			
		||||
 | 
			
		||||
A Perform Location Request is initiated by the MSC via BSSMAP on the
 | 
			
		||||
A-interface, for a specific subscriber. The request is typically passed on via
 | 
			
		||||
BSSMAP-LE on the Lb-interface to the SMLC. If required, the SMLC may request the
 | 
			
		||||
subscriber's Timing Advance (a.k.a. Access Delay) from the BSC via BSSLAP
 | 
			
		||||
(encapsulated BSSLAP APDU in a BSSMAP-LE Connection Oriented Information
 | 
			
		||||
message). The SMLC may combine several location and velocity estimate methods to
 | 
			
		||||
form a GAD PDU containing the resulting geographic location information.
 | 
			
		||||
 | 
			
		||||
So far, OsmoSMLC implements only Timing Advance based positioning. In TA-based
 | 
			
		||||
positioning, the Timing-Advance information received from the BSC is combined
 | 
			
		||||
with the preconfigured latitude and longitude of the serving cell to form a
 | 
			
		||||
location estimate. This is returned to the BSC via the Lb-interface, and in
 | 
			
		||||
turn to the MSC via the A-interface.
 | 
			
		||||
 | 
			
		||||
Location Services (LCS) are described in 3GPP TS 43.059 <<3gpp-ts-43-059>>.
 | 
			
		||||
Messages for LCS on the A-interface (BSSMAP, between BSC and MSC) are described
 | 
			
		||||
in 3GPP TS 48.008 <<3gpp-ts-48-008>>, on the Lb-interface (BSSMAP-LE between BSC
 | 
			
		||||
and SMLC) in 3GPP TS 49.031 <<3gpp-ts-49-031>>. The resulting geographic
 | 
			
		||||
location and possibly velocity information is encoded in GAD, described in 3GPP
 | 
			
		||||
TS 23.032 <<3gpp-ts-23-032>>.
 | 
			
		||||
 | 
			
		||||
== Lb Interface
 | 
			
		||||
 | 
			
		||||
The Lb interface connects BSC to SMLC and consists of BSSMAP-LE/SCCP/M3UA. It
 | 
			
		||||
is routed via an STP instance, as is typical for SCCP. The BSSMAP-LE messages
 | 
			
		||||
may encapsulate BSSLAP and GAD PDUs.
 | 
			
		||||
 | 
			
		||||
OsmoSMLC by default connects to an STP at 127.0.0.1:2905, and registers with
 | 
			
		||||
its own point-code, default is 0.23.6, on SSN "SMLC (BSSMAP-LE)" (SSN code
 | 
			
		||||
252).
 | 
			
		||||
 | 
			
		||||
A BSC on an Lb link typically uses SSN "BSC (BSSMAP-LE)" (SSN code 250). Each
 | 
			
		||||
BSC connecting to the SMLC must have a distinct own point-code. OsmoBSC's own
 | 
			
		||||
default point-code is 0.23.3, but when more than one BSC is in use, BSC point
 | 
			
		||||
codes should be configured explicitly.
 | 
			
		||||
 | 
			
		||||
OsmoSMLC waits for BSC instances to establish Lb interface connections. It does
 | 
			
		||||
not require knowledge of individual BSCs' point-codes (OsmoSMLC does require
 | 
			
		||||
preconfigured cell location information, see <<cell-locations>>).
 | 
			
		||||
 | 
			
		||||
On establishing the Lb link, a BSC should send a BSSMAP-LE RESET; the Lb link
 | 
			
		||||
is usable for per-subscriber connections as soon as OsmoSMLC responds with a
 | 
			
		||||
BSSMAP-LE RESET ACKNOWLEDGE.
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,10 @@
 | 
			
		||||
 * 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
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,10 @@
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,10 @@
 | 
			
		||||
 * 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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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(rate_ctr_group_get_ctr(g_smlc->ctrs, SMLC_CTR_BSSMAP_LE_TX_ERR_CONN_NOT_READY));
 | 
			
		||||
		rate_ctr_inc(&g_smlc->ctrs->ctr[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(rate_ctr_group_get_ctr(g_smlc->ctrs, SMLC_CTR_BSSMAP_LE_TX_SUCCESS));
 | 
			
		||||
		rate_ctr_inc(&g_smlc->ctrs->ctr[SMLC_CTR_BSSMAP_LE_TX_SUCCESS]);
 | 
			
		||||
	else
 | 
			
		||||
		rate_ctr_inc(rate_ctr_group_get_ctr(g_smlc->ctrs, SMLC_CTR_BSSMAP_LE_TX_ERR_SEND));
 | 
			
		||||
		rate_ctr_inc(&g_smlc->ctrs->ctr[SMLC_CTR_BSSMAP_LE_TX_ERR_SEND]);
 | 
			
		||||
	return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,10 @@
 | 
			
		||||
 * 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>
 | 
			
		||||
@@ -92,7 +96,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(rate_ctr_group_get_ctr(g_smlc->ctrs, SMLC_CTR_BSSMAP_LE_RX_DT1_PERFORM_LOCATION_REQUEST));
 | 
			
		||||
	rate_ctr_inc(&g_smlc->ctrs->ctr[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
 | 
			
		||||
 
 | 
			
		||||
@@ -78,31 +78,6 @@ 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) {
 | 
			
		||||
@@ -115,8 +90,7 @@ static void handle_options(int argc, char **argv)
 | 
			
		||||
			{"config-file", 1, 0, 'c'},
 | 
			
		||||
			{"version", 0, 0, 'V' },
 | 
			
		||||
			{"log-level", 1, 0, 'e'},
 | 
			
		||||
			{"vty-ref-mode", 1, &long_option, 1},
 | 
			
		||||
			{"vty-ref-xml", 0, &long_option, 2},
 | 
			
		||||
			{"vty-ref-xml", 0, &long_option, 1},
 | 
			
		||||
			{0, 0, 0, 0}
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
@@ -131,8 +105,14 @@ static void handle_options(int argc, char **argv)
 | 
			
		||||
			print_help();
 | 
			
		||||
			exit(0);
 | 
			
		||||
		case 0:
 | 
			
		||||
			handle_long_options(argv[0], long_option);
 | 
			
		||||
			break;
 | 
			
		||||
			switch (long_option) {
 | 
			
		||||
			case 1:
 | 
			
		||||
				vty_dump_xml_ref(stdout);
 | 
			
		||||
				exit(0);
 | 
			
		||||
			default:
 | 
			
		||||
				fprintf(stderr, "error parsing cmdline options\n");
 | 
			
		||||
				exit(2);
 | 
			
		||||
			}
 | 
			
		||||
		case 'd':
 | 
			
		||||
			log_parse_category_mask(osmo_stderr_target, optarg);
 | 
			
		||||
			break;
 | 
			
		||||
@@ -268,7 +248,8 @@ int main(int argc, char **argv)
 | 
			
		||||
 | 
			
		||||
	/* start control interface after reading config for
 | 
			
		||||
	 * ctrl_vty_get_bind_addr() */
 | 
			
		||||
	g_smlc->ctrl = ctrl_interface_setup2(g_smlc, OSMO_CTRL_PORT_SMLC, smlc_ctrl_node_lookup, _LAST_CTRL_NODE_SMLC);
 | 
			
		||||
	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);
 | 
			
		||||
	if (!g_smlc->ctrl) {
 | 
			
		||||
		fprintf(stderr, "Failed to init the control interface. Exiting.\n");
 | 
			
		||||
		exit(1);
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ EXTRA_DIST = \
 | 
			
		||||
	smlc_subscr_test.err \
 | 
			
		||||
	$(NULL)
 | 
			
		||||
 | 
			
		||||
check_PROGRAMS = \
 | 
			
		||||
noinst_PROGRAMS = \
 | 
			
		||||
	smlc_subscr_test \
 | 
			
		||||
	$(NULL)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -140,11 +140,10 @@ int main()
 | 
			
		||||
	void *ctx = talloc_named_const(NULL, 0, "smlc_subscr_test");
 | 
			
		||||
 | 
			
		||||
	osmo_init_logging2(ctx, &log_info);
 | 
			
		||||
	log_set_print_filename2(osmo_stderr_target, LOG_FILENAME_NONE);
 | 
			
		||||
	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);
 | 
			
		||||
	log_set_print_category_hex(osmo_stderr_target, 0);
 | 
			
		||||
 | 
			
		||||
	g_smlc = smlc_state_alloc(ctx);
 | 
			
		||||
 | 
			
		||||
@@ -155,3 +154,4 @@ int main()
 | 
			
		||||
	printf("Done\n");
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user