[PATCH] osmo-gsm-manuals[master]: add OsmoHLR manual, OsmoHLR VTY reference

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Thu Oct 19 04:33:02 UTC 2017


Review at  https://gerrit.osmocom.org/4348

add OsmoHLR manual, OsmoHLR VTY reference

Change-Id: Ieb6a362a26a7e65199f68f5cd32d9b6b0e5d0fbf
---
M Makefile
A OsmoHLR/Makefile
A OsmoHLR/chapters/control.adoc
A OsmoHLR/chapters/overview.adoc
A OsmoHLR/chapters/running.adoc
A OsmoHLR/chapters/subscribers.adoc
A OsmoHLR/example_subscriber_add_update_delete.vty
A OsmoHLR/example_subscriber_cs_ps_enabled.ctrl
A OsmoHLR/example_subscriber_info.ctrl
A OsmoHLR/osmohlr-usermanual-docinfo.xml
A OsmoHLR/osmohlr-usermanual.adoc
A OsmoHLR/osmohlr-vty-reference.xml
A OsmoHLR/vty/hlr_vty_additions.xml
A OsmoHLR/vty/hlr_vty_reference.xml
M OsmoMSC/chapters/running.adoc
15 files changed, 1,755 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-manuals refs/changes/48/4348/1

diff --git a/Makefile b/Makefile
index ffa25de..7c87838 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,7 @@
 	cd OsmoPCU; $(MAKE) clean
 	cd OsmoGSMTester; $(MAKE) clean
 	cd OsmoMSC; $(MAKE) clean
+	cd OsmoHLR; $(MAKE) clean
 
 upload:
 	cd OsmoBTS; $(MAKE) upload
@@ -33,6 +34,7 @@
 	cd OsmoPCU; $(MAKE) upload
 	cd OsmoGSMTester; $(MAKE) upload
 	cd OsmoMSC; $(MAKE) upload
+	cd OsmoHLR; $(MAKE) upload
 
 check:
 	cd OsmoBTS; $(MAKE) check
@@ -46,6 +48,7 @@
 	#cd OsmoNAT; $(MAKE) check
 	cd OsmoGSMTester; $(MAKE) check
 	cd OsmoMSC; $(MAKE) check
+	cd OsmoHLR; $(MAKE) check
 
 define check_dep_bin
     @type $(1) >/dev/null 2>&1 || { echo >&2 "Binary '$(1)' not found in path, please install $(2)."; exit 1; }
diff --git a/OsmoHLR/Makefile b/OsmoHLR/Makefile
new file mode 100644
index 0000000..eba5fa3
--- /dev/null
+++ b/OsmoHLR/Makefile
@@ -0,0 +1,42 @@
+# XSL stylesheets downloaded from http://docbook.sourceforge.net/release/xsl/current/html/
+# Makefile from BitBake/OpenEmbedded manuals
+
+topdir = .
+hlr_reference = $(topdir)/osmohlr-vty-reference.xml
+manuals = $(hlr_reference)
+# types = pdf txt rtf ps xhtml html man tex texi dvi
+# types = pdf txt
+types = $(docbooktotypes)
+docbooktotypes = pdf
+# htmlcssfile =
+# htmlcss =
+
+TOPDIR := ..
+ASCIIDOCS := osmohlr-usermanual
+
+include $(TOPDIR)/build/Makefile.asciidoc.inc
+include $(TOPDIR)/build/Makefile.inc
+
+osmohlr-usermanual.pdf: chapters/*.adoc generated/docbook_vty.xml
+
+clean:
+	-rm -rf $(cleanfiles)
+	-rm osmohlr-usermanual__*.svg
+	-rm osmohlr-usermanual__*.png
+	-rm osmohlr-usermanual.check
+
+generated/docbook_vty.xml: osmohlr-vty-reference.xml vty/*xml ../common/vty_additions.xml ../vty_reference.xsl
+	$(call command,xsltproc -o generated/combined1.xml \
+		--stringparam with $(PWD)/../common/vty_additions.xml \
+		$(MERGE_DOC) vty/hlr_vty_reference.xml, \
+		XSLTPROC,Merging Common VTY)
+	$(call command,xsltproc -o generated/combined2.xml \
+		--stringparam with $(PWD)/../common/bsc_vty_additions.xml \
+		$(MERGE_DOC) generated/combined1.xml, \
+		XSLTPROC,Merging Common BSC VTY)
+	$(call command,xsltproc -o generated/combined3.xml \
+		--stringparam with $(PWD)/vty/hlr_vty_additions.xml \
+		$(MERGE_DOC) generated/combined2.xml, \
+		XSLTPROC,Merging HLR VTY)
+	$(call command,xsltproc ../vty_reference.xsl generated/combined3.xml > generated/docbook_vty.xml, \
+		XSLTPROC,Converting HLR VTY to DocBook)
diff --git a/OsmoHLR/chapters/control.adoc b/OsmoHLR/chapters/control.adoc
new file mode 100644
index 0000000..89c9c08
--- /dev/null
+++ b/OsmoHLR/chapters/control.adoc
@@ -0,0 +1,101 @@
+[[hlr-ctrl]]
+== 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>>. This section
+describes the CTRL interface variables specific to OsmoHLR.
+
+All subscriber variables are available by different selectors, which are freely
+interchangeable:
+
+.Subscriber selectors available on OsmoHLR's Control interface
+[options="header",width="100%",cols="35%,65%"]
+|===
+|Selector|Comment
+|subscriber.*by-imsi-*'123456'.*|Subscriber selector by IMSI, replace "123456" with the actual IMSI
+|subscriber.*by-msisdn-*'123456'.*|Subscriber selector by MSISDN
+|subscriber.*by-id-*'123456'.*|Subscriber selector by database ID
+|===
+
+Each of the above selectors feature all of these control variables:
+
+.Subscriber variables available on OsmoHLR's Control interface
+[options="header",width="100%",cols="35%,8%,8%,8%,41%"]
+|===
+|Name|Access|Trap|Value|Comment
+|subscriber.by-\*.*info*|R|No||List (short) subscriber information
+|subscriber.by-\*.*info-aud*|R|No||List subscriber authentication tokens
+|subscriber.by-\*.*info-all*|R|No||List both 'info' and 'info-aud' in one
+|subscriber.by-\*.*cs-enabled*|RW|No|'1' or '0'|Enable/disable circuit-switched access
+|subscriber.by-\*.*ps-enabled*|RW|No|'1' or '0'|Enable/disable packet-switched access
+|===
+
+=== subscriber.by-*.info, info-aud, info-all
+
+Query the HLR database and return current subscriber record, in multiple lines
+of the format
+
+----
+name<tab>value
+----
+
+To keep the reply as short as possible, most values are omitted if they are
+empty or reflect the default. These are the returned values and their presence
+modalities; for their meaning, see <<subscriber-params>>:
+
+.Returned values by OsmoHLR's 'info', 'info-all' and 'info-aud' commands
+[options="header",width="100%",cols="15%,15%,30%,40%"]
+|===
+|Returned by 'info-all' and|Name|Format|Presence
+|'info'|id|-9223372036854775808 .. 9223372036854775807 (usually not negative)|always
+|'info'|imsi|6 to 15 decimal digits|always
+|'info'|msisdn|1 to 15 decimal digits|when non-empty
+|'info'|nam_cs|'1' or '0'|when '0'
+|'info'|nam_ps|'1' or '0'|when '0'
+|'info'|vlr_number|up to 15 decimal digits|when non-empty
+|'info'|sgsn_number|up to 15 decimal digits|when non-empty
+|'info'|sgsn_address||when non-empty
+|'info-aud'|aud2g.algo|one of 'comp128v1', 'comp128v2', 'comp128v3' or 'xor'|when valid 2G auth data is set
+|'info-aud'|aud2g.ki|32 hexadecimal digits|when valid 2G auth data is set
+|'info-aud'|aud3g.algo|so far always 'milenage'|when valid 3G auth data is set
+|'info-aud'|aud3g.k|32 hexadecimal digits|when valid 3G auth data is set
+|'info-aud'|aud3g.op|32 hexadecimal digits|when valid 3G auth data is set, *not* when OPC is set
+|'info-aud'|aud3g.opc|32 hexadecimal digits|when valid 3G auth data is set, *not* when OP is set
+|'info-aud'|aud3g.ind_bitlen|0..28|when valid 3G auth data is set
+|'info-aud'|aud3g.sqn|0 .. 18446744073709551615|when valid 3G auth data is set
+|===
+
+This is an example Control Interface transcript that illustrates the various
+'info' commands:
+
+----
+include::../example_subscriber_info.ctrl[]
+----
+
+=== subscriber.by-*.ps-enabled, cs-enabled
+
+Disable or enable packet-/circuit-switched access for the given IMSI;
+
+* 'ps-enabled' switches access to GPRS or UMTS data services,
+* 'cs-enabled' switches access to voice services.
+
+When disabled, the next time this subscriber attempts to do a Location Updating
+GSUP operation for the given domain (i.e. from the SGSN for 'ps-enabled', from
+the MSC/VLR for 'cs-enabled'), it will be rejected by OsmoHLR. Currently
+connected GSUP clients will be notified via GSUP when a subscriber is being
+disabled, so that the subscriber can be dropped in case it is currently
+attached.
+
+The current 'ps-enabled'/'cs-enabled' status can be queried by 'GET' commands,
+and also by looking at 'nam_ps' and 'nam_cs' in a 'subscriber.by-*.info'
+response.
+
+A value of "1" indicates that the given domain is enabled, which is the
+default; a value of "0" disables access.
+
+This is an example transcript that illustrates 'ps-enabled' and 'cs-enabled'
+commands:
+
+----
+include::../example_subscriber_cs_ps_enabled.ctrl[]
+----
diff --git a/OsmoHLR/chapters/overview.adoc b/OsmoHLR/chapters/overview.adoc
new file mode 100644
index 0000000..45802ca
--- /dev/null
+++ b/OsmoHLR/chapters/overview.adoc
@@ -0,0 +1,69 @@
+[[overview]]
+== Overview
+
+This manual should help you getting started with OsmoHLR. It will cover
+aspects of configuring and running the OsmoHLR.
+
+[[intro_overview]]
+=== About OsmoHLR
+
+OsmoHLR is Osmocom's minimal implementation of a Home Location Register (HLR)
+for 2G and 3G GSM and UMTS mobile core networks. Its interfaces are:
+
+- GSUP, serving towards OsmoMSC and OsmoSGSN;
+- A local SQLite database;
+- The Osmocom typical telnet VTY and CTRL interfaces.
+
+Originally, the OpenBSC project's OsmoNITB all-in-one implementation had an
+integrated HLR, managing subscribers and SMS in the same local database. Along
+with the separate OsmoMSC and its new VLR component, OsmoHLR was implemented
+from scratch to alleviate various shortcomings of the internal HLR:
+
+- The separate HLR allows using centralized subscriber management for both
+  circuit-switched and packet-switched domains (i.e. one OsmoHLR for both
+  OsmoMSC and OsmoSGSN).
+
+- VLR and HLR brought full UMTS AKA (Authentication and Key Agreement) support,
+  i.e. Milenage authentication in both the full 3G variant as well as the
+  backwards compatible 2G variant.
+
+- In contrast to the OsmoNITB, the specific way the new OsmoMSC's VLR accesses
+  OsmoHLR brings fully asynchronous subscriber database access.
+
+Find the OsmoHLR issue tracker and wiki online at
+
+- https://osmocom.org/projects/osmo-hlr
+- https://osmocom.org/projects/osmo-hlr/wiki
+
+
+[[fig-gsm]]
+.Typical GSM network architecture used with OsmoHLR
+[graphviz]
+----
+digraph G {
+	rankdir=LR;
+	subgraph cluster_hlr {
+		label = "OsmoHLR";
+		GSUP [label="GSUP server"]
+		DB [label="SQLite DB"]
+		GSUP->DB
+		DB->CTRL [dir="back"]
+		DB->VTY [dir="back"]
+	}
+
+	Admin [label="Admin and\nMaintenance"]
+	SW [label="3rd party software\nintegration"]
+	VTY->Admin [dir="back"]
+	CTRL->SW [dir="back"]
+		
+	MSC [label="MSC/VLR"]
+	MSC->GSUP  [label="GSUP"]
+	SGSN->GSUP [label="GSUP"]
+
+	BSC->MSC
+	HNBGW->MSC
+	HNBGW->SGSN
+	PCU->SGSN
+}
+----
+
diff --git a/OsmoHLR/chapters/running.adoc b/OsmoHLR/chapters/running.adoc
new file mode 100644
index 0000000..09388c0
--- /dev/null
+++ b/OsmoHLR/chapters/running.adoc
@@ -0,0 +1,90 @@
+== Running OsmoHLR
+
+The OsmoHLR executable (`osmo-hlr`) offers the following command-line
+arguments:
+
+=== SYNOPSIS
+
+*osmo-hlr* [-h|-V] [-d 'DBGMASK'] [-D] [-c 'CONFIGFILE'] [-s] [-T] [-e 'LOGLEVEL'] [-l 'DATABASE']
+
+=== OPTIONS
+
+*-h, --help*::
+	Print a short help message about the supported options
+*-V, --version*::
+	Print the compile-time version number of the OsmoBTS 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 `openbsc.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.
+*-T, --timestamp*::
+	Enable time-stamping of log messages 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.
+*-l, --database 'DATABASE'*::
+	Specify the file name of the SQLite3 database to use as HLR/AUC
+	storage
+
+=== Bootstrap the Database
+
+Before first launching OsmoHLR, you need to create a database, which can be
+done with these commands:
+
+----
+mkdir -p /var/lib/osmocom
+sqlite3 /var/lib/osmocom/hlr.db < /usr/share/doc/osmo-hlr/hlr.sql
+----
+
+Depending on your installation choices, you will probably find `hlr.sql` in one
+of these locations:
+
+- `/usr/share/doc/osmo-hlr/hlr.sql`
+- `/usr/local/share/doc/osmo-hlr/hlr.sql`
+- in `osmo-hlr.git`'s source tree at `sql/hlr.sql`
+
+NOTE: At the time of writing, OsmoHLR does not create an initial empty database
+automatically, like OsmoNITB did. This behavior may be added in the future.
+
+=== Multiple instances
+
+Running multiple instances of `osmo-hlr` on the same computer is possible if
+all interfaces (VTY, CTRL) are separated using the appropriate configuration
+options. The IP based interfaces are binding to local host by default. In order
+to separate the processes, the user has to bind those services to specific but
+different IP addresses and/or ports.
+
+The VTY and the Control interface can be bound to IP addresses from the loopback
+address range, for example:
+
+----
+line vty
+ bind 127.0.0.2
+ctrl
+ bind 127.0.0.2
+----
+
+The GSUP interface can be bound to a specific IP address by the following
+configuration options:
+
+----
+hlr
+ gsup
+  bind ip 10.23.42.1
+----
+
+NOTE: At the time of writing, OsmoHLR lacks a config option to change the GSUP
+port, which is by default TCP port 4222.
diff --git a/OsmoHLR/chapters/subscribers.adoc b/OsmoHLR/chapters/subscribers.adoc
new file mode 100644
index 0000000..b2024d2
--- /dev/null
+++ b/OsmoHLR/chapters/subscribers.adoc
@@ -0,0 +1,59 @@
+== Managing Subscribers
+
+Subscribers are kept in a local SQLite database file and can be managed via VTY
+and CTRL interfaces.
+
+See this section for some examples, and also refer to the OsmoHLR VTY reference
+manual <<vty-ref-osmohlr>> as well as the Control interface described in
+<<hlr-ctrl>>.
+
+=== Example: Add/Update/Delete Subscriber via VTY
+
+The following telnet VTY session adds a subscriber complete with 2G and 3G
+authentication tokens, and finally removes the subscriber again; it assumes
+that osmo-hlr is running and listening for telnet VTY connections on localhost:
+
+----
+$ telnet localhost 4258
+include::../example_subscriber_add_update_delete.vty[]
+----
+
+[[subscriber-params]]
+=== Subscriber Parameters
+
+The following parameters are managed for each subscriber of the HLR, modelled
+roughly after 3GPP TS 23.008, version 13.3.0; note that not all of these
+parameters are necessarily in active use:
+
+.OsmoHLR's subscriber parameters
+[options="header",width="100%",cols="20%,20%,60%"]
+|===
+|Name|Example|Description
+|imsi|901700000014701|identity of the SIM/USIM, 3GPP TS 23.008 chapter 2.1.1.1
+|msisdn|2342123|number to dial to reach this subscriber (multiple MSISDNs can be stored per subscriber), 3GPP TS 23.008 chapter 2.1.2
+|imeisv|4234234234234275|identity of the mobile device and software version, 3GPP TS 23.008 chapter 2.2.3
+|aud2g.algo|comp128v3|Authentication algorithm ID for 2G, corresponds to enum osmo_auth_algo
+|aud2g.ki||Subscriber's secret key (128bit)
+|aud3g.algo|milenage|Authentication algorithm ID for 3G and UMTS AKA, corresponds to enum osmo_auth_algo
+|aud3g.k|(32 hexadecimal digits)|Subscriber's secret key (128bit)
+|aud3g.op|(32 hexadecimal digits)|Operator's secret key (128bit)
+|aud3g.opc|(32 hexadecimal digits)|Secret key derived from OP and K (128bit), alternative to using OP which does not disclose OP to subscribers
+|aud3g.sqn|123|Sequence number of last used key (64bit unsigned)
+|aud3g.ind_bitlen|5|Nr of index bits at lower SQN end
+|apn||
+|vlr_number||3GPP TS 23.008 chapter 2.4.5
+|hlr_number||3GPP TS 23.008 chapter 2.4.6
+|sgsn_number||3GPP TS 23.008 chapter 2.4.8.1
+|sgsn_address||3GPP TS 23.008 chapter 2.13.10
+|ggsn_number||3GPP TS 23.008 chapter 2.4.8.2
+|gmlc_number||3GPP TS 23.008 chapter 2.4.9.2
+|smsc_number||3GPP TS 23.008 chapter 2.4.23
+|periodic_lu_tmr||3GPP TS 23.008 chapter 2.4.24
+|periodic_rau_tau_tmr||3GPP TS 23.008 chapter 2.13.115
+|nam_cs|1|Enable/disable voice access (3GPP TS 23.008 chapter 2.1.1.2: network access mode)
+|nam_ps|0|Enable/disable data access (3GPP TS 23.008 chapter 2.1.1.2: network access mode)
+|lmsi||3GPP TS 23.008 chapter 2.1.8
+|ms_purged_cs|0|3GPP TS 23.008 chapter 2.7.5
+|ms_purged_ps|1|3GPP TS 23.008 chapter 2.7.6
+|===
+
diff --git a/OsmoHLR/example_subscriber_add_update_delete.vty b/OsmoHLR/example_subscriber_add_update_delete.vty
new file mode 100644
index 0000000..ca14a65
--- /dev/null
+++ b/OsmoHLR/example_subscriber_add_update_delete.vty
@@ -0,0 +1,34 @@
+OsmoHLR> enable
+OsmoHLR# subscriber imsi 123456789023000 create
+% Created subscriber 123456789023000
+    ID: 1
+    IMSI: 123456789023000
+    MSISDN: none
+
+OsmoHLR# subscriber imsi 123456789023000 update msisdn 423
+% Updated subscriber IMSI='123456789023000' to MSISDN='423'
+
+OsmoHLR# subscriber msisdn 423 update aud3g milenage k deaf0ff1ced0d0dabbedd1ced1cef00d opc cededeffacedacefacedbadfadedbeef
+OsmoHLR# subscriber msisdn 423 show
+    ID: 1
+    IMSI: 123456789023000
+    MSISDN: 423
+    3G auth: MILENAGE
+             K=deaf0ff1ced0d0dabbedd1ced1cef00d
+             OPC=cededeffacedacefacedbadfadedbeef
+             IND-bitlen=5
+
+OsmoHLR# subscriber msisdn 423 update aud2g comp128v3 ki beefedcafefaceacedaddeddecadefee
+OsmoHLR# subscriber msisdn 423 show
+    ID: 1
+    IMSI: 123456789023000
+    MSISDN: 423
+    2G auth: COMP128v3
+             KI=beefedcafefaceacedaddeddecadefee
+    3G auth: MILENAGE
+             K=deaf0ff1ced0d0dabbedd1ced1cef00d
+             OPC=cededeffacedacefacedbadfadedbeef
+             IND-bitlen=5
+
+OsmoHLR# subscriber imsi 123456789023000 delete
+% Deleted subscriber for IMSI '123456789023000'
diff --git a/OsmoHLR/example_subscriber_cs_ps_enabled.ctrl b/OsmoHLR/example_subscriber_cs_ps_enabled.ctrl
new file mode 100644
index 0000000..1a98a80
--- /dev/null
+++ b/OsmoHLR/example_subscriber_cs_ps_enabled.ctrl
@@ -0,0 +1,46 @@
+GET 1 subscriber.by-msisdn-103.info
+GET_REPLY 1 subscriber.by-msisdn-103.info 
+id	3
+imsi	901990000000003
+msisdn	103
+
+GET 2 subscriber.by-msisdn-103.ps-enabled
+GET_REPLY 2 subscriber.by-msisdn-103.ps-enabled 1
+
+SET 3 subscriber.by-msisdn-103.ps-enabled 0
+SET_REPLY 3 subscriber.by-msisdn-103.ps-enabled OK
+
+GET 4 subscriber.by-msisdn-103.ps-enabled
+GET_REPLY 4 subscriber.by-msisdn-103.ps-enabled 0
+
+GET 5 subscriber.by-msisdn-103.info
+GET_REPLY 5 subscriber.by-msisdn-103.info 
+id	3
+imsi	901990000000003
+msisdn	103
+nam_ps	0
+
+SET 6 subscriber.by-msisdn-103.cs-enabled 0
+SET_REPLY 6 subscriber.by-msisdn-103.cs-enabled OK
+
+GET 7 subscriber.by-msisdn-103.cs-enabled
+GET_REPLY 7 subscriber.by-msisdn-103.cs-enabled 0
+
+GET 8 subscriber.by-msisdn-103.info
+GET_REPLY 8 subscriber.by-msisdn-103.info 
+id	3
+imsi	901990000000003
+msisdn	103
+nam_cs	0
+nam_ps	0
+
+SET 9 subscriber.by-msisdn-103.cs-enabled 1
+SET_REPLY 9 subscriber.by-msisdn-103.cs-enabled OK
+SET 10 subscriber.by-msisdn-103.ps-enabled 1
+SET_REPLY 10 subscriber.by-msisdn-103.ps-enabled OK
+
+GET 11 subscriber.by-msisdn-103.info
+GET_REPLY 11 subscriber.by-msisdn-103.info 
+id	3
+imsi	901990000000003
+msisdn	103
diff --git a/OsmoHLR/example_subscriber_info.ctrl b/OsmoHLR/example_subscriber_info.ctrl
new file mode 100644
index 0000000..2020508
--- /dev/null
+++ b/OsmoHLR/example_subscriber_info.ctrl
@@ -0,0 +1,28 @@
+GET 1 subscriber.by-imsi-901990000000003.info
+GET_REPLY 1 subscriber.by-imsi-901990000000003.info 
+id	3
+imsi	901990000000003
+msisdn	103
+
+GET 2 subscriber.by-msisdn-103.info-aud
+GET_REPLY 2 subscriber.by-msisdn-103.info-aud 
+aud2g.algo	COMP128v1
+aud2g.ki	000102030405060708090a0b0c0d0e0f
+aud3g.algo	MILENAGE
+aud3g.k	000102030405060708090a0b0c0d0e0f
+aud3g.opc	101112131415161718191a1b1c1d1e1f
+aud3g.ind_bitlen	5
+aud3g.sqn	2342
+
+GET 3 subscriber.by-id-3.info-all
+GET_REPLY 3 subscriber.by-id-3.info-all 
+id	3
+imsi	901990000000003
+msisdn	103
+aud2g.algo	COMP128v1
+aud2g.ki	000102030405060708090a0b0c0d0e0f
+aud3g.algo	MILENAGE
+aud3g.k	000102030405060708090a0b0c0d0e0f
+aud3g.opc	101112131415161718191a1b1c1d1e1f
+aud3g.ind_bitlen	5
+aud3g.sqn	2342
diff --git a/OsmoHLR/osmohlr-usermanual-docinfo.xml b/OsmoHLR/osmohlr-usermanual-docinfo.xml
new file mode 100644
index 0000000..d99bba7
--- /dev/null
+++ b/OsmoHLR/osmohlr-usermanual-docinfo.xml
@@ -0,0 +1,47 @@
+<revhistory>
+  <revision>
+    <revnumber>1</revnumber>
+    <date>September 18th, 2017</date>
+    <authorinitials>NH</authorinitials>
+    <revremark>
+      Initial version; based on OsmoNITB manual version 2.
+    </revremark>
+  </revision>
+</revhistory>
+
+<authorgroup>
+  <author>
+    <firstname>Neels</firstname>
+    <surname>Hofmeyr</surname>
+    <email>nhofmeyr at sysmocom.de</email>
+    <authorinitials>NH</authorinitials>
+    <affiliation>
+      <shortaffil>sysmocom</shortaffil>
+      <orgname>sysmocom - s.f.m.c. GmbH</orgname>
+      <jobtitle>Senior Developer</jobtitle>
+    </affiliation>
+  </author>
+</authorgroup>
+
+<copyright>
+  <year>2017</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 the Invariant Sections being just 'Foreword',
+	'Acknowledgements' and 'Preface', with 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="http://git.osmocom.org/osmo-gsm-manuals/">
+		http://git.osmocom.org/osmo-gsm-manuals/
+	</ulink>
+  </para>
+</legalnotice>
diff --git a/OsmoHLR/osmohlr-usermanual.adoc b/OsmoHLR/osmohlr-usermanual.adoc
new file mode 100644
index 0000000..2369155
--- /dev/null
+++ b/OsmoHLR/osmohlr-usermanual.adoc
@@ -0,0 +1,32 @@
+:gfdl-enabled:
+:program-name: OsmoHLR
+
+OsmoHLR User Manual
+====================
+Neels Hofmeyr <nhofmeyr at sysmocom.de>
+
+
+include::../common/chapters/preface.adoc[]
+
+include::chapters/overview.adoc[]
+
+include::chapters/running.adoc[]
+
+include::chapters/subscribers.adoc[]
+
+include::../common/chapters/vty.adoc[]
+
+include::../common/chapters/logging.adoc[]
+
+include::chapters/control.adoc[]
+
+include::../common/chapters/control_if.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/OsmoHLR/osmohlr-vty-reference.xml b/OsmoHLR/osmohlr-vty-reference.xml
new file mode 100644
index 0000000..948f5f9
--- /dev/null
+++ b/OsmoHLR/osmohlr-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 V5.0//EN"
+"http://www.docbook.org/xml/5.0/dtd/docbook.dtd" [
+<!ENTITY chapter-vty      SYSTEM      "../common/chapters/vty.xml" >
+<!ENTITY sections-vty     SYSTEM      "generated/docbook_vty.xml"  >
+]>
+
+<book>
+  <info>
+    <revhistory>
+        <revision>
+            <revnumber>v1</revnumber>
+            <date>18th September 2017</date>
+            <authorinitials>nh</authorinitials>
+            <revremark>Initial</revremark>
+        </revision>
+    </revhistory>
+
+    <title>OsmoHLR VTY Reference</title>
+
+    <copyright>
+      <year>2017</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/OsmoHLR/vty/hlr_vty_additions.xml b/OsmoHLR/vty/hlr_vty_additions.xml
new file mode 100644
index 0000000..a4c675e
--- /dev/null
+++ b/OsmoHLR/vty/hlr_vty_additions.xml
@@ -0,0 +1,2 @@
+<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'>
+</vtydoc>
diff --git a/OsmoHLR/vty/hlr_vty_reference.xml b/OsmoHLR/vty/hlr_vty_reference.xml
new file mode 100644
index 0000000..31b95a1
--- /dev/null
+++ b/OsmoHLR/vty/hlr_vty_reference.xml
@@ -0,0 +1,1159 @@
+<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'>
+  <node id='Password'>
+  </node>
+  <node id='_1'>
+    <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='list'>
+      <params>
+        <param name='list' doc='Print command list' />
+      </params>
+    </command>
+    <command id='exit'>
+      <params>
+        <param name='exit' doc='Exit current mode and down to previous mode' />
+      </params>
+    </command>
+    <command id='help'>
+      <params>
+        <param name='help' doc='Description of the interactive help system' />
+      </params>
+    </command>
+    <command id='enable'>
+      <params>
+        <param name='enable' doc='Turn on privileged mode command' />
+      </params>
+    </command>
+    <command id='terminal length <0-512>'>
+      <params>
+        <param name='terminal' doc='Set terminal line parameters' />
+        <param name='length' doc='Set number of lines on a screen' />
+        <param name='<0-512>' 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='echo .MESSAGE'>
+      <params>
+        <param name='echo' doc='Echo a message back to the vty' />
+        <param name='.MESSAGE' doc='The message to echo' />
+      </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 log message to this terminal' />
+        <param name='enable' doc='Enables logging to this vty' />
+      </params>
+    </command>
+    <command id='logging disable'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <param name='disable' doc='Disables logging to this vty' />
+      </params>
+    </command>
+    <command id='logging filter all (0|1)'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <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 log message to this terminal' />
+        <param name='color' doc='Configure color-printing for log messages' />
+        <param name='0' doc='Don'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 log message to this terminal' />
+        <param name='timestamp' doc='Configure log message timestamping' />
+        <param name='0' doc='Don'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 log message to this terminal' />
+        <param name='print' doc='Log output settings' />
+        <param name='extended-timestamp' doc='Configure log message timestamping' />
+        <param name='0' doc='Don'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 log message to this terminal' />
+        <param name='print' doc='Log output settings' />
+        <param name='category' doc='Configure log message' />
+        <param name='0' doc='Don't prefix each log message' />
+        <param name='1' doc='Prefix each log message with category/subsystem name' />
+      </params>
+    </command>
+    <command id='logging set-log-mask MASK'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <param name='set-log-mask' doc='Set the logmask of this logging target' />
+        <param name='MASK' doc='The logmask to use' />
+      </params>
+    </command>
+    <command id='logging set log mask MASK'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <param name='set' doc='Decide which categories to output.' />
+        <param name='log' doc='Log commands' />
+        <param name='mask' doc='Mask commands' />
+        <param name='MASK' doc='The logmask to use' />
+      </params>
+    </command>
+    <command id='logging level (all|main|db|auc|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp) (everything|debug|info|notice|error|fatal)'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <param name='level' doc='Set the log level for a specified category' />
+        <param name='all' doc='Global setting for all subsystems' />
+        <param name='main' doc='Main Program' />
+        <param name='db' doc='Database Layer' />
+        <param name='auc' doc='Authentication Center' />
+        <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='everything' doc='Don't use. It doesn't log anything' />
+        <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='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='subscriber (imsi|msisdn|id) IDENT show'>
+      <params>
+        <param name='subscriber' doc='Subscriber management commands' />
+        <param name='imsi' doc='Identify subscriber by IMSI' />
+        <param name='msisdn' doc='Identify subscriber by MSISDN (phone number)' />
+        <param name='id' doc='Identify subscriber by database ID' />
+        <param name='IDENT' doc='IMSI/MSISDN/ID of the subscriber' />
+        <param name='show' doc='Show subscriber information' />
+      </params>
+    </command>
+  </node>
+  <node id='Password_2'>
+  </node>
+  <node id='_2'>
+    <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'>
+      <params>
+        <param name='write' doc='Write running configuration to memory, network, or terminal' />
+        <param name='file' doc='Write to configuration file' />
+      </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='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 <0-512>'>
+      <params>
+        <param name='terminal' doc='Set terminal line parameters' />
+        <param name='length' doc='Set number of lines on a screen' />
+        <param name='<0-512>' 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='echo .MESSAGE'>
+      <params>
+        <param name='echo' doc='Echo a message back to the vty' />
+        <param name='.MESSAGE' doc='The message to echo' />
+      </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 log message to this terminal' />
+        <param name='enable' doc='Enables logging to this vty' />
+      </params>
+    </command>
+    <command id='logging disable'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <param name='disable' doc='Disables logging to this vty' />
+      </params>
+    </command>
+    <command id='logging filter all (0|1)'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <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 log message to this terminal' />
+        <param name='color' doc='Configure color-printing for log messages' />
+        <param name='0' doc='Don'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 log message to this terminal' />
+        <param name='timestamp' doc='Configure log message timestamping' />
+        <param name='0' doc='Don'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 log message to this terminal' />
+        <param name='print' doc='Log output settings' />
+        <param name='extended-timestamp' doc='Configure log message timestamping' />
+        <param name='0' doc='Don'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 log message to this terminal' />
+        <param name='print' doc='Log output settings' />
+        <param name='category' doc='Configure log message' />
+        <param name='0' doc='Don't prefix each log message' />
+        <param name='1' doc='Prefix each log message with category/subsystem name' />
+      </params>
+    </command>
+    <command id='logging set-log-mask MASK'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <param name='set-log-mask' doc='Set the logmask of this logging target' />
+        <param name='MASK' doc='The logmask to use' />
+      </params>
+    </command>
+    <command id='logging set log mask MASK'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <param name='set' doc='Decide which categories to output.' />
+        <param name='log' doc='Log commands' />
+        <param name='mask' doc='Mask commands' />
+        <param name='MASK' doc='The logmask to use' />
+      </params>
+    </command>
+    <command id='logging level (all|main|db|auc|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp) (everything|debug|info|notice|error|fatal)'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <param name='level' doc='Set the log level for a specified category' />
+        <param name='all' doc='Global setting for all subsystems' />
+        <param name='main' doc='Main Program' />
+        <param name='db' doc='Database Layer' />
+        <param name='auc' doc='Authentication Center' />
+        <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='everything' doc='Don't use. It doesn't log anything' />
+        <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='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='subscriber (imsi|msisdn|id) IDENT show'>
+      <params>
+        <param name='subscriber' doc='Subscriber management commands' />
+        <param name='imsi' doc='Identify subscriber by IMSI' />
+        <param name='msisdn' doc='Identify subscriber by MSISDN (phone number)' />
+        <param name='id' doc='Identify subscriber by database ID' />
+        <param name='IDENT' doc='IMSI/MSISDN/ID of the subscriber' />
+        <param name='show' doc='Show subscriber information' />
+      </params>
+    </command>
+    <command id='subscriber imsi IDENT create'>
+      <params>
+        <param name='subscriber' doc='Subscriber management commands' />
+        <param name='imsi' doc='Create subscriber by IMSI' />
+        <param name='IDENT' doc='IMSI/MSISDN/ID of the subscriber' />
+        <param name='create' doc='(null)' />
+      </params>
+    </command>
+    <command id='subscriber (imsi|msisdn|id) IDENT delete'>
+      <params>
+        <param name='subscriber' doc='Subscriber management commands' />
+        <param name='imsi' doc='Identify subscriber by IMSI' />
+        <param name='msisdn' doc='Identify subscriber by MSISDN (phone number)' />
+        <param name='id' doc='Identify subscriber by database ID' />
+        <param name='IDENT' doc='IMSI/MSISDN/ID of the subscriber' />
+        <param name='delete' doc='Delete subscriber from database' />
+      </params>
+    </command>
+    <command id='subscriber (imsi|msisdn|id) IDENT update msisdn MSISDN'>
+      <params>
+        <param name='subscriber' doc='Subscriber management commands' />
+        <param name='imsi' doc='Identify subscriber by IMSI' />
+        <param name='msisdn' doc='Identify subscriber by MSISDN (phone number)' />
+        <param name='id' doc='Identify subscriber by database ID' />
+        <param name='IDENT' doc='IMSI/MSISDN/ID of the subscriber' />
+        <param name='update' doc='Set or update subscriber data' />
+        <param name='msisdn' doc='Set MSISDN (phone number) of the subscriber' />
+        <param name='MSISDN' doc='New MSISDN (phone number)' />
+      </params>
+    </command>
+    <command id='subscriber (imsi|msisdn|id) IDENT update aud2g none'>
+      <params>
+        <param name='subscriber' doc='Subscriber management commands' />
+        <param name='imsi' doc='Identify subscriber by IMSI' />
+        <param name='msisdn' doc='Identify subscriber by MSISDN (phone number)' />
+        <param name='id' doc='Identify subscriber by database ID' />
+        <param name='IDENT' doc='IMSI/MSISDN/ID of the subscriber' />
+        <param name='update' doc='Set or update subscriber data' />
+        <param name='aud2g' doc='Set 2G authentication data' />
+        <param name='none' doc='Delete 2G authentication data' />
+      </params>
+    </command>
+    <command id='subscriber (imsi|msisdn|id) IDENT update aud2g (comp128v1|comp128v2|comp128v3|xor) ki KI'>
+      <params>
+        <param name='subscriber' doc='Subscriber management commands' />
+        <param name='imsi' doc='Identify subscriber by IMSI' />
+        <param name='msisdn' doc='Identify subscriber by MSISDN (phone number)' />
+        <param name='id' doc='Identify subscriber by database ID' />
+        <param name='IDENT' doc='IMSI/MSISDN/ID of the subscriber' />
+        <param name='update' doc='Set or update subscriber data' />
+        <param name='aud2g' doc='Set 2G authentication data' />
+        <param name='comp128v1' doc='Use COMP128v1 algorithm' />
+        <param name='comp128v2' doc='Use COMP128v2 algorithm' />
+        <param name='comp128v3' doc='Use COMP128v3 algorithm' />
+        <param name='xor' doc='Use XOR algorithm' />
+        <param name='ki' doc='Set Ki Encryption Key' />
+        <param name='KI' doc='Ki as 32 hexadecimal characters' />
+      </params>
+    </command>
+    <command id='subscriber (imsi|msisdn|id) IDENT update aud3g none'>
+      <params>
+        <param name='subscriber' doc='Subscriber management commands' />
+        <param name='imsi' doc='Identify subscriber by IMSI' />
+        <param name='msisdn' doc='Identify subscriber by MSISDN (phone number)' />
+        <param name='id' doc='Identify subscriber by database ID' />
+        <param name='IDENT' doc='IMSI/MSISDN/ID of the subscriber' />
+        <param name='update' doc='Set or update subscriber data' />
+        <param name='aud3g' doc='Set UMTS authentication data (3G, and 2G with UMTS AKA)' />
+        <param name='none' doc='Delete 3G authentication data' />
+      </params>
+    </command>
+    <command id='subscriber (imsi|msisdn|id) IDENT update aud3g milenage k K (op|opc) OP_C [ind-bitlen] [<0-28>]'>
+      <params>
+        <param name='subscriber' doc='Subscriber management commands' />
+        <param name='imsi' doc='Identify subscriber by IMSI' />
+        <param name='msisdn' doc='Identify subscriber by MSISDN (phone number)' />
+        <param name='id' doc='Identify subscriber by database ID' />
+        <param name='IDENT' doc='IMSI/MSISDN/ID of the subscriber' />
+        <param name='update' doc='Set or update subscriber data' />
+        <param name='aud3g' doc='Set UMTS authentication data (3G, and 2G with UMTS AKA)' />
+        <param name='milenage' doc='Use Milenage algorithm' />
+        <param name='k' doc='Set Encryption Key K' />
+        <param name='K' doc='K as 32 hexadecimal characters' />
+        <param name='op' doc='Set OP key' />
+        <param name='opc' doc='Set OPC key' />
+        <param name='OP_C' doc='OP or OPC as 32 hexadecimal characters' />
+        <param name='[ind-bitlen]' doc='Set IND bit length' />
+        <param name='[<0-28>]' doc='IND bit length value (default: 5)' />
+      </params>
+    </command>
+  </node>
+  <node id='config'>
+    <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'>
+      <params>
+        <param name='write' doc='Write running configuration to memory, network, or terminal' />
+        <param name='file' doc='Write to configuration file' />
+      </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>
+    <command id='hostname WORD'>
+      <params>
+        <param name='hostname' doc='Set system's network name' />
+        <param name='WORD' doc='This system'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'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 'enable' 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) 'enable' 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 <0-512>'>
+      <params>
+        <param name='service' doc='Set up miscellaneous service' />
+        <param name='terminal-length' doc='System wide terminal length configuration' />
+        <param name='<0-512>' doc='Number of lines of VTY (0 means no line control)' />
+      </params>
+    </command>
+    <command id='no service terminal-length [<0-512>]'>
+      <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='[<0-512>]' 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='ctrl'>
+      <params>
+        <param name='ctrl' doc='Configure the Control Interface' />
+      </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 <2-32700>'>
+      <params>
+        <param name='log' doc='Configure logging sub-system' />
+        <param name='alarms' doc='Logging alarms to osmo_strrb' />
+        <param name='<2-32700>' 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 <0-7>'>
+      <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='<0-7>' 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='hlr'>
+      <params>
+        <param name='hlr' doc='Configure the HLR' />
+      </params>
+    </command>
+  </node>
+  <node id='config-log'>
+    <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'>
+      <params>
+        <param name='write' doc='Write running configuration to memory, network, or terminal' />
+        <param name='file' doc='Write to configuration file' />
+      </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>
+    <command id='logging filter all (0|1)'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <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 log message to this terminal' />
+        <param name='color' doc='Configure color-printing for log messages' />
+        <param name='0' doc='Don'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 log message to this terminal' />
+        <param name='timestamp' doc='Configure log message timestamping' />
+        <param name='0' doc='Don'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 log message to this terminal' />
+        <param name='print' doc='Log output settings' />
+        <param name='extended-timestamp' doc='Configure log message timestamping' />
+        <param name='0' doc='Don'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 log message to this terminal' />
+        <param name='print' doc='Log output settings' />
+        <param name='category' doc='Configure log message' />
+        <param name='0' doc='Don't prefix each log message' />
+        <param name='1' doc='Prefix each log message with category/subsystem name' />
+      </params>
+    </command>
+    <command id='logging level (all|main|db|auc|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp) (everything|debug|info|notice|error|fatal)'>
+      <params>
+        <param name='logging' doc='Configure log message to this terminal' />
+        <param name='level' doc='Set the log level for a specified category' />
+        <param name='all' doc='Global setting for all subsystems' />
+        <param name='main' doc='Main Program' />
+        <param name='db' doc='Database Layer' />
+        <param name='auc' doc='Authentication Center' />
+        <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='everything' doc='Don't use. It doesn't log anything' />
+        <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>
+  </node>
+  <node id='config-line'>
+    <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'>
+      <params>
+        <param name='write' doc='Write running configuration to memory, network, or terminal' />
+        <param name='file' doc='Write to configuration file' />
+      </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>
+    <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'>
+      <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)' />
+      </params>
+    </command>
+  </node>
+  <node id='config-ctrl'>
+    <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'>
+      <params>
+        <param name='write' doc='Write running configuration to memory, network, or terminal' />
+        <param name='file' doc='Write to configuration file' />
+      </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>
+    <command id='bind A.B.C.D'>
+      <params>
+        <param name='bind' doc='Set bind address to listen for Control connections' />
+        <param name='A.B.C.D' doc='Local IP address (default 127.0.0.1)' />
+      </params>
+    </command>
+  </node>
+  <node id='config-hlr'>
+    <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'>
+      <params>
+        <param name='write' doc='Write running configuration to memory, network, or terminal' />
+        <param name='file' doc='Write to configuration file' />
+      </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>
+    <command id='gsup'>
+      <params>
+        <param name='gsup' doc='Configure GSUP options' />
+      </params>
+    </command>
+  </node>
+  <node id='config-hlr-gsup'>
+    <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'>
+      <params>
+        <param name='write' doc='Write running configuration to memory, network, or terminal' />
+        <param name='file' doc='Write to configuration file' />
+      </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>
+    <command id='bind ip A.B.C.D'>
+      <params>
+        <param name='bind' doc='Listen/Bind related socket option' />
+        <param name='ip' doc='IP information' />
+        <param name='A.B.C.D' doc='IPv4 Address to bind the GSUP interface to' />
+      </params>
+    </command>
+  </node>
+</vtydoc>
diff --git a/OsmoMSC/chapters/running.adoc b/OsmoMSC/chapters/running.adoc
index 5925e02..8656a58 100644
--- a/OsmoMSC/chapters/running.adoc
+++ b/OsmoMSC/chapters/running.adoc
@@ -49,11 +49,11 @@
 
 === Multiple instances
 
-Running multiple instances of `osmo-msc` is possible if all interfaces (VTY,
-CTRL) are separated using the appropriate configuration options. The IP based
-interfaces are binding to local host by default. In order to separate the
-processes, the user has to bind those services to specific but different IP
-addresses.
+Running multiple instances of `osmo-msc` on the same computer is possible if all
+interfaces (VTY, CTRL) are separated using the appropriate configuration
+options. The IP based interfaces are binding to local host by default. In order
+to separate the processes, the user has to bind those services to specific but
+different IP addresses and/or ports.
 
 The VTY and the Control interface can be bound to IP addresses from the loopback
 address range, for example:

-- 
To view, visit https://gerrit.osmocom.org/4348
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ieb6a362a26a7e65199f68f5cd32d9b6b0e5d0fbf
Gerrit-PatchSet: 1
Gerrit-Project: osmo-gsm-manuals
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>



More information about the gerrit-log mailing list