aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore6
-rw-r--r--TODO-RELEASE3
-rw-r--r--doc/manuals/Makefile.am11
-rw-r--r--doc/manuals/chapters/gbproxy-configuration.adoc6
-rw-r--r--doc/manuals/chapters/gbproxy-control.adoc29
-rw-r--r--doc/manuals/chapters/gbproxy-overview.adoc127
-rw-r--r--doc/manuals/chapters/gbproxy-running.adoc39
-rw-r--r--doc/manuals/osmogbproxy-usermanual-docinfo.xml46
-rw-r--r--doc/manuals/osmogbproxy-usermanual.adoc34
-rw-r--r--doc/manuals/osmogbproxy-vty-reference.xml38
-rwxr-xr-xdoc/manuals/regen_doc.sh82
-rw-r--r--doc/manuals/vty-osmogbproxy/gbproxy_vty_additions.xml5
-rw-r--r--doc/manuals/vty-osmogbproxy/gbproxy_vty_reference.xml1627
-rw-r--r--include/osmocom/sgsn/gprs_sgsn.h8
-rw-r--r--include/osmocom/sgsn/sgsn.h2
-rw-r--r--src/gbproxy/gb_proxy_main.c5
-rw-r--r--src/gtphub/gtphub_main.c5
-rw-r--r--src/sgsn/gprs_gmm.c10
-rw-r--r--src/sgsn/gprs_gmm_attach.c2
-rw-r--r--src/sgsn/gprs_gmm_fsm.c2
-rw-r--r--src/sgsn/gprs_llc.c36
-rw-r--r--src/sgsn/gprs_mm_state_gb_fsm.c2
-rw-r--r--src/sgsn/gprs_mm_state_iu_fsm.c2
-rw-r--r--src/sgsn/sgsn_libgtp.c26
-rw-r--r--src/sgsn/sgsn_main.c7
25 files changed, 2092 insertions, 68 deletions
diff --git a/.gitignore b/.gitignore
index 70193ffa..b3e50f55 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,9 +39,9 @@ ltmain.sh
# apps and app data
-src/gprs/osmo-sgsn
-src/gprs/osmo-gbproxy
-src/gprs/osmo-gtphub
+src/sgsn/osmo-sgsn
+src/gbproxy/osmo-gbproxy
+src/gtphub/osmo-gtphub
src/libcommon/gsup_test_client
#tests
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 1c5d61f5..ac6dcb21 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -1 +1,4 @@
#component what description / commit summary line
+osmo-sgsn libgtp We dropped libgtp gtp_retranstimeout timer code which became a
+ no-op in osmo-ggsn.git c94837c6a401bf0f80791b619a9b4cfbe9160afd,
+ which means next osmo-sgsn release will require libgtp > 1.4.0.
diff --git a/doc/manuals/Makefile.am b/doc/manuals/Makefile.am
index 4c6b847b..cd57cf14 100644
--- a/doc/manuals/Makefile.am
+++ b/doc/manuals/Makefile.am
@@ -1,16 +1,21 @@
EXTRA_DIST = osmosgsn-usermanual.adoc \
osmosgsn-usermanual-docinfo.xml \
osmosgsn-vty-reference.xml \
+ osmogbproxy-usermanual.adoc \
+ osmogbproxy-usermanual-docinfo.xml \
regen_doc.sh \
chapters \
- vty
+ vty \
+ osmogbproxy-vty-reference.xml \
+ vty-osmogbproxy \
+ $(NULL)
if BUILD_MANUALS
- ASCIIDOC = osmosgsn-usermanual.adoc
+ ASCIIDOC = osmosgsn-usermanual.adoc osmogbproxy-usermanual.adoc
ASCIIDOC_DEPS = $(srcdir)/chapters/*.adoc
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.asciidoc.inc
- VTY_REFERENCE = osmosgsn-vty-reference.xml
+ VTY_REFERENCE = osmosgsn-vty-reference.xml osmogbproxy-vty-reference.xml
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.vty-reference.inc
OSMO_REPOSITORY = osmo-sgsn
diff --git a/doc/manuals/chapters/gbproxy-configuration.adoc b/doc/manuals/chapters/gbproxy-configuration.adoc
new file mode 100644
index 00000000..599b3f7b
--- /dev/null
+++ b/doc/manuals/chapters/gbproxy-configuration.adoc
@@ -0,0 +1,6 @@
+== Configuring OsmoGbPROXY
+
+TBD. Unfortunately this chapter of the manual still needs to be written.
+Osmocom has very limited funding and support resources; Feel free to help
+us completing this documentation by contributing with code, documentation
+or by supporting the developers financially.
diff --git a/doc/manuals/chapters/gbproxy-control.adoc b/doc/manuals/chapters/gbproxy-control.adoc
new file mode 100644
index 00000000..afe23adf
--- /dev/null
+++ b/doc/manuals/chapters/gbproxy-control.adoc
@@ -0,0 +1,29 @@
+[[control]]
+== Control interface
+
+The actual protocol is described in <<common-control-if>>, the variables
+common to all programs using it are described in <<ctrl_common_vars>>. Here we
+describe variables specific to OsmoGbPROXY.
+
+.Variables available over control interface
+[options="header",width="100%",cols="20%,5%,5%,50%,20%"]
+|===
+|Name|Access|Trap|Value|Comment
+|nsvc-state|RO|No|"<nsei>,<nsvci>,<local-alive>,<local-blocked>,<remote-role>,<remote-alive>,<remote-blocked>"|See <<nsvc_state>> for details.
+|gbproxy-state|RO|No|"<nsei>,<bvci>,<mcc>,<mnc>,<lac>,<rac>,<blocked>"|See <<gbproxy_state>> for details.
+|number-of-peers|RO|No|"<num-of-bss>"|Count of concurrent BSS(BTS) peers.
+|===
+
+[[nsvc_state]]
+=== nsvc-state
+
+Return the list of active NS-VCs (NS Virtual Circuits), including information
+on the key parameters, such as NSEI, NSVCI and the local + remote ALIVE
+and BLOCKED state.
+
+[[gbproxy_state]]
+=== gbproxy-state
+
+Return the list of active Peers, including information on the key
+parameters, such as NSEI, BVCI, and the MCC-MNC-LAC-RAC of the attached
+BSS, as well as the overall state (BLOCKED or UNBLOCKED).
diff --git a/doc/manuals/chapters/gbproxy-overview.adoc b/doc/manuals/chapters/gbproxy-overview.adoc
new file mode 100644
index 00000000..580afae6
--- /dev/null
+++ b/doc/manuals/chapters/gbproxy-overview.adoc
@@ -0,0 +1,127 @@
+[[chapter_overview]]
+== Overview
+
+=== About OsmoGbPROXY
+
+OsmoGbPROXY is the Osmocom proxy for the 3GPP Gb interface. The Gb
+interface is defined by 3GPP as the protocol between the BSS and the
+SGSN inside the 2G/2.5G/2.75G packet switched network domain.
+
+As Osmocom implements a BTS-colocated PCU, there are potentially many
+Gb interface connections between all those many PCUs in the network
+and the SGSN. This can be cumbersome to configure/maintain at the
+SGSN sine.
+
+OsmoGbPROXY aggregates many PCU-facing Gb connections into one Gb
+connection to the SGSN. This is achieved by
+
+* maintaining sepaate NS-VCs on the PCU side and on the SGSN side
+* more or less transparently routing BSSGP peer-to-peer Virtual Circuits
+ (BVCs) through the proxy
+* having some special handling for the signaling BVC (BVCI=0) which is
+ shared among all the PCUs connected to the proxy
+
+=== Data Model
+
+==== gbproxy_config
+
+This contains the parsed configuration of the OsmoGbPROXY.
+
+==== gproxy_peer
+
+A "peer" is any remote NS-entity that the proxy interacts with. A peer
+includes information about:
+
+* the [unique] NSEI of the peer
+* the [unique] BVCI of the peer
+* the Routeing Area (RA) of the peer
+
+==== gbproxy_tlli_state
+
+One of the (unique) TLLI of any of the subscribers/UEs attached to any of
+the BTSs/PCUs served by the proxy.
+
+==== gbproxy_link_info
+
+One of the [unique] subscribers/connections that are served through this
+proxy. The information includes
+
+* the TLLI on BSS side
+* the TLLI on SGSN side (may be different due to P-TMSI rewriting)
+* the NSEI of the SGSN for this link
+* a timestamp when we last conversed with this subscriber
+* state related to IMSI acquisition
+** a temporary queue of stored messages (until IMSI acquisition succeeds)
+** N(U) rewriting state (inserting IDENTTIY REQ changes LLC sequence numbers)
+
+==== gbproxy_match
+
+A single matching rule against which IMSIs are matched. The matching rule
+is expressed as regular expression. There can be one such matching rule for
+each
+
+* routing between two different SGSNs, see below
+* patching of messages (e.g. APN, PLMN)
+
+
+=== Advanced Features
+
+==== PLMN patching
+
+This feature permits to modify the PLMN inside any BSSGP messages
+containing the Routing Area ID (RAID).
+
+The configured core-mcc and core-mnc will be used towards the SGSN,
+irrespective of which MCC/MNC the PCU is using/reporting on Gb.
+
+==== APN patching
+
+This will transparently re-write the APN name inside SM ACTIVATE PDP
+REQUEST messages on the way from the MS to the SGSN. The patching is
+performed based on matching on the IMSI of the subscriber.
+
+The configured core-apn will be used towards the SGSN, irrespective
+of which APN the MS is requesting in its Layer3 signaling.
+
+APN patching can only be performed if no GPRS encryption is enabled in
+the network!
+
+APN patching is useful in case a valid APN cannot reliably be
+provisioned via other means, such as via the SIM Card, OTA-DM or via
+CAMEL rewriting in the SGSN.
+
+==== P-TMSI patching
+
+This feature transparently rewrite the P-TMSI between MS and SGSN. This
+is required when using the Secondary SGSN support, as both SGSNs could
+allocate overlapping TMSIs and we must make sure they're unique across
+both SGSNs.
+
+P-TMSI patching is required by (and hence automatically enablede if
+secondary SGSN support is enabled.
+
+P-TMSI patching can only be performed if no GPRS encryption is enabled in
+the network!
+
+==== IMSI Acquisition
+
+This is a special feature where the proxy will by itself inject GMM IDENTITY
+REQUEST messages for the IMSI into the downlink BSSGP traffic in order
+to establish the IMSI of subscribers for which it is not otherwise known
+
+IMSI acquisition is automatically enabled if secondary SGSN support is
+enabled.
+
+==== Secondary SGSN Support
+
+This allows the proxy to connect not only to one SGSN, but to two
+different SGSNs. IMSI matching rules are applied to determine which of
+the SGSNs is to be used for traffic of this subscriber.
+
+One possible use case of this feature is to have a "local break-out" for
+subscribers who are native to this network (and hence save
+latencies/overhead of back-hauling all related traffic via the
+SGSN+GGSN) while at the same time maintaining the classic behavior for
+inbound roaming subscribers, where the roaming agreements mandate that
+data traffic is brought back to the GGSN in the HPLMN via the SGSN of
+the VPLMN.
diff --git a/doc/manuals/chapters/gbproxy-running.adoc b/doc/manuals/chapters/gbproxy-running.adoc
new file mode 100644
index 00000000..9182b486
--- /dev/null
+++ b/doc/manuals/chapters/gbproxy-running.adoc
@@ -0,0 +1,39 @@
+== Running OsmoGbPROXY
+
+The OsmoGbPROXY executable (`osmo-gbproxy`) offers the following command-line
+options:
+
+
+=== SYNOPSIS
+
+*osmo-gbproxy* [-h|-V] [-d 'DBGMASK'] [-D] [-c 'CONFIGFILE'] [-s] [-e 'LOGLEVEL'] [-T]
+
+
+=== OPTIONS
+
+*-h, --help*::
+ Print a short help message about the supported options
+*-V, --version*::
+ Print the compile-time version number of the program
+*-d, --debug 'DBGMASK','DBGLEVELS'*::
+ Set the log subsystems and levels for logging to stderr. This
+ has mostly been superseded by VTY-based logging configuration,
+ see <<logging>> for further information.
+*-D, --daemonize*::
+ Fork the process as a daemon into background.
+*-c, --config-file 'CONFIGFILE'*::
+ Specify the file and path name of the configuration file to be
+ used. If none is specified, use `osmo_sgsn.cfg` in the current
+ working directory.
+*-s, --disable-color*::
+ Disable colors for logging to stderr. This has mostly been
+ deprecated by VTY based logging configuration, see <<logging>>
+ for more information.
+*-e, --log-level 'LOGLEVEL'*::
+ Set the global log level for logging to stderr. This has mostly
+ been deprecated by VTY based logging configuration, see
+ <<logging>> for more information.
+*-T, --timestamp*::
+ Enable prefixing each log line on stderr with a timestamp. This
+ has mostly been deprecated by VTY based logging configuration, see
+ <<logging>> for more information.
diff --git a/doc/manuals/osmogbproxy-usermanual-docinfo.xml b/doc/manuals/osmogbproxy-usermanual-docinfo.xml
new file mode 100644
index 00000000..29bb2aa7
--- /dev/null
+++ b/doc/manuals/osmogbproxy-usermanual-docinfo.xml
@@ -0,0 +1,46 @@
+<revhistory>
+ <revision>
+ <revnumber>1</revnumber>
+ <date>March 21, 2019</date>
+ <authorinitials>HW</authorinitials>
+ <revremark>
+ Initial version.
+ </revremark>
+ </revision>
+</revhistory>
+
+<authorgroup>
+ <author>
+ <firstname>Harald</firstname>
+ <surname>Welte</surname>
+ <email>hwelte@sysmocom.de</email>
+ <authorinitials>HW</authorinitials>
+ <affiliation>
+ <shortaffil>sysmocom</shortaffil>
+ <orgname>sysmocom - s.f.m.c. GmbH</orgname>
+ <jobtitle>Managing Director</jobtitle>
+ </affiliation>
+ </author>
+</authorgroup>
+
+<copyright>
+ <year>2013-2019</year>
+ <holder>sysmocom - s.f.m.c. GmbH</holder>
+</copyright>
+
+<legalnotice>
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts,
+ and no Back-Cover Texts. A copy of the license is included in
+ the section entitled "GNU Free Documentation License".
+ </para>
+ <para>
+ The Asciidoc source code of this manual can be found at
+ <ulink url="https://git.osmocom.org/osmo-sgsn/doc/">
+ https://git.osmocom.org/osmo-sgsn/doc/
+ </ulink>
+ </para>
+</legalnotice>
diff --git a/doc/manuals/osmogbproxy-usermanual.adoc b/doc/manuals/osmogbproxy-usermanual.adoc
new file mode 100644
index 00000000..c4e0b9d0
--- /dev/null
+++ b/doc/manuals/osmogbproxy-usermanual.adoc
@@ -0,0 +1,34 @@
+:gfdl-enabled:
+
+OsmoGbPROXY User Manual
+=======================
+Harald Welte <hwelte@sysmocom.de>
+
+
+include::./common/chapters/preface.adoc[]
+
+include::{srcdir}/chapters/gbproxy-overview.adoc[]
+
+include::{srcdir}/chapters/gbproxy-running.adoc[]
+
+include::{srcdir}/chapters/gbproxy-control.adoc[]
+
+include::./common/chapters/vty.adoc[]
+
+include::./common/chapters/logging.adoc[]
+
+include::{srcdir}/chapters/gbproxy-configuration.adoc[]
+
+include::./common/chapters/gb.adoc[]
+
+include::./common/chapters/control_if.adoc[]
+
+//include::{srcdir}/chapters/counters.adoc[]
+
+include::./common/chapters/port_numbers.adoc[]
+
+include::./common/chapters/bibliography.adoc[]
+
+include::./common/chapters/glossary.adoc[]
+
+include::./common/chapters/gfdl.adoc[]
diff --git a/doc/manuals/osmogbproxy-vty-reference.xml b/doc/manuals/osmogbproxy-vty-reference.xml
new file mode 100644
index 00000000..ecf22680
--- /dev/null
+++ b/doc/manuals/osmogbproxy-vty-reference.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ex:ts=2:sw=42sts=2:et
+ -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+-->
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML 5.0//EN"
+"http://docbook.org/xml/5.0/dtd/docbook.dtd" [
+<!ENTITY chapter-vty SYSTEM "./common/chapters/vty.xml" >
+<!ENTITY sections-vty SYSTEM "generated/docbook_osmogbproxy-vty-reference.xml" >
+]>
+
+<book>
+ <info>
+ <revhistory>
+ <revision>
+ <revnumber>v1</revnumber>
+ <date>2nd December 2019</date>
+ <authorinitials>hw</authorinitials>
+ <revremark>Initial</revremark>
+ </revision>
+ </revhistory>
+
+ <title>OsmoGbProxy VTY Reference</title>
+
+ <copyright>
+ <year>2019</year>
+ </copyright>
+
+ <legalnotice>
+ <para>This work is copyright by <orgname>sysmocom - s.f.m.c. GmbH</orgname>. All rights reserved.
+ </para>
+ </legalnotice>
+ </info>
+
+ <!-- Main chapters-->
+ &chapter-vty;
+</book>
+
diff --git a/doc/manuals/regen_doc.sh b/doc/manuals/regen_doc.sh
index d7584366..847b764a 100755
--- a/doc/manuals/regen_doc.sh
+++ b/doc/manuals/regen_doc.sh
@@ -1,17 +1,77 @@
-#!/bin/sh -x
+#!/bin/sh -e
-if [ -z "$DOCKER_PLAYGROUND" ]; then
- echo "You need to set DOCKER_PLAYGROUND"
+require_osmo_interact_vty() {
+ if command -v osmo_interact_vty.py >/dev/null 2>&1; then
+ return
+ fi
+ echo "ERROR: osmo_interact_vty.py not found. Are osmo-python-tests in PATH?"
exit 1
-fi
+}
-SCRIPT=$(realpath "$0")
-MANUAL_DIR=$(dirname "$SCRIPT")
+# $1: "update_vty_reference" or "update_counters"
+# $2: output file
+# $3: port
+# $4-$n: command
+interact_vty() {
+ action="$1"
+ output="$2"
+ port="$3"
+ log="/tmp/$4.log"
+ shift 3
-COMMIT=${COMMIT:-$(git log -1 --format=format:%H)}
+ echo "Starting in background: $@"
+ "$@" > "$log" 2>&1 &
+ pid="$!"
-cd "$DOCKER_PLAYGROUND/scripts" || exit 1
+ sleep 0.5
+ if ! kill -0 "$pid" 2>/dev/null; then
+ echo "ERROR: start failed!"
+ cat "$log"
+ exit 1
+ fi
-OSMO_SGSN_BRANCH=$COMMIT ./regen_doc.sh osmo-sgsn 4245 \
- "$MANUAL_DIR/chapters/counters_generated.adoc" \
- "$MANUAL_DIR/vty/sgsn_vty_reference.xml"
+ case "$action" in
+ "update_vty_reference")
+ echo "Updating VTY reference: $output"
+ osmo_interact_vty.py -X -p "$port" -H 127.0.0.1 -O "$output"
+ ;;
+ "update_counters")
+ echo "Updating asciidoc counters: $output"
+ osmo_interact_vty.py -c "enable;show asciidoc counters" -p "$port" -H 127.0.0.1 -O "$output"
+ ;;
+ *)
+ echo "ERROR: invalid argument: $action"
+ exit 1
+ ;;
+ esac
+
+ kill "$pid"
+ echo "Done (killed $1)"
+ echo
+}
+
+DIR="$(cd "$(dirname "$0")"; pwd)"
+cd "$DIR"
+
+require_osmo_interact_vty
+
+interact_vty \
+ "update_vty_reference" \
+ "vty/sgsn_vty_reference.xml" \
+ 4245 \
+ osmo-sgsn -c "../examples/osmo-sgsn/osmo-sgsn.cfg"
+
+interact_vty \
+ "update_vty_reference" \
+ "vty-osmogbproxy/gbproxy_vty_reference.xml" \
+ 4246 \
+ osmo-gbproxy -c "../examples/osmo-gbproxy/osmo-gbproxy.cfg"
+
+interact_vty \
+ "update_counters" \
+ "chapters/counters_generated.adoc" \
+ 4245 \
+ osmo-sgsn -c "../examples/osmo-sgsn/osmo-sgsn.cfg"
+
+
+echo "Done with all"
diff --git a/doc/manuals/vty-osmogbproxy/gbproxy_vty_additions.xml b/doc/manuals/vty-osmogbproxy/gbproxy_vty_additions.xml
new file mode 100644
index 00000000..6da2d2f2
--- /dev/null
+++ b/doc/manuals/vty-osmogbproxy/gbproxy_vty_additions.xml
@@ -0,0 +1,5 @@
+<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'>
+ <node id='config-gbproxy'>
+ <description>Configure the Gb proxy</description>
+ </node>
+</vtydoc>
diff --git a/doc/manuals/vty-osmogbproxy/gbproxy_vty_reference.xml b/doc/manuals/vty-osmogbproxy/gbproxy_vty_reference.xml
new file mode 100644
index 00000000..1db3c0d2
--- /dev/null
+++ b/doc/manuals/vty-osmogbproxy/gbproxy_vty_reference.xml
@@ -0,0 +1,1627 @@
+<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'>
+ <node id='_common_cmds_'>
+ <name>Common Commands</name>
+ <description>These commands are available on all VTY nodes. They are listed here only once, to unclutter the VTY reference.</description>
+ <command id='help'>
+ <params>
+ <param name='help' doc='Description of the interactive help system' />
+ </params>
+ </command>
+ <command id='list'>
+ <params>
+ <param name='list' doc='Print command list' />
+ </params>
+ </command>
+ <command id='write terminal'>
+ <params>
+ <param name='write' doc='Write running configuration to memory, network, or terminal' />
+ <param name='terminal' doc='Write to terminal' />
+ </params>
+ </command>
+ <command id='write file [PATH]'>
+ <params>
+ <param name='write' doc='Write running configuration to memory, network, or terminal' />
+ <param name='file' doc='Write to configuration file' />
+ <param name='[PATH]' doc='Set file path to store the config, or replace if already exists' />
+ </params>
+ </command>
+ <command id='write memory'>
+ <params>
+ <param name='write' doc='Write running configuration to memory, network, or terminal' />
+ <param name='memory' doc='Write configuration to the file (same as write file)' />
+ </params>
+ </command>
+ <command id='write'>
+ <params>
+ <param name='write' doc='Write running configuration to memory, network, or terminal' />
+ </params>
+ </command>
+ <command id='show running-config'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='running-config' doc='running configuration' />
+ </params>
+ </command>
+ <command id='exit'>
+ <params>
+ <param name='exit' doc='Exit current mode and down to previous mode' />
+ </params>
+ </command>
+ <command id='end'>
+ <params>
+ <param name='end' doc='End current mode and change to enable mode.' />
+ </params>
+ </command>
+ </node>
+ <node id='view'>
+ <name>view</name>
+ <command id='show version'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='version' doc='Displays program version' />
+ </params>
+ </command>
+ <command id='show online-help'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='online-help' doc='Online help' />
+ </params>
+ </command>
+ <command id='enable'>
+ <params>
+ <param name='enable' doc='Turn on privileged mode command' />
+ </params>
+ </command>
+ <command id='terminal length &lt;0-512&gt;'>
+ <params>
+ <param name='terminal' doc='Set terminal line parameters' />
+ <param name='length' doc='Set number of lines on a screen' />
+ <param name='&lt;0-512&gt;' doc='Number of lines on screen (0 for no pausing)' />
+ </params>
+ </command>
+ <command id='terminal no length'>
+ <params>
+ <param name='terminal' doc='Set terminal line parameters' />
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='length' doc='Set number of lines on a screen' />
+ </params>
+ </command>
+ <command id='who'>
+ <params>
+ <param name='who' doc='Display who is on vty' />
+ </params>
+ </command>
+ <command id='show history'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='history' doc='Display the session command history' />
+ </params>
+ </command>
+ <command id='logging enable'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='enable' doc='Enables logging to this vty' />
+ </params>
+ </command>
+ <command id='logging disable'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='disable' doc='Disables logging to this vty' />
+ </params>
+ </command>
+ <command id='logging filter all (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='filter' doc='Filter log messages' />
+ <param name='all' doc='Do you want to log all messages?' />
+ <param name='0' doc='Only print messages matched by other filters' />
+ <param name='1' doc='Bypass filter and print all messages' />
+ </params>
+ </command>
+ <command id='logging color (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='color' doc='Configure color-printing for log messages' />
+ <param name='0' doc='Don&apos;t use color for printing messages' />
+ <param name='1' doc='Use color for printing messages' />
+ </params>
+ </command>
+ <command id='logging timestamp (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='timestamp' doc='Configure log message timestamping' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with current timestamp' />
+ </params>
+ </command>
+ <command id='logging print extended-timestamp (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='extended-timestamp' doc='Configure log message timestamping' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with current timestamp with YYYYMMDDhhmmssnnn' />
+ </params>
+ </command>
+ <command id='logging print category (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='category' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with category/subsystem name' />
+ </params>
+ </command>
+ <command id='logging print category-hex (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='category-hex' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with category/subsystem nr in hex (&apos;&lt;000b&gt;&apos;)' />
+ </params>
+ </command>
+ <command id='logging print level (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='level' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with the log level name' />
+ </params>
+ </command>
+ <command id='logging print file (0|1|basename) [last]'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='file' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with the source file and line' />
+ <param name='basename' doc='Prefix each log message with the source file&apos;s basename (strip leading paths) and line' />
+ <param name='[last]' doc='Log source file info at the end of a log line. If omitted, log source file info just before the log text.' />
+ </params>
+ </command>
+ <command id='logging set-log-mask MASK'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='set-log-mask' doc='Set the logmask of this logging target' />
+ <param name='MASK' doc='List of logging categories to log, e.g. &apos;abc:mno:xyz&apos;. Available log categories depend on the specific application, refer to the &apos;logging level&apos; command. Optionally add individual log levels like &apos;abc,1:mno,3:xyz,5&apos;, where the level numbers are LOGL_DEBUG=1 LOGL_INFO=3 LOGL_NOTICE=5 LOGL_ERROR=7 LOGL_FATAL=8' />
+ </params>
+ </command>
+ <command id='logging level (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='gprs' doc='GPRS Packet Service' />
+ <param name='ns' doc='GPRS Network Service (NS)' />
+ <param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
+ <param name='lglobal' doc='Library-internal global log family' />
+ <param name='llapd' doc='LAPD in libosmogsm' />
+ <param name='linp' doc='A-bis Intput Subsystem' />
+ <param name='lmux' doc='A-bis B-Subchannel TRAU Frame Multiplex' />
+ <param name='lmi' doc='A-bis Input Driver for Signalling' />
+ <param name='lmib' doc='A-bis Input Driver for B-Channels (voice)' />
+ <param name='lsms' doc='Layer3 Short Message Service (SMS)' />
+ <param name='lctrl' doc='Control Interface' />
+ <param name='lgtp' doc='GPRS GTP library' />
+ <param name='lstats' doc='Statistics messages and logging' />
+ <param name='lgsup' doc='Generic Subscriber Update Protocol' />
+ <param name='loap' doc='Osmocom Authentication Protocol' />
+ <param name='lss7' doc='libosmo-sigtran Signalling System 7' />
+ <param name='lsccp' doc='libosmo-sigtran SCCP Implementation' />
+ <param name='lsua' doc='libosmo-sigtran SCCP User Adaptation' />
+ <param name='lm3ua' doc='libosmo-sigtran MTP3 User Adaptation' />
+ <param name='lmgcp' doc='libosmo-mgcp Media Gateway Control Protocol' />
+ <param name='ljibuf' doc='libosmo-netif Jitter Buffer' />
+ <param name='lrspro' doc='Remote SIM protocol' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ </params>
+ </command>
+ <command id='logging level set-all (debug|info|notice|error|fatal)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='set-all' doc='Once-off set all categories to the given log level. There is no single command to take back these changes -- each category is set to the given level, period.' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ </params>
+ </command>
+ <command id='logging level force-all (debug|info|notice|error|fatal)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='force-all' doc='Globally force all logging categories to a specific level. This is released by the &apos;no logging level force-all&apos; command. Note: any &apos;logging level &lt;category&gt; &lt;level&gt;&apos; commands will have no visible effect after this, until the forced level is released.' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ </params>
+ </command>
+ <command id='no logging level force-all'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='force-all' doc='Release any globally forced log level set with &apos;logging level force-all &lt;level&gt;&apos;' />
+ </params>
+ </command>
+ <command id='logp (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal) .LOGMESSAGE'>
+ <params>
+ <param name='logp' doc='Print a message on all log outputs; useful for placing markers in test logs' />
+ <param name='gprs' doc='GPRS Packet Service' />
+ <param name='ns' doc='GPRS Network Service (NS)' />
+ <param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
+ <param name='lglobal' doc='Library-internal global log family' />
+ <param name='llapd' doc='LAPD in libosmogsm' />
+ <param name='linp' doc='A-bis Intput Subsystem' />
+ <param name='lmux' doc='A-bis B-Subchannel TRAU Frame Multiplex' />
+ <param name='lmi' doc='A-bis Input Driver for Signalling' />
+ <param name='lmib' doc='A-bis Input Driver for B-Channels (voice)' />
+ <param name='lsms' doc='Layer3 Short Message Service (SMS)' />
+ <param name='lctrl' doc='Control Interface' />
+ <param name='lgtp' doc='GPRS GTP library' />
+ <param name='lstats' doc='Statistics messages and logging' />
+ <param name='lgsup' doc='Generic Subscriber Update Protocol' />
+ <param name='loap' doc='Osmocom Authentication Protocol' />
+ <param name='lss7' doc='libosmo-sigtran Signalling System 7' />
+ <param name='lsccp' doc='libosmo-sigtran SCCP Implementation' />
+ <param name='lsua' doc='libosmo-sigtran SCCP User Adaptation' />
+ <param name='lm3ua' doc='libosmo-sigtran MTP3 User Adaptation' />
+ <param name='lmgcp' doc='libosmo-mgcp Media Gateway Control Protocol' />
+ <param name='ljibuf' doc='libosmo-netif Jitter Buffer' />
+ <param name='lrspro' doc='Remote SIM protocol' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ <param name='.LOGMESSAGE' doc='Arbitrary message to log on given category and log level' />
+ </params>
+ </command>
+ <command id='show logging vty'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='logging' doc='Show current logging configuration' />
+ <param name='vty' doc='Show current logging configuration for this vty' />
+ </params>
+ </command>
+ <command id='show alarms'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='alarms' doc='Show current logging configuration' />
+ </params>
+ </command>
+ <command id='show talloc-context (application|all) (full|brief|DEPTH)'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='talloc-context' doc='Show talloc memory hierarchy' />
+ <param name='application' doc='Application&apos;s context' />
+ <param name='all' doc='All contexts, if NULL-context tracking is enabled' />
+ <param name='full' doc='Display a full talloc memory hierarchy' />
+ <param name='brief' doc='Display a brief talloc memory hierarchy' />
+ <param name='DEPTH' doc='Specify required maximal depth value' />
+ </params>
+ </command>
+ <command id='show talloc-context (application|all) (full|brief|DEPTH) tree ADDRESS'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='talloc-context' doc='Show talloc memory hierarchy' />
+ <param name='application' doc='Application&apos;s context' />
+ <param name='all' doc='All contexts, if NULL-context tracking is enabled' />
+ <param name='full' doc='Display a full talloc memory hierarchy' />
+ <param name='brief' doc='Display a brief talloc memory hierarchy' />
+ <param name='DEPTH' doc='Specify required maximal depth value' />
+ <param name='tree' doc='Display only a specific memory chunk' />
+ <param name='ADDRESS' doc='Chunk address (e.g. 0xdeadbeef)' />
+ </params>
+ </command>
+ <command id='show talloc-context (application|all) (full|brief|DEPTH) filter REGEXP'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='talloc-context' doc='Show talloc memory hierarchy' />
+ <param name='application' doc='Application&apos;s context' />
+ <param name='all' doc='All contexts, if NULL-context tracking is enabled' />
+ <param name='full' doc='Display a full talloc memory hierarchy' />
+ <param name='brief' doc='Display a brief talloc memory hierarchy' />
+ <param name='DEPTH' doc='Specify required maximal depth value' />
+ <param name='filter' doc='Filter chunks using regular expression' />
+ <param name='REGEXP' doc='Regular expression' />
+ </params>
+ </command>
+ <command id='show stats'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='stats' doc='Show statistical values' />
+ </params>
+ </command>
+ <command id='show stats level (global|peer|subscriber)'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='stats' doc='Show statistical values' />
+ <param name='level' doc='Set the maximum group level' />
+ <param name='global' doc='Show global groups only' />
+ <param name='peer' doc='Show global and network peer related groups' />
+ <param name='subscriber' doc='Show global, peer, and subscriber groups' />
+ </params>
+ </command>
+ <command id='show asciidoc counters'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='asciidoc' doc='Asciidoc generation' />
+ <param name='counters' doc='Generate table of all registered counters' />
+ </params>
+ </command>
+ <command id='show rate-counters'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='rate-counters' doc='Show all rate counters' />
+ </params>
+ </command>
+ <command id='show gbproxy [stats]'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='gbproxy' doc='Display information about the Gb proxy' />
+ <param name='[stats]' doc='Show statistics' />
+ </params>
+ </command>
+ <command id='show gbproxy links'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='gbproxy' doc='Display information about the Gb proxy' />
+ <param name='links' doc='Show logical links' />
+ </params>
+ </command>
+ <command id='show ns'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='ns' doc='Display information about the NS protocol' />
+ </params>
+ </command>
+ <command id='show ns stats'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='ns' doc='Display information about the NS protocol' />
+ <param name='stats' doc='Include statistics' />
+ </params>
+ </command>
+ <command id='show ns persistent'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='ns' doc='Display information about the NS protocol' />
+ <param name='persistent' doc='Show only persistent NS' />
+ </params>
+ </command>
+ <command id='show ns (nsei|nsvc) &lt;0-65535&gt; [stats]'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='ns' doc='Display information about the NS protocol' />
+ <param name='nsei' doc='Select one NSE by its NSE Identifier' />
+ <param name='nsvc' doc='Select one NSE by its NS-VC Identifier' />
+ <param name='&lt;0-65535&gt;' doc='The Identifier of selected type' />
+ <param name='[stats]' doc='Include Statistics' />
+ </params>
+ </command>
+ <command id='logging filter nsvc (nsei|nsvci) &lt;0-65535&gt;'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='filter' doc='Filter log messages' />
+ <param name='nsvc' doc='Filter based on NS Virtual Connection' />
+ <param name='nsei' doc='Identify NS-VC by NSEI' />
+ <param name='nsvci' doc='Identify NS-VC by NSVCI' />
+ <param name='&lt;0-65535&gt;' doc='Numeric identifier' />
+ </params>
+ </command>
+ </node>
+ <node id='enable'>
+ <name>enable</name>
+ <command id='disable'>
+ <params>
+ <param name='disable' doc='Turn off privileged mode command' />
+ </params>
+ </command>
+ <command id='configure terminal'>
+ <params>
+ <param name='configure' doc='Configuration from vty interface' />
+ <param name='terminal' doc='Configuration terminal' />
+ </params>
+ </command>
+ <command id='copy running-config startup-config'>
+ <params>
+ <param name='copy' doc='Copy configuration' />
+ <param name='running-config' doc='Copy running config to... ' />
+ <param name='startup-config' doc='Copy running config to startup config (same as write file)' />
+ </params>
+ </command>
+ <command id='show startup-config'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='startup-config' doc='Contentes of startup configuration' />
+ </params>
+ </command>
+ <command id='show version'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='version' doc='Displays program version' />
+ </params>
+ </command>
+ <command id='show online-help'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='online-help' doc='Online help' />
+ </params>
+ </command>
+ <command id='terminal length &lt;0-512&gt;'>
+ <params>
+ <param name='terminal' doc='Set terminal line parameters' />
+ <param name='length' doc='Set number of lines on a screen' />
+ <param name='&lt;0-512&gt;' doc='Number of lines on screen (0 for no pausing)' />
+ </params>
+ </command>
+ <command id='terminal no length'>
+ <params>
+ <param name='terminal' doc='Set terminal line parameters' />
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='length' doc='Set number of lines on a screen' />
+ </params>
+ </command>
+ <command id='who'>
+ <params>
+ <param name='who' doc='Display who is on vty' />
+ </params>
+ </command>
+ <command id='show history'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='history' doc='Display the session command history' />
+ </params>
+ </command>
+ <command id='terminal monitor'>
+ <params>
+ <param name='terminal' doc='Set terminal line parameters' />
+ <param name='monitor' doc='Copy debug output to the current terminal line' />
+ </params>
+ </command>
+ <command id='terminal no monitor'>
+ <params>
+ <param name='terminal' doc='Set terminal line parameters' />
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='monitor' doc='Copy debug output to the current terminal line' />
+ </params>
+ </command>
+ <command id='logging enable'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='enable' doc='Enables logging to this vty' />
+ </params>
+ </command>
+ <command id='logging disable'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='disable' doc='Disables logging to this vty' />
+ </params>
+ </command>
+ <command id='logging filter all (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='filter' doc='Filter log messages' />
+ <param name='all' doc='Do you want to log all messages?' />
+ <param name='0' doc='Only print messages matched by other filters' />
+ <param name='1' doc='Bypass filter and print all messages' />
+ </params>
+ </command>
+ <command id='logging color (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='color' doc='Configure color-printing for log messages' />
+ <param name='0' doc='Don&apos;t use color for printing messages' />
+ <param name='1' doc='Use color for printing messages' />
+ </params>
+ </command>
+ <command id='logging timestamp (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='timestamp' doc='Configure log message timestamping' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with current timestamp' />
+ </params>
+ </command>
+ <command id='logging print extended-timestamp (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='extended-timestamp' doc='Configure log message timestamping' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with current timestamp with YYYYMMDDhhmmssnnn' />
+ </params>
+ </command>
+ <command id='logging print category (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='category' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with category/subsystem name' />
+ </params>
+ </command>
+ <command id='logging print category-hex (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='category-hex' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with category/subsystem nr in hex (&apos;&lt;000b&gt;&apos;)' />
+ </params>
+ </command>
+ <command id='logging print level (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='level' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with the log level name' />
+ </params>
+ </command>
+ <command id='logging print file (0|1|basename) [last]'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='file' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with the source file and line' />
+ <param name='basename' doc='Prefix each log message with the source file&apos;s basename (strip leading paths) and line' />
+ <param name='[last]' doc='Log source file info at the end of a log line. If omitted, log source file info just before the log text.' />
+ </params>
+ </command>
+ <command id='logging set-log-mask MASK'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='set-log-mask' doc='Set the logmask of this logging target' />
+ <param name='MASK' doc='List of logging categories to log, e.g. &apos;abc:mno:xyz&apos;. Available log categories depend on the specific application, refer to the &apos;logging level&apos; command. Optionally add individual log levels like &apos;abc,1:mno,3:xyz,5&apos;, where the level numbers are LOGL_DEBUG=1 LOGL_INFO=3 LOGL_NOTICE=5 LOGL_ERROR=7 LOGL_FATAL=8' />
+ </params>
+ </command>
+ <command id='logging level (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='gprs' doc='GPRS Packet Service' />
+ <param name='ns' doc='GPRS Network Service (NS)' />
+ <param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
+ <param name='lglobal' doc='Library-internal global log family' />
+ <param name='llapd' doc='LAPD in libosmogsm' />
+ <param name='linp' doc='A-bis Intput Subsystem' />
+ <param name='lmux' doc='A-bis B-Subchannel TRAU Frame Multiplex' />
+ <param name='lmi' doc='A-bis Input Driver for Signalling' />
+ <param name='lmib' doc='A-bis Input Driver for B-Channels (voice)' />
+ <param name='lsms' doc='Layer3 Short Message Service (SMS)' />
+ <param name='lctrl' doc='Control Interface' />
+ <param name='lgtp' doc='GPRS GTP library' />
+ <param name='lstats' doc='Statistics messages and logging' />
+ <param name='lgsup' doc='Generic Subscriber Update Protocol' />
+ <param name='loap' doc='Osmocom Authentication Protocol' />
+ <param name='lss7' doc='libosmo-sigtran Signalling System 7' />
+ <param name='lsccp' doc='libosmo-sigtran SCCP Implementation' />
+ <param name='lsua' doc='libosmo-sigtran SCCP User Adaptation' />
+ <param name='lm3ua' doc='libosmo-sigtran MTP3 User Adaptation' />
+ <param name='lmgcp' doc='libosmo-mgcp Media Gateway Control Protocol' />
+ <param name='ljibuf' doc='libosmo-netif Jitter Buffer' />
+ <param name='lrspro' doc='Remote SIM protocol' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ </params>
+ </command>
+ <command id='logging level set-all (debug|info|notice|error|fatal)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='set-all' doc='Once-off set all categories to the given log level. There is no single command to take back these changes -- each category is set to the given level, period.' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ </params>
+ </command>
+ <command id='logging level force-all (debug|info|notice|error|fatal)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='force-all' doc='Globally force all logging categories to a specific level. This is released by the &apos;no logging level force-all&apos; command. Note: any &apos;logging level &lt;category&gt; &lt;level&gt;&apos; commands will have no visible effect after this, until the forced level is released.' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ </params>
+ </command>
+ <command id='no logging level force-all'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='force-all' doc='Release any globally forced log level set with &apos;logging level force-all &lt;level&gt;&apos;' />
+ </params>
+ </command>
+ <command id='logp (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal) .LOGMESSAGE'>
+ <params>
+ <param name='logp' doc='Print a message on all log outputs; useful for placing markers in test logs' />
+ <param name='gprs' doc='GPRS Packet Service' />
+ <param name='ns' doc='GPRS Network Service (NS)' />
+ <param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
+ <param name='lglobal' doc='Library-internal global log family' />
+ <param name='llapd' doc='LAPD in libosmogsm' />
+ <param name='linp' doc='A-bis Intput Subsystem' />
+ <param name='lmux' doc='A-bis B-Subchannel TRAU Frame Multiplex' />
+ <param name='lmi' doc='A-bis Input Driver for Signalling' />
+ <param name='lmib' doc='A-bis Input Driver for B-Channels (voice)' />
+ <param name='lsms' doc='Layer3 Short Message Service (SMS)' />
+ <param name='lctrl' doc='Control Interface' />
+ <param name='lgtp' doc='GPRS GTP library' />
+ <param name='lstats' doc='Statistics messages and logging' />
+ <param name='lgsup' doc='Generic Subscriber Update Protocol' />
+ <param name='loap' doc='Osmocom Authentication Protocol' />
+ <param name='lss7' doc='libosmo-sigtran Signalling System 7' />
+ <param name='lsccp' doc='libosmo-sigtran SCCP Implementation' />
+ <param name='lsua' doc='libosmo-sigtran SCCP User Adaptation' />
+ <param name='lm3ua' doc='libosmo-sigtran MTP3 User Adaptation' />
+ <param name='lmgcp' doc='libosmo-mgcp Media Gateway Control Protocol' />
+ <param name='ljibuf' doc='libosmo-netif Jitter Buffer' />
+ <param name='lrspro' doc='Remote SIM protocol' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ <param name='.LOGMESSAGE' doc='Arbitrary message to log on given category and log level' />
+ </params>
+ </command>
+ <command id='show logging vty'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='logging' doc='Show current logging configuration' />
+ <param name='vty' doc='Show current logging configuration for this vty' />
+ </params>
+ </command>
+ <command id='show alarms'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='alarms' doc='Show current logging configuration' />
+ </params>
+ </command>
+ <command id='show talloc-context (application|all) (full|brief|DEPTH)'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='talloc-context' doc='Show talloc memory hierarchy' />
+ <param name='application' doc='Application&apos;s context' />
+ <param name='all' doc='All contexts, if NULL-context tracking is enabled' />
+ <param name='full' doc='Display a full talloc memory hierarchy' />
+ <param name='brief' doc='Display a brief talloc memory hierarchy' />
+ <param name='DEPTH' doc='Specify required maximal depth value' />
+ </params>
+ </command>
+ <command id='show talloc-context (application|all) (full|brief|DEPTH) tree ADDRESS'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='talloc-context' doc='Show talloc memory hierarchy' />
+ <param name='application' doc='Application&apos;s context' />
+ <param name='all' doc='All contexts, if NULL-context tracking is enabled' />
+ <param name='full' doc='Display a full talloc memory hierarchy' />
+ <param name='brief' doc='Display a brief talloc memory hierarchy' />
+ <param name='DEPTH' doc='Specify required maximal depth value' />
+ <param name='tree' doc='Display only a specific memory chunk' />
+ <param name='ADDRESS' doc='Chunk address (e.g. 0xdeadbeef)' />
+ </params>
+ </command>
+ <command id='show talloc-context (application|all) (full|brief|DEPTH) filter REGEXP'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='talloc-context' doc='Show talloc memory hierarchy' />
+ <param name='application' doc='Application&apos;s context' />
+ <param name='all' doc='All contexts, if NULL-context tracking is enabled' />
+ <param name='full' doc='Display a full talloc memory hierarchy' />
+ <param name='brief' doc='Display a brief talloc memory hierarchy' />
+ <param name='DEPTH' doc='Specify required maximal depth value' />
+ <param name='filter' doc='Filter chunks using regular expression' />
+ <param name='REGEXP' doc='Regular expression' />
+ </params>
+ </command>
+ <command id='show stats'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='stats' doc='Show statistical values' />
+ </params>
+ </command>
+ <command id='show stats level (global|peer|subscriber)'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='stats' doc='Show statistical values' />
+ <param name='level' doc='Set the maximum group level' />
+ <param name='global' doc='Show global groups only' />
+ <param name='peer' doc='Show global and network peer related groups' />
+ <param name='subscriber' doc='Show global, peer, and subscriber groups' />
+ </params>
+ </command>
+ <command id='show asciidoc counters'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='asciidoc' doc='Asciidoc generation' />
+ <param name='counters' doc='Generate table of all registered counters' />
+ </params>
+ </command>
+ <command id='show rate-counters'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='rate-counters' doc='Show all rate counters' />
+ </params>
+ </command>
+ <command id='show gbproxy [stats]'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='gbproxy' doc='Display information about the Gb proxy' />
+ <param name='[stats]' doc='Show statistics' />
+ </params>
+ </command>
+ <command id='show gbproxy links'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='gbproxy' doc='Display information about the Gb proxy' />
+ <param name='links' doc='Show logical links' />
+ </params>
+ </command>
+ <command id='delete-gbproxy-peer &lt;0-65534&gt; bvci &lt;2-65534&gt;'>
+ <params>
+ <param name='delete-gbproxy-peer' doc='Delete a GBProxy peer by NSEI and optionally BVCI' />
+ <param name='&lt;0-65534&gt;' doc='NSEI number' />
+ <param name='bvci' doc='Only delete peer with a matching BVCI' />
+ <param name='&lt;2-65534&gt;' doc='BVCI number' />
+ </params>
+ </command>
+ <command id='delete-gbproxy-peer &lt;0-65534&gt; (only-bvc|only-nsvc|all) [dry-run]'>
+ <params>
+ <param name='delete-gbproxy-peer' doc='Delete a GBProxy peer by NSEI and optionally BVCI' />
+ <param name='&lt;0-65534&gt;' doc='NSEI number' />
+ <param name='only-bvc' doc='Only delete BSSGP connections (BVC)' />
+ <param name='only-nsvc' doc='Only delete dynamic NS connections (NS-VC)' />
+ <param name='all' doc='Delete BVC and dynamic NS connections' />
+ <param name='[dry-run]' doc='Show what would be deleted instead of actually deleting' />
+ </params>
+ </command>
+ <command id='delete-gbproxy-link &lt;0-65534&gt; (tlli|imsi|sgsn-nsei) IDENT'>
+ <params>
+ <param name='delete-gbproxy-link' doc='Delete a GBProxy logical link entry by NSEI and identification' />
+ <param name='&lt;0-65534&gt;' doc='NSEI number' />
+ <param name='tlli' doc='Delete entries with a matching TLLI (hex)' />
+ <param name='imsi' doc='Delete entries with a matching IMSI' />
+ <param name='sgsn-nsei' doc='Delete entries with a matching SGSN NSEI' />
+ <param name='IDENT' doc='Identification to match' />
+ </params>
+ </command>
+ <command id='delete-gbproxy-link &lt;0-65534&gt; (stale|de-registered)'>
+ <params>
+ <param name='delete-gbproxy-link' doc='Delete a GBProxy logical link entry by NSEI and identification' />
+ <param name='&lt;0-65534&gt;' doc='NSEI number' />
+ <param name='stale' doc='Delete stale entries' />
+ <param name='de-registered' doc='Delete de-registered entries' />
+ </params>
+ </command>
+ <command id='show ns'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='ns' doc='Display information about the NS protocol' />
+ </params>
+ </command>
+ <command id='show ns stats'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='ns' doc='Display information about the NS protocol' />
+ <param name='stats' doc='Include statistics' />
+ </params>
+ </command>
+ <command id='show ns persistent'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='ns' doc='Display information about the NS protocol' />
+ <param name='persistent' doc='Show only persistent NS' />
+ </params>
+ </command>
+ <command id='show ns (nsei|nsvc) &lt;0-65535&gt; [stats]'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='ns' doc='Display information about the NS protocol' />
+ <param name='nsei' doc='Select one NSE by its NSE Identifier' />
+ <param name='nsvc' doc='Select one NSE by its NS-VC Identifier' />
+ <param name='&lt;0-65535&gt;' doc='The Identifier of selected type' />
+ <param name='[stats]' doc='Include Statistics' />
+ </params>
+ </command>
+ <command id='logging filter nsvc (nsei|nsvci) &lt;0-65535&gt;'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='filter' doc='Filter log messages' />
+ <param name='nsvc' doc='Filter based on NS Virtual Connection' />
+ <param name='nsei' doc='Identify NS-VC by NSEI' />
+ <param name='nsvci' doc='Identify NS-VC by NSVCI' />
+ <param name='&lt;0-65535&gt;' doc='Numeric identifier' />
+ </params>
+ </command>
+ <command id='nsvc (nsei|nsvci) &lt;0-65535&gt; (block|unblock|reset)'>
+ <params>
+ <param name='nsvc' doc='Perform an operation on a NSVC' />
+ <param name='nsei' doc='NSEI to identify NS-VC Identifier (NS-VCI)' />
+ <param name='nsvci' doc='NS-VC Identifier (NS-VCI)' />
+ <param name='&lt;0-65535&gt;' doc='The NSEI' />
+ <param name='block' doc='Initiate BLOCK procedure' />
+ <param name='unblock' doc='Initiate UNBLOCK procedure' />
+ <param name='reset' doc='Initiate RESET procedure' />
+ </params>
+ </command>
+ </node>
+ <node id='config'>
+ <name>config</name>
+ <command id='hostname WORD'>
+ <params>
+ <param name='hostname' doc='Set system&apos;s network name' />
+ <param name='WORD' doc='This system&apos;s network name' />
+ </params>
+ </command>
+ <command id='no hostname [HOSTNAME]'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='hostname' doc='Reset system&apos;s network name' />
+ <param name='[HOSTNAME]' doc='Host name of this router' />
+ </params>
+ </command>
+ <command id='password (8|) WORD'>
+ <params>
+ <param name='password' doc='Assign the terminal connection password' />
+ <param name='8' doc='Specifies a HIDDEN password will follow' />
+ <param name='' doc='dummy string ' />
+ <param name='WORD' doc='The HIDDEN line password string' />
+ </params>
+ </command>
+ <command id='password LINE'>
+ <params>
+ <param name='password' doc='Assign the terminal connection password' />
+ <param name='LINE' doc='The UNENCRYPTED (cleartext) line password' />
+ </params>
+ </command>
+ <command id='enable password (8|) WORD'>
+ <params>
+ <param name='enable' doc='Modify enable password parameters' />
+ <param name='password' doc='Assign the privileged level password' />
+ <param name='8' doc='Specifies a HIDDEN password will follow' />
+ <param name='' doc='dummy string ' />
+ <param name='WORD' doc='The HIDDEN &apos;enable&apos; password string' />
+ </params>
+ </command>
+ <command id='enable password LINE'>
+ <params>
+ <param name='enable' doc='Modify enable password parameters' />
+ <param name='password' doc='Assign the privileged level password' />
+ <param name='LINE' doc='The UNENCRYPTED (cleartext) &apos;enable&apos; password' />
+ </params>
+ </command>
+ <command id='no enable password'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='enable' doc='Modify enable password parameters' />
+ <param name='password' doc='Assign the privileged level password' />
+ </params>
+ </command>
+ <command id='banner motd default'>
+ <params>
+ <param name='banner' doc='Set banner string' />
+ <param name='motd' doc='Strings for motd' />
+ <param name='default' doc='Default string' />
+ </params>
+ </command>
+ <command id='banner motd file [FILE]'>
+ <params>
+ <param name='banner' doc='Set banner' />
+ <param name='motd' doc='Banner for motd' />
+ <param name='file' doc='Banner from a file' />
+ <param name='[FILE]' doc='Filename' />
+ </params>
+ </command>
+ <command id='no banner motd'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='banner' doc='Set banner string' />
+ <param name='motd' doc='Strings for motd' />
+ </params>
+ </command>
+ <command id='service terminal-length &lt;0-512&gt;'>
+ <params>
+ <param name='service' doc='Set up miscellaneous service' />
+ <param name='terminal-length' doc='System wide terminal length configuration' />
+ <param name='&lt;0-512&gt;' doc='Number of lines of VTY (0 means no line control)' />
+ </params>
+ </command>
+ <command id='no service terminal-length [&lt;0-512&gt;]'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='service' doc='Set up miscellaneous service' />
+ <param name='terminal-length' doc='System wide terminal length configuration' />
+ <param name='[&lt;0-512&gt;]' doc='Number of lines of VTY (0 means no line control)' />
+ </params>
+ </command>
+ <command id='line vty'>
+ <params>
+ <param name='line' doc='Configure a terminal line' />
+ <param name='vty' doc='Virtual terminal' />
+ </params>
+ </command>
+ <command id='service advanced-vty'>
+ <params>
+ <param name='service' doc='Set up miscellaneous service' />
+ <param name='advanced-vty' doc='Enable advanced mode vty interface' />
+ </params>
+ </command>
+ <command id='no service advanced-vty'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='service' doc='Set up miscellaneous service' />
+ <param name='advanced-vty' doc='Enable advanced mode vty interface' />
+ </params>
+ </command>
+ <command id='show history'>
+ <params>
+ <param name='show' doc='Show running system information' />
+ <param name='history' doc='Display the session command history' />
+ </params>
+ </command>
+ <command id='log stderr'>
+ <params>
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='stderr' doc='Logging via STDERR of the process' />
+ </params>
+ </command>
+ <command id='no log stderr'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='stderr' doc='Logging via STDERR of the process' />
+ </params>
+ </command>
+ <command id='log file .FILENAME'>
+ <params>
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='file' doc='Logging to text file' />
+ <param name='.FILENAME' doc='Filename' />
+ </params>
+ </command>
+ <command id='no log file .FILENAME'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='file' doc='Logging to text file' />
+ <param name='.FILENAME' doc='Filename' />
+ </params>
+ </command>
+ <command id='log alarms &lt;2-32700&gt;'>
+ <params>
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='alarms' doc='Logging alarms to osmo_strrb' />
+ <param name='&lt;2-32700&gt;' doc='Maximum number of messages to log' />
+ </params>
+ </command>
+ <command id='no log alarms'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='alarms' doc='Logging alarms to osmo_strrb' />
+ </params>
+ </command>
+ <command id='log syslog (authpriv|cron|daemon|ftp|lpr|mail|news|user|uucp)'>
+ <params>
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='syslog' doc='Logging via syslog' />
+ <param name='authpriv' doc='Security/authorization messages facility' />
+ <param name='cron' doc='Clock daemon (cron/at) facility' />
+ <param name='daemon' doc='General system daemon facility' />
+ <param name='ftp' doc='Ftp daemon facility' />
+ <param name='lpr' doc='Line printer facility' />
+ <param name='mail' doc='Mail facility' />
+ <param name='news' doc='News facility' />
+ <param name='user' doc='Generic facility' />
+ <param name='uucp' doc='UUCP facility' />
+ </params>
+ </command>
+ <command id='log syslog local &lt;0-7&gt;'>
+ <params>
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='syslog' doc='Logging via syslog' />
+ <param name='local' doc='Syslog LOCAL facility' />
+ <param name='&lt;0-7&gt;' doc='Local facility number' />
+ </params>
+ </command>
+ <command id='no log syslog'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='syslog' doc='Logging via syslog' />
+ </params>
+ </command>
+ <command id='log gsmtap [HOSTNAME]'>
+ <params>
+ <param name='log' doc='Configure logging sub-system' />
+ <param name='gsmtap' doc='Logging via GSMTAP' />
+ <param name='[HOSTNAME]' doc='Host name to send the GSMTAP logging to (UDP port 4729)' />
+ </params>
+ </command>
+ <command id='stats reporter statsd'>
+ <params>
+ <param name='stats' doc='Configure stats sub-system' />
+ <param name='reporter' doc='Configure a stats reporter' />
+ <param name='statsd' doc='Report to a STATSD server' />
+ </params>
+ </command>
+ <command id='no stats reporter statsd'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='stats' doc='Configure stats sub-system' />
+ <param name='reporter' doc='Configure a stats reporter' />
+ <param name='statsd' doc='Report to a STATSD server' />
+ </params>
+ </command>
+ <command id='stats reporter log'>
+ <params>
+ <param name='stats' doc='Configure stats sub-system' />
+ <param name='reporter' doc='Configure a stats reporter' />
+ <param name='log' doc='Report to the logger' />
+ </params>
+ </command>
+ <command id='no stats reporter log'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='stats' doc='Configure stats sub-system' />
+ <param name='reporter' doc='Configure a stats reporter' />
+ <param name='log' doc='Report to the logger' />
+ </params>
+ </command>
+ <command id='stats interval &lt;1-65535&gt;'>
+ <params>
+ <param name='stats' doc='Configure stats sub-system' />
+ <param name='interval' doc='Set the reporting interval' />
+ <param name='&lt;1-65535&gt;' doc='Interval in seconds' />
+ </params>
+ </command>
+ <command id='gbproxy'>
+ <params>
+ <param name='gbproxy' doc='Configure the Gb proxy' />
+ </params>
+ </command>
+ <command id='ns'>
+ <params>
+ <param name='ns' doc='Configure the GPRS Network Service' />
+ </params>
+ </command>
+ </node>
+ <node id='config-log'>
+ <name>config-log</name>
+ <command id='logging filter all (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='filter' doc='Filter log messages' />
+ <param name='all' doc='Do you want to log all messages?' />
+ <param name='0' doc='Only print messages matched by other filters' />
+ <param name='1' doc='Bypass filter and print all messages' />
+ </params>
+ </command>
+ <command id='logging color (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='color' doc='Configure color-printing for log messages' />
+ <param name='0' doc='Don&apos;t use color for printing messages' />
+ <param name='1' doc='Use color for printing messages' />
+ </params>
+ </command>
+ <command id='logging timestamp (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='timestamp' doc='Configure log message timestamping' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with current timestamp' />
+ </params>
+ </command>
+ <command id='logging print extended-timestamp (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='extended-timestamp' doc='Configure log message timestamping' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with current timestamp with YYYYMMDDhhmmssnnn' />
+ </params>
+ </command>
+ <command id='logging print category (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='category' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with category/subsystem name' />
+ </params>
+ </command>
+ <command id='logging print category-hex (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='category-hex' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with category/subsystem nr in hex (&apos;&lt;000b&gt;&apos;)' />
+ </params>
+ </command>
+ <command id='logging print level (0|1)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='level' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with the log level name' />
+ </params>
+ </command>
+ <command id='logging print file (0|1|basename) [last]'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='print' doc='Log output settings' />
+ <param name='file' doc='Configure log message' />
+ <param name='0' doc='Don&apos;t prefix each log message' />
+ <param name='1' doc='Prefix each log message with the source file and line' />
+ <param name='basename' doc='Prefix each log message with the source file&apos;s basename (strip leading paths) and line' />
+ <param name='[last]' doc='Log source file info at the end of a log line. If omitted, log source file info just before the log text.' />
+ </params>
+ </command>
+ <command id='logging level (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='gprs' doc='GPRS Packet Service' />
+ <param name='ns' doc='GPRS Network Service (NS)' />
+ <param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
+ <param name='lglobal' doc='Library-internal global log family' />
+ <param name='llapd' doc='LAPD in libosmogsm' />
+ <param name='linp' doc='A-bis Intput Subsystem' />
+ <param name='lmux' doc='A-bis B-Subchannel TRAU Frame Multiplex' />
+ <param name='lmi' doc='A-bis Input Driver for Signalling' />
+ <param name='lmib' doc='A-bis Input Driver for B-Channels (voice)' />
+ <param name='lsms' doc='Layer3 Short Message Service (SMS)' />
+ <param name='lctrl' doc='Control Interface' />
+ <param name='lgtp' doc='GPRS GTP library' />
+ <param name='lstats' doc='Statistics messages and logging' />
+ <param name='lgsup' doc='Generic Subscriber Update Protocol' />
+ <param name='loap' doc='Osmocom Authentication Protocol' />
+ <param name='lss7' doc='libosmo-sigtran Signalling System 7' />
+ <param name='lsccp' doc='libosmo-sigtran SCCP Implementation' />
+ <param name='lsua' doc='libosmo-sigtran SCCP User Adaptation' />
+ <param name='lm3ua' doc='libosmo-sigtran MTP3 User Adaptation' />
+ <param name='lmgcp' doc='libosmo-mgcp Media Gateway Control Protocol' />
+ <param name='ljibuf' doc='libosmo-netif Jitter Buffer' />
+ <param name='lrspro' doc='Remote SIM protocol' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ </params>
+ </command>
+ <command id='logging level set-all (debug|info|notice|error|fatal)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='set-all' doc='Once-off set all categories to the given log level. There is no single command to take back these changes -- each category is set to the given level, period.' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ </params>
+ </command>
+ <command id='logging level force-all (debug|info|notice|error|fatal)'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='force-all' doc='Globally force all logging categories to a specific level. This is released by the &apos;no logging level force-all&apos; command. Note: any &apos;logging level &lt;category&gt; &lt;level&gt;&apos; commands will have no visible effect after this, until the forced level is released.' />
+ <param name='debug' doc='Log debug messages and higher levels' />
+ <param name='info' doc='Log informational messages and higher levels' />
+ <param name='notice' doc='Log noticeable messages and higher levels' />
+ <param name='error' doc='Log error messages and higher levels' />
+ <param name='fatal' doc='Log only fatal messages' />
+ </params>
+ </command>
+ <command id='no logging level force-all'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='logging' doc='Configure logging' />
+ <param name='level' doc='Set the log level for a specified category' />
+ <param name='force-all' doc='Release any globally forced log level set with &apos;logging level force-all &lt;level&gt;&apos;' />
+ </params>
+ </command>
+ <command id='logging filter nsvc (nsei|nsvci) &lt;0-65535&gt;'>
+ <params>
+ <param name='logging' doc='Configure logging' />
+ <param name='filter' doc='Filter log messages' />
+ <param name='nsvc' doc='Filter based on NS Virtual Connection' />
+ <param name='nsei' doc='Identify NS-VC by NSEI' />
+ <param name='nsvci' doc='Identify NS-VC by NSVCI' />
+ <param name='&lt;0-65535&gt;' doc='Numeric identifier' />
+ </params>
+ </command>
+ </node>
+ <node id='config-stats'>
+ <name>config-stats</name>
+ <command id='local-ip ADDR'>
+ <params>
+ <param name='local-ip' doc='Set the IP address to which we bind locally' />
+ <param name='ADDR' doc='IP Address' />
+ </params>
+ </command>
+ <command id='no local-ip'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='local-ip' doc='Set the IP address to which we bind locally' />
+ </params>
+ </command>
+ <command id='remote-ip ADDR'>
+ <params>
+ <param name='remote-ip' doc='Set the remote IP address to which we connect' />
+ <param name='ADDR' doc='IP Address' />
+ </params>
+ </command>
+ <command id='remote-port &lt;1-65535&gt;'>
+ <params>
+ <param name='remote-port' doc='Set the remote port to which we connect' />
+ <param name='&lt;1-65535&gt;' doc='Remote port number' />
+ </params>
+ </command>
+ <command id='mtu &lt;100-65535&gt;'>
+ <params>
+ <param name='mtu' doc='Set the maximum packet size' />
+ <param name='&lt;100-65535&gt;' doc='Size in byte' />
+ </params>
+ </command>
+ <command id='no mtu'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='mtu' doc='Set the maximum packet size' />
+ </params>
+ </command>
+ <command id='prefix PREFIX'>
+ <params>
+ <param name='prefix' doc='Set the item name prefix' />
+ <param name='PREFIX' doc='The prefix string' />
+ </params>
+ </command>
+ <command id='no prefix'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='prefix' doc='Set the item name prefix' />
+ </params>
+ </command>
+ <command id='level (global|peer|subscriber)'>
+ <params>
+ <param name='level' doc='Set the maximum group level' />
+ <param name='global' doc='Report global groups only' />
+ <param name='peer' doc='Report global and network peer related groups' />
+ <param name='subscriber' doc='Report global, peer, and subscriber groups' />
+ </params>
+ </command>
+ <command id='enable'>
+ <params>
+ <param name='enable' doc='Enable the reporter' />
+ </params>
+ </command>
+ <command id='disable'>
+ <params>
+ <param name='disable' doc='Disable the reporter' />
+ </params>
+ </command>
+ </node>
+ <node id='config-line'>
+ <name>config-line</name>
+ <command id='login'>
+ <params>
+ <param name='login' doc='Enable password checking' />
+ </params>
+ </command>
+ <command id='no login'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='login' doc='Enable password checking' />
+ </params>
+ </command>
+ <command id='bind A.B.C.D [&lt;0-65535&gt;]'>
+ <params>
+ <param name='bind' doc='Accept VTY telnet connections on local interface' />
+ <param name='A.B.C.D' doc='Local interface IP address (default: 127.0.0.1)' />
+ <param name='[&lt;0-65535&gt;]' doc='Local TCP port number' />
+ </params>
+ </command>
+ </node>
+ <node id='config-ns'>
+ <name>config-ns</name>
+ <command id='nse &lt;0-65535&gt; nsvci &lt;0-65534&gt;'>
+ <params>
+ <param name='nse' doc='Persistent NS Entity' />
+ <param name='&lt;0-65535&gt;' doc='NS Entity ID (NSEI)' />
+ <param name='nsvci' doc='NS Virtual Connection' />
+ <param name='&lt;0-65534&gt;' doc='NS Virtual Connection ID (NSVCI)' />
+ </params>
+ </command>
+ <command id='nse &lt;0-65535&gt; remote-ip A.B.C.D'>
+ <params>
+ <param name='nse' doc='Persistent NS Entity' />
+ <param name='&lt;0-65535&gt;' doc='NS Entity ID (NSEI)' />
+ <param name='remote-ip' doc='Remote IP Address' />
+ <param name='A.B.C.D' doc='Remote IP Address' />
+ </params>
+ </command>
+ <command id='nse &lt;0-65535&gt; remote-port &lt;0-65535&gt;'>
+ <params>
+ <param name='nse' doc='Persistent NS Entity' />
+ <param name='&lt;0-65535&gt;' doc='NS Entity ID (NSEI)' />
+ <param name='remote-port' doc='Remote UDP Port' />
+ <param name='&lt;0-65535&gt;' doc='Remote UDP Port Number' />
+ </params>
+ </command>
+ <command id='nse &lt;0-65535&gt; fr-dlci &lt;16-1007&gt;'>
+ <params>
+ <param name='nse' doc='Persistent NS Entity' />
+ <param name='&lt;0-65535&gt;' doc='NS Entity ID (NSEI)' />
+ <param name='fr-dlci' doc='Frame Relay DLCI' />
+ <param name='&lt;16-1007&gt;' doc='Frame Relay DLCI Number' />
+ </params>
+ </command>
+ <command id='nse &lt;0-65535&gt; encapsulation (udp|framerelay-gre)'>
+ <params>
+ <param name='nse' doc='Persistent NS Entity' />
+ <param name='&lt;0-65535&gt;' doc='NS Entity ID (NSEI)' />
+ <param name='encapsulation' doc='Encapsulation for NS' />
+ <param name='udp' doc='UDP/IP Encapsulation' />
+ <param name='framerelay-gre' doc='Frame-Relay/GRE/IP Encapsulation' />
+ </params>
+ </command>
+ <command id='nse &lt;0-65535&gt; remote-role (sgsn|bss)'>
+ <params>
+ <param name='nse' doc='Persistent NS Entity' />
+ <param name='&lt;0-65535&gt;' doc='NS Entity ID (NSEI)' />
+ <param name='remote-role' doc='Remote NSE Role' />
+ <param name='sgsn' doc='Remote Peer is SGSN' />
+ <param name='bss' doc='Remote Peer is BSS' />
+ </params>
+ </command>
+ <command id='no nse &lt;0-65535&gt;'>
+ <params>
+ <param name='no' doc='Delete Persistent NS Entity' />
+ <param name='nse' doc='Delete Persistent NS Entity' />
+ <param name='&lt;0-65535&gt;' doc='NS Entity ID (NSEI)' />
+ </params>
+ </command>
+ <command id='timer (tns-block|tns-block-retries|tns-reset|tns-reset-retries|tns-test|tns-alive|tns-alive-retries|tsns-prov) &lt;0-65535&gt;'>
+ <params>
+ <param name='timer' doc='Network Service Timer' />
+ <param name='tns-block' doc='(un)blocking Timer (Tns-block) timeout' />
+ <param name='tns-block-retries' doc='(un)blocking Timer (Tns-block) number of retries' />
+ <param name='tns-reset' doc='Reset Timer (Tns-reset) timeout' />
+ <param name='tns-reset-retries' doc='Reset Timer (Tns-reset) number of retries' />
+ <param name='tns-test' doc='Test Timer (Tns-test) timeout' />
+ <param name='tns-alive' doc='Alive Timer (Tns-alive) timeout' />
+ <param name='tns-alive-retries' doc='Alive Timer (Tns-alive) number of retries' />
+ <param name='tsns-prov' doc='SNS Provision Timer (Tsns-prov) timeout' />
+ <param name='&lt;0-65535&gt;' doc='Timer Value' />
+ </params>
+ </command>
+ <command id='encapsulation udp local-ip A.B.C.D'>
+ <params>
+ <param name='encapsulation' doc='NS encapsulation options' />
+ <param name='udp' doc='NS over UDP Encapsulation' />
+ <param name='local-ip' doc='Set the IP address on which we listen for NS/UDP' />
+ <param name='A.B.C.D' doc='IP Address' />
+ </params>
+ </command>
+ <command id='encapsulation udp local-port &lt;0-65535&gt;'>
+ <params>
+ <param name='encapsulation' doc='NS encapsulation options' />
+ <param name='udp' doc='NS over UDP Encapsulation' />
+ <param name='local-port' doc='Set the UDP port on which we listen for NS/UDP' />
+ <param name='&lt;0-65535&gt;' doc='UDP port number' />
+ </params>
+ </command>
+ <command id='encapsulation udp dscp &lt;0-255&gt;'>
+ <params>
+ <param name='encapsulation' doc='NS encapsulation options' />
+ <param name='udp' doc='NS over UDP Encapsulation' />
+ <param name='dscp' doc='Set DSCP/TOS on the UDP socket' />
+ <param name='&lt;0-255&gt;' doc='DSCP Value' />
+ </params>
+ </command>
+ <command id='encapsulation framerelay-gre enabled (1|0)'>
+ <params>
+ <param name='encapsulation' doc='NS encapsulation options' />
+ <param name='framerelay-gre' doc='NS over Frame Relay over GRE Encapsulation' />
+ <param name='enabled' doc='Enable or disable Frame Relay over GRE' />
+ <param name='1' doc='Enable' />
+ <param name='0' doc='Disable' />
+ </params>
+ </command>
+ <command id='encapsulation framerelay-gre local-ip A.B.C.D'>
+ <params>
+ <param name='encapsulation' doc='NS encapsulation options' />
+ <param name='framerelay-gre' doc='NS over Frame Relay over GRE Encapsulation' />
+ <param name='local-ip' doc='Set the IP address on which we listen for NS/FR/GRE' />
+ <param name='A.B.C.D' doc='IP Address' />
+ </params>
+ </command>
+ </node>
+ <node id='config-gbproxy'>
+ <name>config-gbproxy</name>
+ <command id='sgsn nsei &lt;0-65534&gt;'>
+ <params>
+ <param name='sgsn' doc='SGSN information' />
+ <param name='nsei' doc='NSEI to be used in the connection with the SGSN' />
+ <param name='&lt;0-65534&gt;' doc='The NSEI' />
+ </params>
+ </command>
+ <command id='core-mobile-country-code &lt;1-999&gt;'>
+ <params>
+ <param name='core-mobile-country-code' doc='Use this country code for the core network' />
+ <param name='&lt;1-999&gt;' doc='MCC value' />
+ </params>
+ </command>
+ <command id='core-mobile-network-code &lt;1-999&gt;'>
+ <params>
+ <param name='core-mobile-network-code' doc='Use this network code for the core network' />
+ <param name='&lt;1-999&gt;' doc='NCC value' />
+ </params>
+ </command>
+ <command id='match-imsi (patching|routing) .REGEXP'>
+ <params>
+ <param name='match-imsi' doc='Restrict actions to certain IMSIs' />
+ <param name='patching' doc='Patch MS related information elements on match only' />
+ <param name='routing' doc='Route to the secondary SGSN on match only' />
+ <param name='.REGEXP' doc='Regular expression for the IMSI match' />
+ </params>
+ </command>
+ <command id='core-access-point-name (APN|none)'>
+ <params>
+ <param name='core-access-point-name' doc='Use this access point name (APN) for the backbone' />
+ <param name='APN' doc='Replace APN by this string' />
+ <param name='none' doc='Remove APN' />
+ </params>
+ </command>
+ <command id='secondary-sgsn nsei &lt;0-65534&gt;'>
+ <params>
+ <param name='secondary-sgsn' doc='Route matching LLC connections to a second SGSN (Experimental)' />
+ <param name='nsei' doc='NSEI to be used in the connection with the SGSN' />
+ <param name='&lt;0-65534&gt;' doc='The NSEI' />
+ </params>
+ </command>
+ <command id='patch-ptmsi'>
+ <params>
+ <param name='patch-ptmsi' doc='Patch P-TMSI/TLLI' />
+ </params>
+ </command>
+ <command id='acquire-imsi'>
+ <params>
+ <param name='acquire-imsi' doc='Acquire the IMSI before establishing a LLC connection (Experimental)' />
+ </params>
+ </command>
+ <command id='link-list clean-stale-timer &lt;1-999999&gt;'>
+ <params>
+ <param name='link-list' doc='Set TLLI list parameters' />
+ <param name='clean-stale-timer' doc='Periodic timer to clean stale links' />
+ <param name='&lt;1-999999&gt;' doc='Frequency at which the periodic timer is fired (in seconds)' />
+ </params>
+ </command>
+ <command id='link-list max-age &lt;1-999999&gt;'>
+ <params>
+ <param name='link-list' doc='Set TLLI list parameters' />
+ <param name='max-age' doc='Limit maximum age' />
+ <param name='&lt;1-999999&gt;' doc='Maximum age in seconds' />
+ </params>
+ </command>
+ <command id='link-list max-length &lt;1-99999&gt;'>
+ <params>
+ <param name='link-list' doc='Set TLLI list parameters' />
+ <param name='max-length' doc='Limit list length' />
+ <param name='&lt;1-99999&gt;' doc='Maximum number of logical links in the list' />
+ </params>
+ </command>
+ <command id='link-list keep-mode (never|re-attach|identified|always)'>
+ <params>
+ <param name='link-list' doc='Set TLLI list parameters' />
+ <param name='keep-mode' doc='How to keep entries for detached logical links' />
+ <param name='never' doc='Discard entry immediately after detachment' />
+ <param name='re-attach' doc='Keep entry if a re-attachment has be requested' />
+ <param name='identified' doc='Keep entry if it associated with an IMSI' />
+ <param name='always' doc='Don&apos;t discard entries after detachment' />
+ </params>
+ </command>
+ <command id='link stored-msgs-max-length &lt;1-99999&gt;'>
+ <params>
+ <param name='link' doc='Set TLLI parameters' />
+ <param name='stored-msgs-max-length' doc='Limit list length' />
+ <param name='&lt;1-99999&gt;' doc='Maximum number of msgb stored in the logical link waiting to acquire its IMSI' />
+ </params>
+ </command>
+ <command id='no core-mobile-country-code'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='core-mobile-country-code' doc='Use this country code for the core network' />
+ </params>
+ </command>
+ <command id='no core-mobile-network-code'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='core-mobile-network-code' doc='Use this network code for the core network' />
+ </params>
+ </command>
+ <command id='no match-imsi'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='match-imsi' doc='Restrict actions to certain IMSIs' />
+ </params>
+ </command>
+ <command id='no core-access-point-name'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='core-access-point-name' doc='Use this access point name (APN) for the backbone' />
+ </params>
+ </command>
+ <command id='no secondary-sgsn'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='secondary-sgsn' doc='Route matching LLC connections to a second SGSN (Experimental)' />
+ </params>
+ </command>
+ <command id='no patch-ptmsi'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='patch-ptmsi' doc='Patch P-TMSI/TLLI' />
+ </params>
+ </command>
+ <command id='no acquire-imsi'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='acquire-imsi' doc='Acquire the IMSI before establishing a LLC connection (Experimental)' />
+ </params>
+ </command>
+ <command id='no link-list clean-stale-timer'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='link-list' doc='Set TLLI list parameters' />
+ <param name='clean-stale-timer' doc='Periodic timer to clean stale links' />
+ </params>
+ </command>
+ <command id='no link-list max-age'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='link-list' doc='Set TLLI list parameters' />
+ <param name='max-age' doc='Limit maximum age' />
+ </params>
+ </command>
+ <command id='no link-list max-length'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='link-list' doc='Set TLLI list parameters' />
+ <param name='max-length' doc='Limit list length' />
+ </params>
+ </command>
+ <command id='no link stored-msgs-max-length'>
+ <params>
+ <param name='no' doc='Negate a command or set its defaults' />
+ <param name='link' doc='Set TLLI parameters' />
+ <param name='stored-msgs-max-length' doc='Limit list length' />
+ </params>
+ </command>
+ </node>
+</vtydoc>
diff --git a/include/osmocom/sgsn/gprs_sgsn.h b/include/osmocom/sgsn/gprs_sgsn.h
index 0a52a7df..289e0c47 100644
--- a/include/osmocom/sgsn/gprs_sgsn.h
+++ b/include/osmocom/sgsn/gprs_sgsn.h
@@ -257,15 +257,15 @@ static inline bool sgsn_mm_ctx_is_authenticated(struct sgsn_mm_ctx *ctx)
LOGP(DMM, level, "UE(%p){NOTSUPPORTED} " fmt, ue, ## args)
#endif
-#define LOGGBP(llme, level, fmt, args...) \
- LOGP(DMM, level, "LLME(%08x/%08x){%s} " fmt, (llme)->old_tlli, \
+#define LOGGBP(llme, category, level, fmt, args...) \
+ LOGP(category, level, "LLME(%08x/%08x){%s} " fmt, (llme)->old_tlli, \
(llme)->tlli, get_value_string_or_null(gprs_llc_llme_state_names, (llme)->state), ## args);
#define LOGGBIUP(llme, msg, level, fmt, args...) \
do { \
struct ranap_ue_conn_ctx * _ue; \
if (llme) { \
- LOGGBP(llme, level, fmt, ## args); \
+ LOGGBP(llme, DMM, level, fmt, ## args); \
} else if ((msg) && (_ue = MSG_IU_UE_CTX(msg))) { \
LOGIUP(_ue, level, fmt, ## args); \
} else { OSMO_ASSERT(0); } \
@@ -428,7 +428,7 @@ int sgsn_ctrl_cmds_install(void);
*/
struct imsi_acl_entry {
struct llist_head list;
- char imsi[16+1];
+ char imsi[OSMO_IMSI_BUF_SIZE];
};
/* see GSM 09.02, 17.7.1, PDP-Context and GPRSSubscriptionData */
diff --git a/include/osmocom/sgsn/sgsn.h b/include/osmocom/sgsn/sgsn.h
index e1c5c4af..f5ff524d 100644
--- a/include/osmocom/sgsn/sgsn.h
+++ b/include/osmocom/sgsn/sgsn.h
@@ -130,8 +130,6 @@ struct sgsn_instance {
struct osmo_fd gtp_fd0;
struct osmo_fd gtp_fd1c;
struct osmo_fd gtp_fd1u;
- /* Timer for libGTP */
- struct osmo_timer_list gtp_timer;
/* GSN instance for libgtp */
struct gsn_t *gsn;
/* Subscriber */
diff --git a/src/gbproxy/gb_proxy_main.c b/src/gbproxy/gb_proxy_main.c
index 4319fda6..8c839804 100644
--- a/src/gbproxy/gb_proxy_main.c
+++ b/src/gbproxy/gb_proxy_main.c
@@ -196,6 +196,11 @@ static void handle_options(int argc, char **argv)
break;
}
}
+
+ if (argc > optind) {
+ fprintf(stderr, "Unsupported positional arguments on command line\n");
+ exit(2);
+ }
}
int gbproxy_vty_is_config_node(struct vty *vty, int node)
diff --git a/src/gtphub/gtphub_main.c b/src/gtphub/gtphub_main.c
index f693f099..664c801e 100644
--- a/src/gtphub/gtphub_main.c
+++ b/src/gtphub/gtphub_main.c
@@ -322,6 +322,11 @@ static void handle_options(struct cmdline_cfg *ccfg, int argc, char **argv)
break;
}
}
+
+ if (argc > optind) {
+ fprintf(stderr, "Unsupported positional arguments on command line\n");
+ exit(2);
+ }
}
int main(int argc, char **argv)
diff --git a/src/sgsn/gprs_gmm.c b/src/sgsn/gprs_gmm.c
index b6b16854..f62d0d1f 100644
--- a/src/sgsn/gprs_gmm.c
+++ b/src/sgsn/gprs_gmm.c
@@ -1615,9 +1615,9 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg,
osmo_rai_name(&mmctx->ra));
/* mmctx is set to NULL and gprs_llgmm_unassign(llme) will be
called below, let's make sure we don't keep dangling llme
- pointers in mmctx (OS#3957). */
+ pointers in mmctx (OS#3957, OS#4245). */
if (mmctx->ran_type == MM_CTX_T_GERAN_Gb)
- OSMO_ASSERT(mmctx->gb.llme == NULL);
+ mmctx->gb.llme = NULL;
mmctx = NULL;
}
@@ -1625,8 +1625,8 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg,
if (llme) {
/* send a XID reset to re-set all LLC sequence numbers
* in the MS */
- LOGGBP(llme, LOGL_NOTICE, "LLC XID RESET\n");
- gprs_llgmm_reset(llme);
+ LOGGBP(llme, DMM, LOGL_NOTICE, "LLC XID RESET\n");
+ gprs_llgmm_reset_oldmsg(msg, GPRS_SAPI_GMM, llme);
}
/* The MS has to perform GPRS attach */
/* Device is still IMSI attached for CS but initiate GPRS ATTACH,
@@ -1905,7 +1905,7 @@ int gsm0408_rcv_gmm(struct sgsn_mm_ctx *mmctx, struct msgb *msg,
if (llme && !mmctx &&
gh->msg_type != GSM48_MT_GMM_ATTACH_REQ &&
gh->msg_type != GSM48_MT_GMM_RA_UPD_REQ) {
- LOGGBP(llme, LOGL_NOTICE, "Cannot handle GMM for unknown MM CTX\n");
+ LOGGBP(llme, DMM, LOGL_NOTICE, "Cannot handle GMM for unknown MM CTX\n");
/* 4.7.10 */
if (gh->msg_type == GSM48_MT_GMM_STATUS) {
/* TLLI unassignment */
diff --git a/src/sgsn/gprs_gmm_attach.c b/src/sgsn/gprs_gmm_attach.c
index 130f8d1c..c903a016 100644
--- a/src/sgsn/gprs_gmm_attach.c
+++ b/src/sgsn/gprs_gmm_attach.c
@@ -449,7 +449,7 @@ struct osmo_fsm gmm_attach_req_fsm = {
static __attribute__((constructor)) void gprs_gmm_fsm_init(void)
{
- osmo_fsm_register(&gmm_attach_req_fsm);
+ OSMO_ASSERT(osmo_fsm_register(&gmm_attach_req_fsm) == 0);
}
void gmm_att_req_free(struct sgsn_mm_ctx *mm) {
diff --git a/src/sgsn/gprs_gmm_fsm.c b/src/sgsn/gprs_gmm_fsm.c
index fac06f27..94ecb50e 100644
--- a/src/sgsn/gprs_gmm_fsm.c
+++ b/src/sgsn/gprs_gmm_fsm.c
@@ -183,5 +183,5 @@ struct osmo_fsm gmm_fsm = {
static __attribute__((constructor)) void gmm_fsm_init(void)
{
- osmo_fsm_register(&gmm_fsm);
+ OSMO_ASSERT(osmo_fsm_register(&gmm_fsm) == 0);
}
diff --git a/src/sgsn/gprs_llc.c b/src/sgsn/gprs_llc.c
index 2a27da84..6e22e65c 100644
--- a/src/sgsn/gprs_llc.c
+++ b/src/sgsn/gprs_llc.c
@@ -22,6 +22,7 @@
#include <errno.h>
#include <stdint.h>
#include <stdbool.h>
+#include <inttypes.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/linuxlist.h>
@@ -68,17 +69,20 @@ static int gprs_llc_generate_xid(uint8_t *bytes, int bytes_len,
struct gprs_llc_xid_field xid_version;
struct gprs_llc_xid_field xid_n201u;
struct gprs_llc_xid_field xid_n201i;
+ uint16_t n201_u, n201_i;
xid_version.type = GPRS_LLC_XID_T_VERSION;
xid_version.data = (uint8_t *) "\x00";
xid_version.data_len = 1;
+ n201_u = htons(lle->params.n201_u);
xid_n201u.type = GPRS_LLC_XID_T_N201_U;
- xid_n201u.data = (uint8_t *) "\x05\xf0";
+ xid_n201u.data = (uint8_t *) &n201_u;
xid_n201u.data_len = 2;
+ n201_i = htons(lle->params.n201_i);
xid_n201i.type = GPRS_LLC_XID_T_N201_I;
- xid_n201i.data = (uint8_t *) "\x05\xf0";
+ xid_n201i.data = (uint8_t *) &n201_i;
xid_n201i.data_len = 2;
/* Add locally managed XID Fields */
@@ -528,7 +532,7 @@ static struct gprs_llc_lle *lle_for_rx_by_tlli_sapi(const uint32_t tlli,
struct gprs_llc_llme *llme;
/* FIXME: don't use the TLLI but the 0xFFFF unassigned? */
llme = llme_alloc(tlli);
- LOGP(DLLC, LOGL_NOTICE, "LLC RX: unknown TLLI 0x%08x, "
+ LOGGBP(llme, DLLC, LOGL_NOTICE, "LLC RX: unknown TLLI 0x%08x, "
"creating LLME on the fly\n", tlli);
lle = &llme->lle[sapi];
return lle;
@@ -1047,6 +1051,10 @@ int gprs_llgmm_assign(struct gprs_llc_llme *llme,
uint32_t old_tlli, uint32_t new_tlli)
{
unsigned int i;
+ bool free = false;
+
+ LOGGBP(llme, DLLC, LOGL_NOTICE, "LLGM Assign pre (%08x => %08x)\n",
+ old_tlli, new_tlli);
if (old_tlli == TLLI_UNASSIGNED && new_tlli != TLLI_UNASSIGNED) {
/* TLLI Assignment 8.3.1 */
@@ -1087,10 +1095,16 @@ int gprs_llgmm_assign(struct gprs_llc_llme *llme,
struct gprs_llc_lle *l = &llme->lle[i];
l->state = GPRS_LLES_UNASSIGNED;
}
- llme_free(llme);
+ free = true;
} else
return -EINVAL;
+ LOGGBP(llme, DLLC, LOGL_NOTICE, "LLGM Assign post (%08x => %08x)\n",
+ old_tlli, new_tlli);
+
+ if (free)
+ llme_free(llme);
+
return 0;
}
@@ -1104,16 +1118,18 @@ int gprs_llgmm_unassign(struct gprs_llc_llme *llme)
int gprs_llgmm_reset(struct gprs_llc_llme *llme)
{
struct msgb *msg = msgb_alloc_headroom(4096, 1024, "LLC_XID");
- struct gprs_llc_lle *lle = &llme->lle[1];
+ struct gprs_llc_lle *lle = &llme->lle[GPRS_SAPI_GMM];
uint8_t xid_bytes[1024];
int xid_bytes_len, rc;
uint8_t *xid;
- LOGP(DLLC, LOGL_NOTICE, "LLGM Reset\n");
+ LOGGBP(llme, DLLC, LOGL_NOTICE, "LLGM Reset\n");
rc = osmo_get_rand_id((uint8_t *) &llme->iov_ui, 4);
if (rc < 0) {
- LOGP(DLLC, LOGL_ERROR, "osmo_get_rand_id() failed for LLC XID reset: %s\n", strerror(-rc));
+ LOGGBP(llme, DLLC, LOGL_ERROR,
+ "osmo_get_rand_id() failed for LLC XID reset: %s\n",
+ strerror(-rc));
return rc;
}
@@ -1144,11 +1160,13 @@ int gprs_llgmm_reset_oldmsg(struct msgb* oldmsg, uint8_t sapi,
int xid_bytes_len, rc;
uint8_t *xid;
- LOGP(DLLC, LOGL_NOTICE, "LLGM Reset\n");
+ LOGGBP(llme, DLLC, LOGL_NOTICE, "LLGM Reset (SAPI=%" PRIu8 ")\n", sapi);
rc = osmo_get_rand_id((uint8_t *) &llme->iov_ui, 4);
if (rc < 0) {
- LOGP(DLLC, LOGL_ERROR, "osmo_get_rand_id() failed for LLC XID reset: %s\n", strerror(-rc));
+ LOGGBP(llme, DLLC, LOGL_ERROR,
+ "osmo_get_rand_id() failed for LLC XID reset: %s\n",
+ strerror(-rc));
return rc;
}
diff --git a/src/sgsn/gprs_mm_state_gb_fsm.c b/src/sgsn/gprs_mm_state_gb_fsm.c
index f6d680c5..811f0c2f 100644
--- a/src/sgsn/gprs_mm_state_gb_fsm.c
+++ b/src/sgsn/gprs_mm_state_gb_fsm.c
@@ -125,5 +125,5 @@ struct osmo_fsm mm_state_gb_fsm = {
static __attribute__((constructor)) void mm_state_gb_fsm_init(void)
{
- osmo_fsm_register(&mm_state_gb_fsm);
+ OSMO_ASSERT(osmo_fsm_register(&mm_state_gb_fsm) == 0);
}
diff --git a/src/sgsn/gprs_mm_state_iu_fsm.c b/src/sgsn/gprs_mm_state_iu_fsm.c
index ea319417..e571026c 100644
--- a/src/sgsn/gprs_mm_state_iu_fsm.c
+++ b/src/sgsn/gprs_mm_state_iu_fsm.c
@@ -146,5 +146,5 @@ struct osmo_fsm mm_state_iu_fsm = {
static __attribute__((constructor)) void mm_state_iu_fsm_init(void)
{
- osmo_fsm_register(&mm_state_iu_fsm);
+ OSMO_ASSERT(osmo_fsm_register(&mm_state_iu_fsm) == 0);
}
diff --git a/src/sgsn/sgsn_libgtp.c b/src/sgsn/sgsn_libgtp.c
index c45431ae..c20c8dcf 100644
--- a/src/sgsn/sgsn_libgtp.c
+++ b/src/sgsn/sgsn_libgtp.c
@@ -753,28 +753,6 @@ static int sgsn_gtp_fd_cb(struct osmo_fd *fd, unsigned int what)
return rc;
}
-static void sgsn_gtp_tmr_start(struct sgsn_instance *sgi)
-{
- struct timeval next;
-
- /* Retrieve next retransmission as struct timeval */
- gtp_retranstimeout(sgi->gsn, &next);
-
- /* re-schedule the timer */
- osmo_timer_schedule(&sgi->gtp_timer, next.tv_sec, next.tv_usec/1000);
-}
-
-/* timer callback for libgtp retransmissions and ping */
-static void sgsn_gtp_tmr_cb(void *data)
-{
- struct sgsn_instance *sgi = data;
-
- /* Do all the retransmissions as needed */
- gtp_retrans(sgi->gsn);
-
- sgsn_gtp_tmr_start(sgi);
-}
-
int sgsn_gtp_init(struct sgsn_instance *sgi)
{
int rc;
@@ -825,10 +803,6 @@ int sgsn_gtp_init(struct sgsn_instance *sgi)
return rc;
}
- /* Start GTP re-transmission timer */
- osmo_timer_setup(&sgi->gtp_timer, sgsn_gtp_tmr_cb, sgi);
- sgsn_gtp_tmr_start(sgi);
-
/* Register callbackcs with libgtp */
gtp_set_cb_delete_context(gsn, cb_delete_context);
gtp_set_cb_conf(gsn, cb_conf);
diff --git a/src/sgsn/sgsn_main.c b/src/sgsn/sgsn_main.c
index eef5f8f2..3b18b051 100644
--- a/src/sgsn/sgsn_main.c
+++ b/src/sgsn/sgsn_main.c
@@ -271,6 +271,11 @@ static void handle_options(int argc, char **argv)
break;
}
}
+
+ if (argc > optind) {
+ fprintf(stderr, "Unsupported positional arguments on command line\n");
+ exit(2);
+ }
}
/* default categories */
@@ -393,7 +398,7 @@ int main(int argc, char **argv)
ctrl_vty_init(tall_sgsn_ctx);
#if BUILD_IU
- osmo_ss7_init();
+ OSMO_ASSERT(osmo_ss7_init() == 0);
osmo_ss7_vty_init_asp(tall_sgsn_ctx);
osmo_sccp_vty_init();
#endif