Further clean-up in osmo-sgsn -> osmo-gbproxy migration
* fix manuals builds, including vty reference generation * fix vty tests * remove manuals from osmo-sgsn * update .gitreview * update osmoappdesc.py Related: OS#4992 Change-Id: I80439ab0d21a3fb33f38da42acbfe3fbb0941b91
This commit is contained in:
parent
29532c2a06
commit
936dfd720a
|
@ -1,3 +1,3 @@
|
|||
[gerrit]
|
||||
host=gerrit.osmocom.org
|
||||
project=osmo-sgsn
|
||||
project=osmo-gbproxy
|
||||
|
|
|
@ -9,9 +9,9 @@ AM_CPPFLAGS = \
|
|||
$(NULL)
|
||||
|
||||
SUBDIRS = \
|
||||
doc \
|
||||
include \
|
||||
src \
|
||||
doc \
|
||||
contrib \
|
||||
tests \
|
||||
$(NULL)
|
||||
|
|
|
@ -1,23 +1,26 @@
|
|||
EXTRA_DIST = osmosgsn-usermanual.adoc \
|
||||
osmosgsn-usermanual-docinfo.xml \
|
||||
osmosgsn-vty-reference.xml \
|
||||
EXTRA_DIST = \
|
||||
osmogbproxy-usermanual.adoc \
|
||||
osmogbproxy-usermanual-docinfo.xml \
|
||||
regen_doc.sh \
|
||||
chapters \
|
||||
vty \
|
||||
osmogbproxy-vty-reference.xml \
|
||||
vty-osmogbproxy \
|
||||
chapters \
|
||||
regen_doc.sh \
|
||||
vty \
|
||||
$(NULL)
|
||||
|
||||
if BUILD_MANUALS
|
||||
ASCIIDOC = osmosgsn-usermanual.adoc osmogbproxy-usermanual.adoc
|
||||
ASCIIDOC_DEPS = $(srcdir)/chapters/*.adoc
|
||||
ASCIIDOC = osmogbproxy-usermanual.adoc
|
||||
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.asciidoc.inc
|
||||
osmogbproxy-usermanual.pdf: $(srcdir)/chapters/*.adoc #$(srcdir)/chapters/*.dot
|
||||
|
||||
VTY_REFERENCE = osmogbproxy-vty-reference.xml
|
||||
|
||||
BUILT_REFERENCE_XML = $(builddir)/vty/gbproxy_vty_reference.xml
|
||||
$(builddir)/vty/gbproxy_vty_reference.xml: $(top_builddir)/src/osmo-gbproxy
|
||||
mkdir -p $(builddir)/vty
|
||||
$(top_builddir)/src/osmo-gbproxy --vty-ref-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
|
||||
OSMO_REPOSITORY = osmo-gbproxy
|
||||
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.common.inc
|
||||
endif
|
||||
|
|
|
@ -1,378 +0,0 @@
|
|||
== Configuring OsmoSGSN
|
||||
|
||||
Contrary to other network elements (like OsmoBSC, OsmoNITB), the
|
||||
OsmoSGSN has a relatively simple configuration.
|
||||
|
||||
On the one hand, this is primary because the PCU configuration happens
|
||||
from the BSC side.
|
||||
|
||||
On the other hand, it is because the Gb interface does not need an
|
||||
explicit configuration of each PCU connecting to the SGSN. The
|
||||
administrator only has to ensure that the NS and BSSGP layer identities
|
||||
(NSEI, NSVCI, BVCI) are unique for each PCU connecting to the SGSN.
|
||||
|
||||
=== Configuring the Gp interface
|
||||
|
||||
The Gp interface is the GTP-C and GTP-U based interface between the SGSN
|
||||
and the GGSNs. It is implemented via UDP on well-known source and
|
||||
destination ports.
|
||||
|
||||
When an MS requests establishment of a PDP context, it specifies the APN
|
||||
(Access Point Name) to which the context shall be established. This APN
|
||||
determines which GGSN shall be used, and that in turn determines which
|
||||
external IP network the MS will be connected to.
|
||||
|
||||
There are two modes in which GGSNs can be configured:
|
||||
|
||||
. static GGSN/APN configuration
|
||||
. dynamic GGSN/APN configuration
|
||||
|
||||
==== Static GGSN/APN configuration
|
||||
|
||||
In this mode, there is a static list of GGSNs and APNs configured in
|
||||
OsmoSGSN via the VTY / config file.
|
||||
|
||||
This is a non-standard method outside of the 3GPP specifications for the
|
||||
SGSN, and is typically only used in private/small GPRS networks without
|
||||
any access to a GRX.
|
||||
|
||||
.Example: Static GGSN/APN configuration (single catch-all GGSN)
|
||||
----
|
||||
OsmoSGSN(config-sgsn)# gtp local-ip 172.0.0.1 <1>
|
||||
OsmoSGSN(config-sgsn)# ggsn 0 remote-ip 127.0.0.2 <2>
|
||||
OsmoSGSN(config-sgsn)# ggsn 0 gtp-version 1 <3>
|
||||
OsmoSGSN(config-sgsn)# apn * ggsn 0 <4>
|
||||
----
|
||||
<1> Configure the local IP address at the SGSN used for Gp/GTP
|
||||
<2> Specify the remote IP address of the GGSN (for GGSN 0)
|
||||
<3> Specify the GTP protocol version used for GGSN 0
|
||||
<4> Route all APN names to GGSN 0
|
||||
|
||||
|
||||
==== Dynamic GGSN/APN configuration
|
||||
|
||||
In this mode, the SGSN will use a DNS-based method to perform the lookup
|
||||
from the APN (as specified by the MS) towards the GGSN IP address.
|
||||
|
||||
This is the official method as per the 3GPP specifications for the SGSN,
|
||||
and what is used on GRX.
|
||||
|
||||
.Example: Dynamic GGSN/APN configuration
|
||||
----
|
||||
OsmoSGSN(config-sgsn)# gtp local-ip 192.168.0.11 <1>
|
||||
OsmoSGSN(config-sgsn)# ggsn dynamic <2>
|
||||
OsmoSGSN(config-sgsn)# grx-dns-add 1.2.3.4 <3>
|
||||
----
|
||||
<1> Configure the local IP address at the SGSN used for Gp/GTP
|
||||
<2> Enable the dynamic GGSN resolving mode
|
||||
<3> Specify the IP address of a DNS server for APN resolution
|
||||
|
||||
[[auth-pol]]
|
||||
=== Authorization Policy
|
||||
|
||||
The authorization policy controls by which rules a subscriber is accepted or
|
||||
rejected. The possible options range from accepting just all subscribers without
|
||||
further checking, to a fine grained access-control, handled by an external HLR.
|
||||
|
||||
accept-all:: All subscribers that attempt to attach to the GPRS network are
|
||||
accepted without further checking. This option is intended to be used for
|
||||
testing in a controlled environment only. A wide-open network may attract
|
||||
subscribers from foreign networks and disrupt their service. It is highly
|
||||
recommended to pick one of the options below.
|
||||
|
||||
remote:: This option allows to connect OsmoSGSN to an external HLR via the
|
||||
GSUP protocol. This will be the preferred option in larger networks.
|
||||
|
||||
acl-only:: If no external HLR is available, the network operator has the
|
||||
option to control the access using an access control list. The access control
|
||||
list contains the IMSI numbers of the allowed subscribers. This method offers
|
||||
fine grained access control and is ideal for small networks and lab test
|
||||
environments.
|
||||
|
||||
closed:: This policy mode softens the strict *acl-only* only mode by also
|
||||
implicitly accepting home network subscribers. The decision is made by the MCC
|
||||
and MNC part of the IMSI number. The combination of MCC and MNC fully identifies
|
||||
a subscribers home network, also known as a Home Network Identity (HNI, i.e.
|
||||
MCC and MNC found at the start of the IMSI, e.g. MCC 901 and MNC 700 with
|
||||
IMSI 901700000003080).
|
||||
|
||||
NOTE: The policy mode *closed* must not be confused with the equally named
|
||||
policy that is defined for osmo-nitb!
|
||||
|
||||
|
||||
.Example: Assign or change authorization policy
|
||||
----
|
||||
OsmoSGSN> enable
|
||||
OsmoSGSN# configure terminal
|
||||
OsmoSGSN(config)# sgsn
|
||||
OsmoSGSN(config-sgsn)# auth-policy acl-only <1>
|
||||
OsmoSGSN(config-sgsn)# write <2>
|
||||
Configuration saved to sgsn.cfg
|
||||
OsmoSGSN(config-sgsn)# end
|
||||
OsmoSGSN# disable
|
||||
OsmoSGSN>
|
||||
----
|
||||
<1> 'acl-only' is selected as authorization policy
|
||||
<2> Saves current changes to cofiguration to make this policy
|
||||
persistent
|
||||
|
||||
.Example: Access control list
|
||||
----
|
||||
sgsn
|
||||
auth-policy acl-only <1>
|
||||
imsi-acl add 001010000000003
|
||||
imsi-acl add 001010000000002
|
||||
imsi-acl add 001010000000001
|
||||
imsi-acl add 901700000000068 <2>
|
||||
----
|
||||
<1> Set the authorization policy
|
||||
<2> Add as many subscribers as required
|
||||
|
||||
=== Subscriber Configuration
|
||||
|
||||
As opposed to OsmoNITB, OsmoSGSN does not feature a built-in HLR.
|
||||
|
||||
It can thus operate only in the following two modes:
|
||||
|
||||
. Accessing an external HLR (or HLR gateway) via the GSUP protocol
|
||||
. Accepting subscribers based on internal ACL (access control list),
|
||||
see also <<auth-pol>>
|
||||
|
||||
==== Accessing an external HLR via GSUP
|
||||
|
||||
The non-standard GSUP protocol was created to provide OsmoSGSN with
|
||||
access to an external HLR while avoiding the complexities of the
|
||||
TCAP/MAP protocol stack commonly used by HLRs.
|
||||
|
||||
A custom HLR could either directly implement GSUP, or an external gateway
|
||||
can be used to convert GSUP to the respective MAP operations.
|
||||
|
||||
The primitives/operations of GSUP are modelled to have a 1:1
|
||||
correspondence to their MAP counterparts. However, the encoding is much
|
||||
simplified by use of a binary TLV encoding similar to Layer 3 of
|
||||
GSM/GPRS.
|
||||
|
||||
GSUP performs a challenge-response authentication protocol called OAP,
|
||||
which uses the standard MILENAGE algorithm for mutual authentication
|
||||
between OsmoSGSN and the HLR/HLR-GW.
|
||||
|
||||
[[sgsn-ex-gsup]]
|
||||
.Example: Using an external HLR via GSUP
|
||||
----
|
||||
OsmoSGSN(config-sgsn)# gsup remote-ip 2.3.4.5 <1>
|
||||
OsmoSGSN(config-sgsn)# gsup remote-port 10000 <2>
|
||||
OsmoSGSN(config-sgsn)# gsup oap-k 000102030405060708090a0b0c0d0e0f <3>
|
||||
OsmoSGSN(config-sgsn)# gsup oap-opc 101112131415161718191a1b1c1d1e1f <4>
|
||||
----
|
||||
<1> Configure the IP address of the (remote) HLR or HLR-GW
|
||||
<2> Configure the TCP port of the (remote) HLR or HLR-GW
|
||||
<3> Specify the OAP shared key
|
||||
<4> Specify the OAP shared OPC
|
||||
|
||||
|
||||
=== CDR configuration
|
||||
|
||||
OsmoSGSN can write a text log file containing CDR (call data records),
|
||||
which are commonly used for accounting/billing purpose.
|
||||
|
||||
.Example: CDR log file configuration
|
||||
----
|
||||
OsmoSGSN(config-sgsn)# cdr filename /var/log/osmosgsn.cdr
|
||||
OsmoSGSN(config-sgsn)# cdr interval 600 <1>
|
||||
----
|
||||
<1> Periodically log existing PDP contexts every 600 seconds (10 min)
|
||||
|
||||
The CDR file is a simple CSV file including a header line naming the
|
||||
individual fields of each CSV line.
|
||||
|
||||
==== CDR CTRL interface
|
||||
|
||||
Independently of whether logging CDR to a file is enabled or not, OsmoSGSN can
|
||||
also provide delivery of CDR through the CTRL interface. CDR are sent by means
|
||||
of TRAP messages with variable name _cdr-v1_, and its value is filled using the
|
||||
same CSV line format as in the log file, but without CSV header line.
|
||||
|
||||
.Example: CDR delivery through CTRL TRAP messages
|
||||
----
|
||||
OsmoSGSN(config-sgsn)# cdr trap
|
||||
----
|
||||
|
||||
==== CDR Format
|
||||
|
||||
[[sgsn-cdr]]
|
||||
.Description of CSV fields in OsmoSGSN CDR file
|
||||
[options="header",cols="15%,85%"]
|
||||
|===
|
||||
|Field Name|Description
|
||||
|timestamp|Timestamp in YYYYMMDDhhmmssXXX where XXX are milli-seconds
|
||||
|imsi|IMSI causing this CDR
|
||||
|imei|IMEI causing this CDR
|
||||
|msisdn|MSISDN causing this CDR (if known)
|
||||
|cell_id|Cell ID in which the MS was registered last
|
||||
|lac|Location Area Code in which the MS was registered last
|
||||
|hlr|HLR of the subscriber
|
||||
|event|Possible events are explained below in <<sgsn-cdr-event>>
|
||||
|===
|
||||
|
||||
If the _event_ field describes a pdp context related action (starts with
|
||||
_pdp-_), then the following extra CSV fields are appended to the line:
|
||||
|
||||
[[sgsn-cdr-pdp]]
|
||||
.Description of extra CSV fields for pdp context related events
|
||||
[options="header",cols="15%,85%"]
|
||||
|===
|
||||
|Field Name|Description
|
||||
|pdp_duration|duration of the PDP context so far
|
||||
|ggsn_addr|GGSN related to the PDP context
|
||||
|sgsn_addr|SGSN related to the PDP context
|
||||
|apni|APN identifier of the PDP context
|
||||
|eua_addr|IP address allocated to the PDP context
|
||||
|vol_in|Number of bytes in MO direction
|
||||
|vol_out|Number of bytes in MT direction
|
||||
|charging_id|Related charging ID
|
||||
|===
|
||||
|
||||
[[sgsn-cdr-event]]
|
||||
.Description of OsmoSGSN CDR Events
|
||||
[options="header",cols="15%,85%"]
|
||||
|===
|
||||
|Event|Description
|
||||
|attach|GMM ATTACH COMPLETE about to be sent to MS
|
||||
|update|GMM ROUTING AREA UPDATE COMPLETE about to be sent to MS
|
||||
|detach|GMM DETACH REQUEST received from MS
|
||||
|free|Release of the MM context memory
|
||||
|pdp-act|GTP CREATE PDP CONTEXT CONFIRM received from GGSN
|
||||
|pdp-deact|GTP DELETE PDP CONTEXT CONFIRM received from GGSN
|
||||
|pdp-terminate|Forced PDP context termination during MM context release
|
||||
|pdp-free|Release of the PDP context memory
|
||||
|pdp-periodic|Triggered by periodic timer, see VTY cmd _cdr interval_
|
||||
|===
|
||||
|
||||
|
||||
=== User traffic compression
|
||||
|
||||
In order to save GPRS bandwith, OsmoSGSN implements header and data
|
||||
compression schemes which will reduce the packet length.
|
||||
|
||||
==== Header compression
|
||||
|
||||
On TCP/IP connections, each packet is prepended with a fairly long TCP/IP
|
||||
header. The header contains a lot of static information that never changes
|
||||
throughout the connection. (source and destination address, port numbers etc.)
|
||||
OsmoSGSN implements a TCP/IP header compression scheme called RFC1144, also
|
||||
known as SLHC. This type of header compression removes the TCP/IP header
|
||||
entirely and replaces it with a shorter version, that only contains the
|
||||
information that is absolutely necessary to identify and check the packet.
|
||||
The receiving part then restores the original header and forwards it to higher
|
||||
layers.
|
||||
|
||||
*compression rfc1144 passive*::
|
||||
TCP/IP header compression has to be actively requested by the modem. The
|
||||
network will not promote compression by itself. This is the recommended mode
|
||||
of operation.
|
||||
|
||||
*compression rfc1144 active slots <1-256>*::
|
||||
TCP/IP header compression is actively promoted by the network. Modems may still
|
||||
actively request different compression parameters or reject the offered
|
||||
compression parameters entirely. The number of slots is the maximum number
|
||||
of packet headers per subscriber that can be stored in the codebook.
|
||||
|
||||
.Example: Accept compression if requested
|
||||
----
|
||||
sgsn
|
||||
compression rfc1144 passive
|
||||
----
|
||||
|
||||
.Example: Actively promote compression
|
||||
----
|
||||
sgsn
|
||||
compression rfc1144 active slots 8
|
||||
----
|
||||
|
||||
.Example: Turn off compression
|
||||
----
|
||||
sgsn
|
||||
no compression rfc1144
|
||||
----
|
||||
|
||||
NOTE: The usage of TCP/IP options may disturb the RFC1144 header compression
|
||||
scheme. TCP/IP options may render RFC1144 ineffective if variable data is
|
||||
encoded into the option section of the TCP/IP packet. (e.g. TCP option 8,
|
||||
Timestamp)
|
||||
|
||||
|
||||
==== Data compression
|
||||
|
||||
Data compression works on the raw packet data, including the header part of the
|
||||
packet. If enabled, header compression is applied first before data compression
|
||||
is applied. OsmoSGSN implements the V.42bis data compression scheme.
|
||||
|
||||
*compression v42bis passive*::
|
||||
V42bis data compression has to be actively requested by the modem. The network
|
||||
will not promote compression by itself. This is the recommended mode of
|
||||
operation.
|
||||
|
||||
*compression v42bis active direction (ms|sgsn|both) codewords <512-65535> strlen <6-250>*::
|
||||
V42bis data compression is actively promoted by the network. Modems may still
|
||||
actively request different compression parameters or reject the offered
|
||||
compression parameters entirely. The direction configures which sides are
|
||||
allowed to send compressed packets. For most cases, compressing 'both'
|
||||
directions will be the preferred option. The following to parameters configure
|
||||
the codebook size by the maxium number ('codewords') and size ('strlen') of
|
||||
entries.
|
||||
|
||||
.Example: Accept compression if requested
|
||||
----
|
||||
sgsn
|
||||
compression v42bis passive
|
||||
----
|
||||
|
||||
.Example: Actively promote compression
|
||||
----
|
||||
sgsn
|
||||
compression v42bis active direction both codewords 512 strlen 20
|
||||
----
|
||||
|
||||
.Example: Turn off compression
|
||||
----
|
||||
sgsn
|
||||
no compression v42bis
|
||||
----
|
||||
|
||||
=== Encryption
|
||||
|
||||
Encryption can be enabled if the auth-policy is set to remote and the
|
||||
HLR subscriber entries contain the keys of the SIM card. See
|
||||
<<sgsn-ex-gsup>> on how to connect to an external HLR.
|
||||
|
||||
.Example: Turn on encryption (GEA3)
|
||||
----
|
||||
sgsn
|
||||
encryption GEA3
|
||||
----
|
||||
|
||||
.Example: Turn off encryption (GEA0)
|
||||
----
|
||||
sgsn
|
||||
encryption GEA0
|
||||
----
|
||||
|
||||
=== Configure SCCP/M3UA to accept _IuPS_ links
|
||||
|
||||
OsmoSGSN acts as client to contact an STP instance and establish an SCCP/M3UA
|
||||
link.
|
||||
|
||||
An example configuration of OsmoSGSN's SCCP link:
|
||||
|
||||
----
|
||||
cs7 instance 0
|
||||
point-code 0.23.4
|
||||
asp asp-clnt-OsmoSGSN 2905 0 m3ua
|
||||
remote-ip 127.0.0.1
|
||||
sctp-role client
|
||||
as as-clnt-OsmoSGSN m3ua
|
||||
asp asp-clnt-OsmoSGSN
|
||||
routing-key 0 0.23.4
|
||||
----
|
||||
|
||||
This configuration is explained in detail in <<cs7_config>>.
|
|
@ -1,23 +0,0 @@
|
|||
[[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 OsmoSGSN.
|
||||
|
||||
.Variables available over control interface
|
||||
[options="header",width="100%",cols="20%,5%,5%,50%,20%"]
|
||||
|===
|
||||
|Name|Access|Trap|Value|Comment
|
||||
|subscriber-list-active-v1|RO|No|"<imsi>,<addr>"|See <<subs>> for details.
|
||||
|===
|
||||
|
||||
[[subs]]
|
||||
=== subscriber-list-active-v1
|
||||
|
||||
Return the list of active subscribers as a concatenated set of pairs "<imsi>",
|
||||
"addr" where first element of the pair is subscriber's IMSI and the second
|
||||
element (which might be empty) is the subscriber's address. The address value
|
||||
might be "none", "invalid" and "PPP" in addition to actual IP address. In case
|
||||
of IP address it will be prefixed with "IPv4" or "IPv6" string depending on the
|
||||
version of IP protocol.
|
|
@ -1,4 +0,0 @@
|
|||
[[counters]]
|
||||
== Counters
|
||||
|
||||
include::./counters_generated.adoc[]
|
|
@ -1,52 +1,10 @@
|
|||
|
||||
// autogenerated by show asciidoc counters
|
||||
These counters and their description based on OsmoSGSN 1.4.0.31-05fe (OsmoSGSN).
|
||||
These counters and their description are based on OsmoGbProxy UNKNOWN-dirty (OsmoGbProxy).
|
||||
|
||||
=== Rate Counters
|
||||
|
||||
// generating tables for rate_ctr_group
|
||||
// rate_ctr_group table BSSGP Peer Statistics
|
||||
.bssgp:bss_ctx - BSSGP Peer Statistics
|
||||
[options="header"]
|
||||
|===
|
||||
| Name | Reference | Description
|
||||
| packets:in | <<bssgp:bss_ctx_packets:in>> | Packets at BSSGP Level ( In)
|
||||
| packets:out | <<bssgp:bss_ctx_packets:out>> | Packets at BSSGP Level (Out)
|
||||
| bytes:in | <<bssgp:bss_ctx_bytes:in>> | Bytes at BSSGP Level ( In)
|
||||
| bytes:out | <<bssgp:bss_ctx_bytes:out>> | Bytes at BSSGP Level (Out)
|
||||
| blocked | <<bssgp:bss_ctx_blocked>> | BVC Blocking count
|
||||
| discarded | <<bssgp:bss_ctx_discarded>> | BVC LLC Discarded count
|
||||
| status | <<bssgp:bss_ctx_status>> | BVC Status count
|
||||
|===
|
||||
// rate_ctr_group table SGSN Overall Statistics
|
||||
.sgsn - SGSN Overall Statistics
|
||||
[options="header"]
|
||||
|===
|
||||
| Name | Reference | Description
|
||||
| llc:dl_bytes | <<sgsn_llc:dl_bytes>> | Count sent LLC bytes before giving it to the bssgp layer
|
||||
| llc:ul_bytes | <<sgsn_llc:ul_bytes>> | Count successful received LLC bytes (encrypt & fcs correct)
|
||||
| llc:dl_packets | <<sgsn_llc:dl_packets>> | Count successful sent LLC packets before giving it to the bssgp layer
|
||||
| llc:ul_packets | <<sgsn_llc:ul_packets>> | Count successful received LLC packets (encrypt & fcs correct)
|
||||
| gprs:attach_requested | <<sgsn_gprs:attach_requested>> | Received attach requests
|
||||
| gprs:attach_accepted | <<sgsn_gprs:attach_accepted>> | Sent attach accepts
|
||||
| gprs:attach_rejected | <<sgsn_gprs:attach_rejected>> | Sent attach rejects
|
||||
| gprs:detach_requested | <<sgsn_gprs:detach_requested>> | Received detach requests
|
||||
| gprs:detach_acked | <<sgsn_gprs:detach_acked>> | Sent detach acks
|
||||
| gprs:routing_area_requested | <<sgsn_gprs:routing_area_requested>> | Received routing area requests
|
||||
| gprs:routing_area_requested | <<sgsn_gprs:routing_area_requested>> | Sent routing area acks
|
||||
| gprs:routing_area_requested | <<sgsn_gprs:routing_area_requested>> | Sent routing area rejects
|
||||
| pdp:activate_requested | <<sgsn_pdp:activate_requested>> | Received activate requests
|
||||
| pdp:activate_rejected | <<sgsn_pdp:activate_rejected>> | Sent activate rejects
|
||||
| pdp:activate_accepted | <<sgsn_pdp:activate_accepted>> | Sent activate accepts
|
||||
| pdp:request_activated | <<sgsn_pdp:request_activated>> | unused
|
||||
| pdp:request_activate_rejected | <<sgsn_pdp:request_activate_rejected>> | unused
|
||||
| pdp:modify_requested | <<sgsn_pdp:modify_requested>> | unused
|
||||
| pdp:modify_accepted | <<sgsn_pdp:modify_accepted>> | unused
|
||||
| pdp:dl_deactivate_requested | <<sgsn_pdp:dl_deactivate_requested>> | Sent deactivate requests
|
||||
| pdp:dl_deactivate_accepted | <<sgsn_pdp:dl_deactivate_accepted>> | Sent deactivate accepted
|
||||
| pdp:ul_deactivate_requested | <<sgsn_pdp:ul_deactivate_requested>> | Received deactivate requests
|
||||
| pdp:ul_deactivate_accepted | <<sgsn_pdp:ul_deactivate_accepted>> | Received deactivate accepts
|
||||
|===
|
||||
// rate_ctr_group table NSVC Peer Statistics
|
||||
.ns:nsvc - NSVC Peer Statistics
|
||||
[options="header"]
|
||||
|
@ -54,17 +12,47 @@ These counters and their description based on OsmoSGSN 1.4.0.31-05fe (OsmoSGSN).
|
|||
| Name | Reference | Description
|
||||
| packets:in | <<ns:nsvc_packets:in>> | Packets at NS Level ( In)
|
||||
| packets:out | <<ns:nsvc_packets:out>> | Packets at NS Level (Out)
|
||||
| packets:out:drop | <<ns:nsvc_packets:out:drop>> | Dropped Packets (Out)
|
||||
| bytes:in | <<ns:nsvc_bytes:in>> | Bytes at NS Level ( In)
|
||||
| bytes:out | <<ns:nsvc_bytes:out>> | Bytes at NS Level (Out)
|
||||
| bytes:out:drop | <<ns:nsvc_bytes:out:drop>> | Dropped Bytes (Out)
|
||||
| blocked | <<ns:nsvc_blocked>> | NS-VC Block count
|
||||
| unblocked | <<ns:nsvc_unblocked>> | NS-VC Unblock count
|
||||
| dead | <<ns:nsvc_dead>> | NS-VC gone dead count
|
||||
| replaced | <<ns:nsvc_replaced>> | NS-VC replaced other count
|
||||
| nsei-chg | <<ns:nsvc_nsei-chg>> | NS-VC changed NSEI count
|
||||
| inv-nsvci | <<ns:nsvc_inv-nsvci>> | NS-VCI was invalid count
|
||||
| inv-nsei | <<ns:nsvc_inv-nsei>> | NSEI was invalid count
|
||||
| lost:alive | <<ns:nsvc_lost:alive>> | ALIVE ACK missing count
|
||||
| lost:reset | <<ns:nsvc_lost:reset>> | RESET ACK missing count
|
||||
|===
|
||||
// rate_ctr_group table GBProxy Peer Statistics
|
||||
.gbproxy:peer - GBProxy Peer Statistics
|
||||
[options="header"]
|
||||
|===
|
||||
| Name | Reference | Description
|
||||
| blocked | <<gbproxy:peer_blocked>> | BVC Block
|
||||
| unblocked | <<gbproxy:peer_unblocked>> | BVC Unblock
|
||||
| dropped | <<gbproxy:peer_dropped>> | BVC blocked, dropped packet
|
||||
| inv-nsei | <<gbproxy:peer_inv-nsei>> | NSEI mismatch
|
||||
| tx-err | <<gbproxy:peer_tx-err>> | NS Transmission error
|
||||
|===
|
||||
// rate_ctr_group table GBProxy Global Statistics
|
||||
.gbproxy:global - GBProxy Global Statistics
|
||||
[options="header"]
|
||||
|===
|
||||
| Name | Reference | Description
|
||||
| inv-bvci | <<gbproxy:global_inv-bvci>> | Invalid BVC Identifier
|
||||
| inv-lai | <<gbproxy:global_inv-lai>> | Invalid Location Area Identifier
|
||||
| inv-rai | <<gbproxy:global_inv-rai>> | Invalid Routing Area Identifier
|
||||
| inv-nsei | <<gbproxy:global_inv-nsei>> | No BVC established for NSEI
|
||||
| proto-err:bss | <<gbproxy:global_proto-err:bss>> | BSSGP protocol error (BSS )
|
||||
| proto-err:sgsn | <<gbproxy:global_proto-err:sgsn>> | BSSGP protocol error (SGSN)
|
||||
| not-supp:bss | <<gbproxy:global_not-supp:bss>> | Feature not supported (BSS )
|
||||
| not-supp:sgsn | <<gbproxy:global_not-supp:sgsn>> | Feature not supported (SGSN)
|
||||
| restart:sgsn | <<gbproxy:global_restart:sgsn>> | Restarted RESET procedure (SGSN)
|
||||
| tx-err:sgsn | <<gbproxy:global_tx-err:sgsn>> | NS Transmission error (SGSN)
|
||||
| error | <<gbproxy:global_error>> | Other error
|
||||
| mod-peer-err | <<gbproxy:global_mod-peer-err>> | Patch error: no peer
|
||||
|===
|
||||
== Osmo Stat Items
|
||||
|
||||
// generating tables for osmo_stat_items
|
||||
|
@ -76,6 +64,14 @@ NSVC Peer Statistics
|
|||
| Name | Reference | Description | Unit
|
||||
| alive.delay | <<ns.nsvc_alive.delay>> | ALIVE response time | ms
|
||||
|===
|
||||
NS Bind Statistics
|
||||
// osmo_stat_item_group table NS Bind Statistics
|
||||
.ns.bind - NS Bind Statistics
|
||||
[options="header"]
|
||||
|===
|
||||
| Name | Reference | Description | Unit
|
||||
| tx_backlog_length | <<ns.bind_tx_backlog_length>> | Transmit backlog length | packets
|
||||
|===
|
||||
== Osmo Counters
|
||||
|
||||
// generating tables for osmo_counters
|
||||
|
|
|
@ -1,109 +0,0 @@
|
|||
[[chapter_introduction]]
|
||||
== Overview
|
||||
|
||||
[[intro_overview]]
|
||||
=== About OsmoSGSN
|
||||
|
||||
OsmoSGSN is the Osmocom implementation of the GPRS SGSN (Serving Gprs
|
||||
Support Node) element inside the GPRS network. The SGSN plays a similar
|
||||
central function to the GPRS network as the MSC plays in the GSM
|
||||
network.
|
||||
|
||||
The SGSN is connected on the downlink side to Gb interfaces of the BSS,
|
||||
specifically the PCU inside the BSS. The SGSN is further connected by
|
||||
the GTP protocol to the GGSN which terminates the tunnels towards the
|
||||
external packet data network (e.g. IPv4).
|
||||
|
||||
OsmoSGSN supports both a PCU that is co-located with(in) the BTS, as
|
||||
well as a PCU that is co-located with(in) the BSC. In combination with
|
||||
OsmoNITB/OsmoBSC/OsmoBTS, the PCU is co-located within the BTS.
|
||||
|
||||
[[fig-gprs-pcubts]]
|
||||
.GPRS network architecture with PCU in BTS
|
||||
[graphviz]
|
||||
----
|
||||
digraph G {
|
||||
rankdir=LR;
|
||||
MS0 [label="MS"];
|
||||
MS1 [label="MS"];
|
||||
MS0->BTS [label="Um"];
|
||||
MS1->BTS [label="Um"];
|
||||
BTS->BSC [label="Abis"];
|
||||
BSC->MSC [label="A"];
|
||||
BTS->PCU [label="pcu_sock"];
|
||||
PCU->SGSN [label="Gb"];
|
||||
SGSN->GGSN [label="GTP"];
|
||||
}
|
||||
----
|
||||
|
||||
=== Software Components
|
||||
|
||||
OsmoSGSN contains a variety of different software components, which
|
||||
we'll quickly describe in this section.
|
||||
|
||||
==== Gb Implementation
|
||||
|
||||
OsmoSGSN implements the ETSI/3GPP specified Gb interface, including TS
|
||||
08.16 (NS), TS 08.18 (BSSGP) and TS 08.64 (LLC) protocols. As transport
|
||||
layers for NS, it supports NS/IP (NS encapsulated in UDP/IP), as well as
|
||||
NS/FR/GRE/IP. The latter is provided in order to use a Router with
|
||||
Ethernet and Frame Relay interface to convert to actual physical Frame
|
||||
Relay medium, which is not directly supported by OsmoSGSN.
|
||||
|
||||
The actual Gb Implementation is part of the libosmogb library, which is
|
||||
in turn part of the libosmocore software package. This allows the same
|
||||
Gb implementation to be used from osmo-pcu, osmo-gbproxy as well as
|
||||
OsmoSGSN.
|
||||
|
||||
|
||||
==== GTP Implementation
|
||||
|
||||
OsmoSGSN uses the libgtp implementation originating from OsmoGGSN. It
|
||||
supports both GTPv0 and GTPv1.
|
||||
|
||||
|
||||
==== GMM Implementation
|
||||
|
||||
The GPRS Mobility Management implementation is quite simplistic at this
|
||||
point. It supports the GPRS ATTACH and GPRS ROUTING AREA UPDATE
|
||||
procedures, as well as GPRS ATTACH and GPRS DETACH.
|
||||
|
||||
==== LLC Implementation
|
||||
|
||||
The LLC (Logical Link Control) implementation of OsmoSGSN only supports
|
||||
non-acknowledged mode, as this is the most common use case in real-world
|
||||
GPRS networks.
|
||||
|
||||
It does support both TCP/IP header compression according to RFC1144 and
|
||||
payload compression according to V.42bis
|
||||
|
||||
The LLC implementation does support LLC encryption with ciphers GEA3 and GEA4.
|
||||
For encryption to work the auth policy needs to be set to remote and the SGSN
|
||||
connected to an HLR containing the subscriber data including key material.
|
||||
Other auth policys will not work with encryption.
|
||||
|
||||
==== Session Management Implementation
|
||||
|
||||
The session management procedures ACTIVATE PDP CONTEXT and DEACTIVATE
|
||||
PDP CONTEXT are supported. However, no MODIFY PDP CONTEXT and no
|
||||
Network-initiated PDP context activation is possible. This is again
|
||||
covering the predominant use cases and configurations in GPRS real-world
|
||||
networks while skipping the more esoteric features.
|
||||
|
||||
Multiple PDP contexts can be attached by a single MS.
|
||||
|
||||
Multiple GGSNs can be configured and routing to a GGSN can be configured based
|
||||
on APN. Dynamic lookup of GGSNs though DNS-based APN resolving is also possible.
|
||||
|
||||
=== Limitations
|
||||
|
||||
At the time of writing, OsmoSGSN still has a number of limitations,
|
||||
which are a result of the demand-driven Open Source development model.
|
||||
If you require any of those features, please consider implementing and
|
||||
contributing them, or contracting the existing OsmoSGSN developers for
|
||||
performing that work.
|
||||
|
||||
Known Limitations include:
|
||||
|
||||
* No paging coordination between SGSN and MSC
|
||||
* No SMS over Ps support
|
|
@ -1,35 +0,0 @@
|
|||
== Running OsmoSGSN
|
||||
|
||||
The OsmoSGSN executable (`osmo-sgsn`) offers the following command-line
|
||||
options:
|
||||
|
||||
|
||||
=== SYNOPSIS
|
||||
|
||||
*osmo-sgsn* [-h|-V] [-d 'DBGMASK'] [-D] [-c 'CONFIGFILE'] [-s] [-e 'LOGLEVEL']
|
||||
|
||||
|
||||
=== OPTIONS
|
||||
|
||||
*-h, --help*::
|
||||
Print a short help message about the supported options
|
||||
*-V, --version*::
|
||||
Print the compile-time version number of the OsmoSGSN 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.
|
|
@ -25,7 +25,7 @@ include::./common/chapters/gb.adoc[]
|
|||
|
||||
include::./common/chapters/control_if.adoc[]
|
||||
|
||||
//include::{srcdir}/chapters/counters.adoc[]
|
||||
include::{srcdir}/chapters/counters_generated.adoc[]
|
||||
|
||||
include::./common/chapters/port_numbers.adoc[]
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<!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" >
|
||||
<!ENTITY sections-vty SYSTEM "generated/docbook_vty.xml" >
|
||||
]>
|
||||
|
||||
<book>
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
<revhistory>
|
||||
<revision>
|
||||
<revnumber>1</revnumber>
|
||||
<date>January 13, 2013</date>
|
||||
<authorinitials>HW</authorinitials>
|
||||
<revremark>
|
||||
Initial version.
|
||||
</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>2</revnumber>
|
||||
<date>February 2016</date>
|
||||
<authorinitials>HW</authorinitials>
|
||||
<revremark>
|
||||
Conversion to asciidoc, removal of sysmoBTS specific parts.
|
||||
</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-2016</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="http://git.osmocom.org/osmo-gsm-manuals/">
|
||||
http://git.osmocom.org/osmo-gsm-manuals/
|
||||
</ulink>
|
||||
</para>
|
||||
</legalnotice>
|
|
@ -1,40 +0,0 @@
|
|||
:gfdl-enabled:
|
||||
|
||||
OsmoSGSN User Manual
|
||||
====================
|
||||
Harald Welte <hwelte@sysmocom.de>
|
||||
|
||||
|
||||
include::./common/chapters/preface.adoc[]
|
||||
|
||||
include::{srcdir}/chapters/overview.adoc[]
|
||||
|
||||
include::{srcdir}/chapters/running.adoc[]
|
||||
|
||||
include::{srcdir}/chapters/control.adoc[]
|
||||
|
||||
include::./common/chapters/vty.adoc[]
|
||||
|
||||
include::./common/chapters/logging.adoc[]
|
||||
|
||||
include::{srcdir}/chapters/configuration.adoc[]
|
||||
|
||||
include::./common/chapters/cs7-config.adoc[]
|
||||
|
||||
include::./common/chapters/gb.adoc[]
|
||||
|
||||
include::./common/chapters/control_if.adoc[]
|
||||
|
||||
include::./common/chapters/oap.adoc[]
|
||||
|
||||
include::./common/chapters/gsup.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[]
|
|
@ -1,44 +0,0 @@
|
|||
<?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_vty.xml" >
|
||||
]>
|
||||
|
||||
<book>
|
||||
<info>
|
||||
<revhistory>
|
||||
<revision>
|
||||
<revnumber>v1</revnumber>
|
||||
<date>13th January 2013</date>
|
||||
<authorinitials>hw</authorinitials>
|
||||
<revremark>Initial</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>v2</revnumber>
|
||||
<date>5th March 2014</date>
|
||||
<authorinitials>hf</authorinitials>
|
||||
<revremark>Update to match osmo-bsc version 0.13.0-305</revremark>
|
||||
</revision>
|
||||
</revhistory>
|
||||
|
||||
<title>OsmoSGSN VTY Reference</title>
|
||||
|
||||
<copyright>
|
||||
<year>2013-2014</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>
|
||||
|
|
@ -51,27 +51,24 @@ interact_vty() {
|
|||
}
|
||||
|
||||
DIR="$(cd "$(dirname "$0")"; pwd)"
|
||||
echo $DIR
|
||||
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" \
|
||||
"vty/gbproxy_vty_reference.xml" \
|
||||
4246 \
|
||||
osmo-gbproxy -c "../examples/osmo-gbproxy/osmo-gbproxy.cfg"
|
||||
|
||||
sleep 5
|
||||
|
||||
interact_vty \
|
||||
"update_counters" \
|
||||
"chapters/counters_generated.adoc" \
|
||||
4245 \
|
||||
osmo-sgsn -c "../examples/osmo-sgsn/osmo-sgsn.cfg"
|
||||
4246 \
|
||||
osmo-gbproxy -c "../examples/osmo-gbproxy/osmo-gbproxy.cfg"
|
||||
|
||||
|
||||
echo "Done with all"
|
||||
|
|
|
@ -7,9 +7,25 @@
|
|||
<param name='help' doc='Description of the interactive help system' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='list'>
|
||||
<command id='list [with-flags]'>
|
||||
<params>
|
||||
<param name='list' doc='Print command list' />
|
||||
<param name='[with-flags]' doc='Also print the VTY attribute flags' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show vty-attributes'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='vty-attributes' doc='List of VTY attributes' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show vty-attributes (application|library|global)'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='vty-attributes' doc='List of VTY attributes' />
|
||||
<param name='application' doc='Application specific attributes only' />
|
||||
<param name='library' doc='Library specific attributes only' />
|
||||
<param name='global' doc='Global attributes only' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='write terminal'>
|
||||
|
@ -67,9 +83,10 @@
|
|||
<param name='online-help' doc='Online help' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='enable'>
|
||||
<command id='enable [expert-mode]'>
|
||||
<params>
|
||||
<param name='enable' doc='Turn on privileged mode command' />
|
||||
<param name='[expert-mode]' doc='Enable the expert mode (show hidden commands)' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='terminal length <0-512>'>
|
||||
|
@ -188,13 +205,13 @@
|
|||
<param name='MASK' doc='List of logging categories to log, e.g. 'abc:mno:xyz'. Available log categories depend on the specific application, refer to the 'logging level' command. Optionally add individual log levels like 'abc,1:mno,3:xyz,5', 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)'>
|
||||
<command id='logging level (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (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='obj' doc='GbProxy object allocation/release' />
|
||||
<param name='lglobal' doc='Library-internal global log family' />
|
||||
<param name='llapd' doc='LAPD in libosmogsm' />
|
||||
<param name='linp' doc='A-bis Intput Subsystem' />
|
||||
|
@ -214,6 +231,8 @@
|
|||
<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='lns' doc='GPRS NS layer' />
|
||||
<param name='lbssgp' doc='GPRS BSSGP layer' />
|
||||
<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' />
|
||||
|
@ -253,12 +272,12 @@
|
|||
<param name='force-all' doc='Release any globally forced log level set with 'logging level force-all <level>'' />
|
||||
</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'>
|
||||
<command id='logp (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (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='obj' doc='GbProxy object allocation/release' />
|
||||
<param name='lglobal' doc='Library-internal global log family' />
|
||||
<param name='llapd' doc='LAPD in libosmogsm' />
|
||||
<param name='linp' doc='A-bis Intput Subsystem' />
|
||||
|
@ -278,6 +297,8 @@
|
|||
<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='lns' doc='GPRS NS layer' />
|
||||
<param name='lbssgp' doc='GPRS BSSGP layer' />
|
||||
<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' />
|
||||
|
@ -365,10 +386,49 @@
|
|||
<param name='rate-counters' doc='Show all rate counters' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show gbproxy [stats]'>
|
||||
<command id='show fsm NAME'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='fsm' doc='Show information about finite state machines' />
|
||||
<param name='NAME' doc='Display information about a single named finite state machine' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show fsm all'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='fsm' doc='Show information about finite state machines' />
|
||||
<param name='all' doc='Display a list of all registered finite state machines' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show fsm-instances NAME'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='fsm-instances' doc='Show information about finite state machine instances' />
|
||||
<param name='NAME' doc='Display a list of all FSM instances of the named finite state machine' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show fsm-instances all'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='fsm-instances' doc='Show information about finite state machine instances' />
|
||||
<param name='all' doc='Display a list of all FSM instances of all finite state machine' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show gbproxy bvc (bss|sgsn) [stats]'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='gbproxy' doc='Display information about the Gb proxy' />
|
||||
<param name='bvc' doc='Show BSSGP Virtual Connections' />
|
||||
<param name='bss' doc='Display BSS-side BVCs' />
|
||||
<param name='sgsn' doc='Display SGSN-side BVCs' />
|
||||
<param name='[stats]' doc='Show statistics' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show gbproxy cell [stats]'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='gbproxy' doc='Display information about the Gb proxy' />
|
||||
<param name='cell' doc='Show GPRS Cell Information' />
|
||||
<param name='[stats]' doc='Show statistics' />
|
||||
</params>
|
||||
</command>
|
||||
|
@ -379,43 +439,41 @@
|
|||
<param name='links' doc='Show logical links' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show ns'>
|
||||
<command id='show gbproxy tlli-cache'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='ns' doc='Display information about the NS protocol' />
|
||||
<param name='gbproxy' doc='Display information about the Gb proxy' />
|
||||
<param name='tlli-cache' doc='Show TLLI cache entries' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show ns stats'>
|
||||
<command id='show gbproxy imsi-cache'>
|
||||
<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' />
|
||||
<param name='gbproxy' doc='Display information about the Gb proxy' />
|
||||
<param name='imsi-cache' doc='Show IMSI cache entries' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show ns persistent'>
|
||||
<command id='show nri all'>
|
||||
<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' />
|
||||
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
|
||||
<param name='all' doc='Show all SGSNs' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show ns (nsei|nsvc) <0-65535> [stats]'>
|
||||
<command id='show nri nsei <0-65535>'>
|
||||
<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='<0-65535>' doc='The Identifier of selected type' />
|
||||
<param name='[stats]' doc='Include Statistics' />
|
||||
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
|
||||
<param name='nsei' doc='Identify SGSN by NSEI' />
|
||||
<param name='<0-65535>' doc='NSEI of the SGSN' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='logging filter nsvc (nsei|nsvci) <0-65535>'>
|
||||
<command id='logging filter bvc bvci <0-65535>'>
|
||||
<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='bvc' doc='Filter based on BSSGP VC' />
|
||||
<param name='bvci' doc='Identify BVC by BVCI' />
|
||||
<param name='<0-65535>' doc='Numeric identifier' />
|
||||
</params>
|
||||
</command>
|
||||
|
@ -587,13 +645,13 @@
|
|||
<param name='MASK' doc='List of logging categories to log, e.g. 'abc:mno:xyz'. Available log categories depend on the specific application, refer to the 'logging level' command. Optionally add individual log levels like 'abc,1:mno,3:xyz,5', 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)'>
|
||||
<command id='logging level (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (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='obj' doc='GbProxy object allocation/release' />
|
||||
<param name='lglobal' doc='Library-internal global log family' />
|
||||
<param name='llapd' doc='LAPD in libosmogsm' />
|
||||
<param name='linp' doc='A-bis Intput Subsystem' />
|
||||
|
@ -613,6 +671,8 @@
|
|||
<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='lns' doc='GPRS NS layer' />
|
||||
<param name='lbssgp' doc='GPRS BSSGP layer' />
|
||||
<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' />
|
||||
|
@ -652,12 +712,12 @@
|
|||
<param name='force-all' doc='Release any globally forced log level set with 'logging level force-all <level>'' />
|
||||
</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'>
|
||||
<command id='logp (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (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='obj' doc='GbProxy object allocation/release' />
|
||||
<param name='lglobal' doc='Library-internal global log family' />
|
||||
<param name='llapd' doc='LAPD in libosmogsm' />
|
||||
<param name='linp' doc='A-bis Intput Subsystem' />
|
||||
|
@ -677,6 +737,8 @@
|
|||
<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='lns' doc='GPRS NS layer' />
|
||||
<param name='lbssgp' doc='GPRS BSSGP layer' />
|
||||
<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' />
|
||||
|
@ -764,10 +826,61 @@
|
|||
<param name='rate-counters' doc='Show all rate counters' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show gbproxy [stats]'>
|
||||
<command id='stats report'>
|
||||
<params>
|
||||
<param name='stats' doc='Stats related commands' />
|
||||
<param name='report' doc='Manurally trigger reporting of stats' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='stats reset'>
|
||||
<params>
|
||||
<param name='stats' doc='Stats related commands' />
|
||||
<param name='reset' doc='Reset all stats' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show fsm NAME'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='fsm' doc='Show information about finite state machines' />
|
||||
<param name='NAME' doc='Display information about a single named finite state machine' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show fsm all'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='fsm' doc='Show information about finite state machines' />
|
||||
<param name='all' doc='Display a list of all registered finite state machines' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show fsm-instances NAME'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='fsm-instances' doc='Show information about finite state machine instances' />
|
||||
<param name='NAME' doc='Display a list of all FSM instances of the named finite state machine' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show fsm-instances all'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='fsm-instances' doc='Show information about finite state machine instances' />
|
||||
<param name='all' doc='Display a list of all FSM instances of all finite state machine' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show gbproxy bvc (bss|sgsn) [stats]'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='gbproxy' doc='Display information about the Gb proxy' />
|
||||
<param name='bvc' doc='Show BSSGP Virtual Connections' />
|
||||
<param name='bss' doc='Display BSS-side BVCs' />
|
||||
<param name='sgsn' doc='Display SGSN-side BVCs' />
|
||||
<param name='[stats]' doc='Show statistics' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show gbproxy cell [stats]'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='gbproxy' doc='Display information about the Gb proxy' />
|
||||
<param name='cell' doc='Show GPRS Cell Information' />
|
||||
<param name='[stats]' doc='Show statistics' />
|
||||
</params>
|
||||
</command>
|
||||
|
@ -778,17 +891,55 @@
|
|||
<param name='links' doc='Show logical links' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show gbproxy tlli-cache'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='gbproxy' doc='Display information about the Gb proxy' />
|
||||
<param name='tlli-cache' doc='Show TLLI cache entries' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show gbproxy imsi-cache'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='gbproxy' doc='Display information about the Gb proxy' />
|
||||
<param name='imsi-cache' doc='Show IMSI cache entries' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show nri all'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
|
||||
<param name='all' doc='Show all SGSNs' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='show nri nsei <0-65535>'>
|
||||
<params>
|
||||
<param name='show' doc='Show running system information' />
|
||||
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
|
||||
<param name='nsei' doc='Identify SGSN by NSEI' />
|
||||
<param name='<0-65535>' doc='NSEI of the SGSN' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='logging filter bvc bvci <0-65535>'>
|
||||
<params>
|
||||
<param name='logging' doc='Configure logging' />
|
||||
<param name='filter' doc='Filter log messages' />
|
||||
<param name='bvc' doc='Filter based on BSSGP VC' />
|
||||
<param name='bvci' doc='Identify BVC by BVCI' />
|
||||
<param name='<0-65535>' doc='Numeric identifier' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='delete-gbproxy-peer <0-65534> bvci <2-65534>'>
|
||||
<params>
|
||||
<param name='delete-gbproxy-peer' doc='Delete a GBProxy peer by NSEI and optionally BVCI' />
|
||||
<param name='delete-gbproxy-peer' doc='Delete a GBProxy bvc by NSEI and optionally BVCI' />
|
||||
<param name='<0-65534>' doc='NSEI number' />
|
||||
<param name='bvci' doc='Only delete peer with a matching BVCI' />
|
||||
<param name='bvci' doc='Only delete bvc with a matching BVCI' />
|
||||
<param name='<2-65534>' doc='BVCI number' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='delete-gbproxy-peer <0-65534> (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='delete-gbproxy-peer' doc='Delete a GBProxy bvc by NSEI and optionally BVCI' />
|
||||
<param name='<0-65534>' 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)' />
|
||||
|
@ -796,75 +947,6 @@
|
|||
<param name='[dry-run]' doc='Show what would be deleted instead of actually deleting' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='delete-gbproxy-link <0-65534> (tlli|imsi|sgsn-nsei) IDENT'>
|
||||
<params>
|
||||
<param name='delete-gbproxy-link' doc='Delete a GBProxy logical link entry by NSEI and identification' />
|
||||
<param name='<0-65534>' 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 <0-65534> (stale|de-registered)'>
|
||||
<params>
|
||||
<param name='delete-gbproxy-link' doc='Delete a GBProxy logical link entry by NSEI and identification' />
|
||||
<param name='<0-65534>' 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) <0-65535> [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='<0-65535>' doc='The Identifier of selected type' />
|
||||
<param name='[stats]' doc='Include Statistics' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='logging filter nsvc (nsei|nsvci) <0-65535>'>
|
||||
<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='<0-65535>' doc='Numeric identifier' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='nsvc (nsei|nsvci) <0-65535> (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='<0-65535>' 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>
|
||||
|
@ -1052,6 +1134,20 @@
|
|||
<param name='syslog' doc='Logging via syslog' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='log systemd-journal [raw]'>
|
||||
<params>
|
||||
<param name='log' doc='Configure logging sub-system' />
|
||||
<param name='systemd-journal' doc='Logging to systemd-journal' />
|
||||
<param name='[raw]' doc='Offload rendering of the meta information (location, category) to systemd' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='no log systemd-journal'>
|
||||
<params>
|
||||
<param name='no' doc='Negate a command or set its defaults' />
|
||||
<param name='log' doc='Configure logging sub-system' />
|
||||
<param name='systemd-journal' doc='Logging to systemd-journal' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='log gsmtap [HOSTNAME]'>
|
||||
<params>
|
||||
<param name='log' doc='Configure logging sub-system' />
|
||||
|
@ -1089,11 +1185,11 @@
|
|||
<param name='log' doc='Report to the logger' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='stats interval <1-65535>'>
|
||||
<command id='stats interval <0-65535>'>
|
||||
<params>
|
||||
<param name='stats' doc='Configure stats sub-system' />
|
||||
<param name='interval' doc='Set the reporting interval' />
|
||||
<param name='<1-65535>' doc='Interval in seconds' />
|
||||
<param name='<0-65535>' doc='Interval in seconds (0 disables the reporting interval)' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='gbproxy'>
|
||||
|
@ -1101,9 +1197,11 @@
|
|||
<param name='gbproxy' doc='Configure the Gb proxy' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='ns'>
|
||||
<command id='sgsn nsei <0-65534>'>
|
||||
<params>
|
||||
<param name='ns' doc='Configure the GPRS Network Service' />
|
||||
<param name='sgsn' doc='Configure the SGSN' />
|
||||
<param name='nsei' doc='NSEI to be used in the connection with the SGSN' />
|
||||
<param name='<0-65534>' doc='The NSEI' />
|
||||
</params>
|
||||
</command>
|
||||
</node>
|
||||
|
@ -1181,13 +1279,13 @@
|
|||
<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)'>
|
||||
<command id='logging level (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (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='obj' doc='GbProxy object allocation/release' />
|
||||
<param name='lglobal' doc='Library-internal global log family' />
|
||||
<param name='llapd' doc='LAPD in libosmogsm' />
|
||||
<param name='linp' doc='A-bis Intput Subsystem' />
|
||||
|
@ -1207,6 +1305,8 @@
|
|||
<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='lns' doc='GPRS NS layer' />
|
||||
<param name='lbssgp' doc='GPRS BSSGP layer' />
|
||||
<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' />
|
||||
|
@ -1246,16 +1346,6 @@
|
|||
<param name='force-all' doc='Release any globally forced log level set with 'logging level force-all <level>'' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='logging filter nsvc (nsei|nsvci) <0-65535>'>
|
||||
<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='<0-65535>' doc='Numeric identifier' />
|
||||
</params>
|
||||
</command>
|
||||
</node>
|
||||
<node id='config-stats'>
|
||||
<name>config-stats</name>
|
||||
|
@ -1325,6 +1415,12 @@
|
|||
<param name='disable' doc='Disable the reporter' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='flush-period <0-65535>'>
|
||||
<params>
|
||||
<param name='flush-period' doc='Configure stats sub-system' />
|
||||
<param name='<0-65535>' doc='Send all stats even if they have not changed (i.e. force the flush)every N-th reporting interval. Set to 0 to disable regular flush (default).' />
|
||||
</params>
|
||||
</command>
|
||||
</node>
|
||||
<node id='config-line'>
|
||||
<name>config-line</name>
|
||||
|
@ -1347,280 +1443,95 @@
|
|||
</params>
|
||||
</command>
|
||||
</node>
|
||||
<node id='config-ns'>
|
||||
<name>config-ns</name>
|
||||
<command id='nse <0-65535> nsvci <0-65534>'>
|
||||
<node id='config-gbproxy'>
|
||||
<name>config-gbproxy</name>
|
||||
<command id='pool bvc-flow-control-ratio <1-100>'>
|
||||
<params>
|
||||
<param name='nse' doc='Persistent NS Entity' />
|
||||
<param name='<0-65535>' doc='NS Entity ID (NSEI)' />
|
||||
<param name='nsvci' doc='NS Virtual Connection' />
|
||||
<param name='<0-65534>' doc='NS Virtual Connection ID (NSVCI)' />
|
||||
<param name='pool' doc='SGSN Pool related configuration' />
|
||||
<param name='bvc-flow-control-ratio' doc='Ratio of BSS-advertised bucket size + leak rate advertised to each SGSN' />
|
||||
<param name='<1-100>' doc='Ratio of BSS-advertised bucket size + leak rate advertised to each SGSN (Percent)' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='nse <0-65535> remote-ip A.B.C.D'>
|
||||
<command id='nri bitlen <0-15>'>
|
||||
<attributes scope='global'>
|
||||
<attribute doc='This command applies immediately' flag='!' />
|
||||
</attributes>
|
||||
<params>
|
||||
<param name='nse' doc='Persistent NS Entity' />
|
||||
<param name='<0-65535>' doc='NS Entity ID (NSEI)' />
|
||||
<param name='remote-ip' doc='Remote IP Address' />
|
||||
<param name='A.B.C.D' doc='Remote IP Address' />
|
||||
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
|
||||
<param name='bitlen' doc='Set number of bits that an NRI has, to extract from TMSI identities (always starting just after the TMSI's most significant octet).' />
|
||||
<param name='<0-15>' doc='bit count (0 disables) pooling)' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='nse <0-65535> remote-port <0-65535>'>
|
||||
<command id='nri null add <0-32767> [<0-32767>]'>
|
||||
<attributes scope='global'>
|
||||
<attribute doc='This command applies immediately' flag='!' />
|
||||
</attributes>
|
||||
<params>
|
||||
<param name='nse' doc='Persistent NS Entity' />
|
||||
<param name='<0-65535>' doc='NS Entity ID (NSEI)' />
|
||||
<param name='remote-port' doc='Remote UDP Port' />
|
||||
<param name='<0-65535>' doc='Remote UDP Port Number' />
|
||||
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
|
||||
<param name='null' doc='Define NULL-NRI values that cause re-assignment of an MS to a different SGSN, for SGSN pooling.' />
|
||||
<param name='add' doc='Add NULL-NRI value (or range)' />
|
||||
<param name='<0-32767>' doc='First value of the NRI value range, should not surpass the configured 'nri bitlen'.' />
|
||||
<param name='[<0-32767>]' doc='Last value of the NRI value range, should not surpass the configured 'nri bitlen' and be larger than the first value; if omitted, apply only the first value.' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='nse <0-65535> fr-dlci <16-1007>'>
|
||||
<command id='nri null del <0-32767> [<0-32767>]'>
|
||||
<attributes scope='global'>
|
||||
<attribute doc='This command applies immediately' flag='!' />
|
||||
</attributes>
|
||||
<params>
|
||||
<param name='nse' doc='Persistent NS Entity' />
|
||||
<param name='<0-65535>' doc='NS Entity ID (NSEI)' />
|
||||
<param name='fr-dlci' doc='Frame Relay DLCI' />
|
||||
<param name='<16-1007>' doc='Frame Relay DLCI Number' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='nse <0-65535> encapsulation (udp|framerelay-gre)'>
|
||||
<params>
|
||||
<param name='nse' doc='Persistent NS Entity' />
|
||||
<param name='<0-65535>' 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 <0-65535> remote-role (sgsn|bss)'>
|
||||
<params>
|
||||
<param name='nse' doc='Persistent NS Entity' />
|
||||
<param name='<0-65535>' 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 <0-65535>'>
|
||||
<params>
|
||||
<param name='no' doc='Delete Persistent NS Entity' />
|
||||
<param name='nse' doc='Delete Persistent NS Entity' />
|
||||
<param name='<0-65535>' 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) <0-65535>'>
|
||||
<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='<0-65535>' 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 <0-65535>'>
|
||||
<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='<0-65535>' doc='UDP port number' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='encapsulation udp dscp <0-255>'>
|
||||
<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='<0-255>' 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' />
|
||||
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
|
||||
<param name='null' doc='Define NULL-NRI values that cause re-assignment of an MS to a different SGSN, for SGSN pooling.' />
|
||||
<param name='del' doc='Remove NRI value or range from the NRI mapping for this MSC' />
|
||||
<param name='<0-32767>' doc='First value of the NRI value range, should not surpass the configured 'nri bitlen'.' />
|
||||
<param name='[<0-32767>]' doc='Last value of the NRI value range, should not surpass the configured 'nri bitlen' and be larger than the first value; if omitted, apply only the first value.' />
|
||||
</params>
|
||||
</command>
|
||||
</node>
|
||||
<node id='config-gbproxy'>
|
||||
<name>config-gbproxy</name>
|
||||
<command id='sgsn nsei <0-65534>'>
|
||||
<node id='config-sgsn'>
|
||||
<name>config-sgsn</name>
|
||||
<command id='name NAME'>
|
||||
<params>
|
||||
<param name='sgsn' doc='SGSN information' />
|
||||
<param name='nsei' doc='NSEI to be used in the connection with the SGSN' />
|
||||
<param name='<0-65534>' doc='The NSEI' />
|
||||
<param name='name' doc='Configure the SGSN' />
|
||||
<param name='NAME' doc='Name the SGSN' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='core-mobile-country-code <1-999>'>
|
||||
<command id='allow-attach'>
|
||||
<attributes scope='global'>
|
||||
<attribute doc='This command applies immediately' flag='!' />
|
||||
</attributes>
|
||||
<params>
|
||||
<param name='core-mobile-country-code' doc='Use this country code for the core network' />
|
||||
<param name='<1-999>' doc='MCC value' />
|
||||
<param name='allow-attach' doc='Allow this SGSN to attach new subscribers (default).' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='core-mobile-network-code <1-999>'>
|
||||
<params>
|
||||
<param name='core-mobile-network-code' doc='Use this network code for the core network' />
|
||||
<param name='<1-999>' 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 <0-65534>'>
|
||||
<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='<0-65534>' 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 <1-999999>'>
|
||||
<params>
|
||||
<param name='link-list' doc='Set TLLI list parameters' />
|
||||
<param name='clean-stale-timer' doc='Periodic timer to clean stale links' />
|
||||
<param name='<1-999999>' doc='Frequency at which the periodic timer is fired (in seconds)' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='link-list max-age <1-999999>'>
|
||||
<params>
|
||||
<param name='link-list' doc='Set TLLI list parameters' />
|
||||
<param name='max-age' doc='Limit maximum age' />
|
||||
<param name='<1-999999>' doc='Maximum age in seconds' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='link-list max-length <1-99999>'>
|
||||
<params>
|
||||
<param name='link-list' doc='Set TLLI list parameters' />
|
||||
<param name='max-length' doc='Limit list length' />
|
||||
<param name='<1-99999>' 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't discard entries after detachment' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='link stored-msgs-max-length <1-99999>'>
|
||||
<params>
|
||||
<param name='link' doc='Set TLLI parameters' />
|
||||
<param name='stored-msgs-max-length' doc='Limit list length' />
|
||||
<param name='<1-99999>' doc='Maximum number of msgb stored in the logical link waiting to acquire its IMSI' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='no core-mobile-country-code'>
|
||||
<command id='no allow-attach'>
|
||||
<attributes scope='global'>
|
||||
<attribute doc='This command applies immediately' flag='!' />
|
||||
</attributes>
|
||||
<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' />
|
||||
<param name='allow-attach' doc='Do not assign new subscribers to this MSC. Useful if an MSC in an MSC pool is configured to off-load subscribers. The MSC will still be operational for already IMSI-Attached subscribers, but the NAS node selection function will skip this MSC for new subscribers' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='no core-mobile-network-code'>
|
||||
<command id='nri add <0-32767> [<0-32767>]'>
|
||||
<attributes scope='global'>
|
||||
<attribute doc='This command applies immediately' flag='!' />
|
||||
</attributes>
|
||||
<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' />
|
||||
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
|
||||
<param name='add' doc='Add NRI value or range to the NRI mapping for this MSC' />
|
||||
<param name='<0-32767>' doc='First value of the NRI value range, should not surpass the configured 'nri bitlen'.' />
|
||||
<param name='[<0-32767>]' doc='Last value of the NRI value range, should not surpass the configured 'nri bitlen' and be larger than the first value; if omitted, apply only the first value.' />
|
||||
</params>
|
||||
</command>
|
||||
<command id='no match-imsi'>
|
||||
<command id='nri del <0-32767> [<0-32767>]'>
|
||||
<attributes scope='global'>
|
||||
<attribute doc='This command applies immediately' flag='!' />
|
||||
</attributes>
|
||||
<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' />
|
||||
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
|
||||
<param name='del' doc='Remove NRI value or range from the NRI mapping for this MSC' />
|
||||
<param name='<0-32767>' doc='First value of the NRI value range, should not surpass the configured 'nri bitlen'.' />
|
||||
<param name='[<0-32767>]' doc='Last value of the NRI value range, should not surpass the configured 'nri bitlen' and be larger than the first value; if omitted, apply only the first value.' />
|
||||
</params>
|
||||
</command>
|
||||
</node>
|
|
@ -1,6 +0,0 @@
|
|||
<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'>
|
||||
<node id='config-sgsn'>
|
||||
<description>Configure the remote GGSN, access-control and other
|
||||
attributes of the SGSN</description>
|
||||
</node>
|
||||
</vtydoc>
|
File diff suppressed because it is too large
Load Diff
|
@ -17,17 +17,13 @@
|
|||
|
||||
app_configs = {
|
||||
"gbproxy": ["doc/examples/osmo-gbproxy/osmo-gbproxy.cfg"],
|
||||
"sgsn": ["doc/examples/osmo-sgsn/osmo-sgsn.cfg"],
|
||||
"gtphub": ["doc/examples/osmo-gtphub/osmo-gtphub-1iface.cfg"]
|
||||
}
|
||||
|
||||
|
||||
apps = [(4246, "src/gbproxy/osmo-gbproxy", "OsmoGbProxy", "gbproxy"),
|
||||
(4245, "src/sgsn/osmo-sgsn", "OsmoSGSN", "sgsn"),
|
||||
(4253, "src/gtphub/osmo-gtphub", "OsmoGTPhub", "gtphub")
|
||||
apps = [(4246, "src/osmo-gbproxy", "OsmoGbProxy", "gbproxy"),
|
||||
]
|
||||
|
||||
vty_command = ["./src/sgsn/osmo-sgsn", "-c",
|
||||
"doc/examples/osmo-sgsn/osmo-sgsn.cfg"]
|
||||
vty_command = ["./src/osmo-gbproxy", "-c",
|
||||
"doc/examples/osmo-gbproxy/osmo-gbproxy.cfg"]
|
||||
|
||||
vty_app = apps[1]
|
||||
vty_app = apps[0]
|
||||
|
|
|
@ -131,12 +131,42 @@ static void print_help()
|
|||
printf(" -T --timestamp Prefix every log line with a timestamp\n");
|
||||
printf(" -V --version. Print the version.\n");
|
||||
printf(" -e --log-level number. Set a global loglevel.\n");
|
||||
|
||||
printf("\nVTY reference generation:\n");
|
||||
printf(" --vty-ref-mode MODE VTY reference generation mode (e.g. 'expert').\n");
|
||||
printf(" --vty-ref-xml Generate the VTY reference XML output and exit.\n");
|
||||
}
|
||||
|
||||
static void handle_long_options(const char *prog_name, const int long_option)
|
||||
{
|
||||
static int vty_ref_mode = VTY_REF_GEN_MODE_DEFAULT;
|
||||
|
||||
switch (long_option) {
|
||||
case 1:
|
||||
vty_ref_mode = get_string_value(vty_ref_gen_mode_names, optarg);
|
||||
if (vty_ref_mode < 0) {
|
||||
fprintf(stderr, "%s: Unknown VTY reference generation "
|
||||
"mode '%s'\n", prog_name, optarg);
|
||||
exit(2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
fprintf(stderr, "Generating the VTY reference in mode '%s' (%s)\n",
|
||||
get_value_string(vty_ref_gen_mode_names, vty_ref_mode),
|
||||
get_value_string(vty_ref_gen_mode_desc, vty_ref_mode));
|
||||
vty_dump_xml_ref_mode(stdout, (enum vty_ref_gen_mode) vty_ref_mode);
|
||||
exit(0);
|
||||
default:
|
||||
fprintf(stderr, "%s: error parsing cmdline options\n", prog_name);
|
||||
exit(2);
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_options(int argc, char **argv)
|
||||
{
|
||||
while (1) {
|
||||
int option_index = 0, c;
|
||||
static int long_option = 0;
|
||||
static struct option long_options[] = {
|
||||
{ "help", 0, 0, 'h' },
|
||||
{ "debug", 1, 0, 'd' },
|
||||
|
@ -146,6 +176,8 @@ static void handle_options(int argc, char **argv)
|
|||
{ "timestamp", 0, 0, 'T' },
|
||||
{ "version", 0, 0, 'V' },
|
||||
{ "log-level", 1, 0, 'e' },
|
||||
{ "vty-ref-mode", 1, &long_option, 1 },
|
||||
{ "vty-ref-xml", 0, &long_option, 2 },
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
|
@ -159,6 +191,9 @@ static void handle_options(int argc, char **argv)
|
|||
print_usage();
|
||||
print_help();
|
||||
exit(0);
|
||||
case 0:
|
||||
handle_long_options(argv[0], long_option);
|
||||
break;
|
||||
case 's':
|
||||
log_set_use_color(osmo_stderr_target, 0);
|
||||
break;
|
||||
|
|
|
@ -56,11 +56,11 @@ vty-python-test: $(BUILT_SOURCES)
|
|||
vty-transcript-test:
|
||||
osmo_verify_transcript_vty.py -v \
|
||||
-n OsmoGbProxy -p 4246 \
|
||||
-r "$(top_builddir)/src/gbproxy/osmo-gbproxy -c $(top_srcdir)/doc/examples/osmo-gbproxy/osmo-gbproxy.cfg" \
|
||||
-r "$(top_builddir)/src/osmo-gbproxy -c $(top_srcdir)/doc/examples/osmo-gbproxy/osmo-gbproxy.cfg" \
|
||||
$(U) $${T:-$(srcdir)/osmo-gbproxy_test-nodes.vty}
|
||||
osmo_verify_transcript_vty.py -v \
|
||||
-n OsmoGbProxy -p 4246 \
|
||||
-r "$(top_builddir)/src/gbproxy/osmo-gbproxy -c $(top_srcdir)/doc/examples/osmo-gbproxy/osmo-gbproxy-pool.cfg" \
|
||||
-r "$(top_builddir)/src/osmo-gbproxy -c $(top_srcdir)/doc/examples/osmo-gbproxy/osmo-gbproxy-pool.cfg" \
|
||||
$(U) $${T:-$(srcdir)/osmo-gbproxy-pool_test-nodes.vty}
|
||||
rm -f $(builddir)/sms.db $(builddir)/gsn_restart
|
||||
|
||||
|
|
|
@ -71,11 +71,11 @@ class TestVTYBase(unittest.TestCase):
|
|||
class TestVTYGbproxy(TestVTYBase):
|
||||
|
||||
def vty_command(self):
|
||||
return ["./src/gbproxy/osmo-gbproxy", "-c",
|
||||
return ["./src/osmo-gbproxy", "-c",
|
||||
"doc/examples/osmo-gbproxy/osmo-gbproxy.cfg"]
|
||||
|
||||
def vty_app(self):
|
||||
return (4246, "./src/gbproxy/osmo-gbproxy", "OsmoGbProxy", "gbproxy")
|
||||
return (4246, "./src/osmo-gbproxy", "OsmoGbProxy", "gbproxy")
|
||||
|
||||
def testVtyTree(self):
|
||||
self.vty.enable()
|
||||
|
@ -114,180 +114,11 @@ class TestVTYGbproxy(TestVTYBase):
|
|||
self.assertTrue(res.find('Deleted 0 BVC') >= 0)
|
||||
self.assertTrue(res.find('NSEI not found') >= 0)
|
||||
|
||||
class TestVTYSGSN(TestVTYBase):
|
||||
|
||||
def vty_command(self):
|
||||
return ["./src/sgsn/osmo-sgsn", "-c",
|
||||
"doc/examples/osmo-sgsn/osmo-sgsn-accept-all.cfg"]
|
||||
|
||||
def vty_app(self):
|
||||
return (4245, "./src/sgsn/osmo-sgsn", "OsmoSGSN", "sgsn")
|
||||
|
||||
def testVtyTree(self):
|
||||
self.vty.enable()
|
||||
self.assertTrue(self.vty.verify('configure terminal', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config')
|
||||
self.checkForEndAndExit()
|
||||
self.assertTrue(self.vty.verify('ns', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config-ns')
|
||||
self.checkForEndAndExit()
|
||||
self.assertTrue(self.vty.verify('exit', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config')
|
||||
self.assertTrue(self.vty.verify('sgsn', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config-sgsn')
|
||||
self.checkForEndAndExit()
|
||||
self.assertTrue(self.vty.verify('exit', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config')
|
||||
|
||||
def testVtyShow(self):
|
||||
res = self.vty.command("show ns")
|
||||
self.assertTrue(res.find('0 NS-VC:') >= 0)
|
||||
self.assertTrue(self.vty.verify('show bssgp', ['']))
|
||||
self.assertTrue(self.vty.verify('show bssgp stats', ['']))
|
||||
self.assertTrue(self.vty.verify('show bssgp nsei 123', ['']))
|
||||
self.assertTrue(self.vty.verify('show bssgp nsei 123 stats', ['']))
|
||||
self.assertTrue(self.vty.verify('show sgsn', [' GSN: signalling 127.0.0.1, user traffic 127.0.0.1']))
|
||||
self.assertTrue(self.vty.verify('show mm-context all', ['']))
|
||||
self.assertTrue(self.vty.verify('show mm-context imsi 000001234567', ['No MM context for IMSI 000001234567']))
|
||||
self.assertTrue(self.vty.verify('show pdp-context all', ['']))
|
||||
|
||||
res = self.vty.command("show sndcp")
|
||||
self.assertTrue(res.find('State of SNDCP Entities') >= 0)
|
||||
|
||||
res = self.vty.command("show llc")
|
||||
self.assertTrue(res.find('State of LLC Entities') >= 0)
|
||||
|
||||
def testVtyAuth(self):
|
||||
self.vty.enable()
|
||||
self.assertTrue(self.vty.verify('configure terminal', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config')
|
||||
self.assertTrue(self.vty.verify('sgsn', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config-sgsn')
|
||||
self.assertTrue(self.vty.verify('auth-policy accept-all', ['']))
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find('auth-policy accept-all') > 0)
|
||||
self.assertTrue(self.vty.verify('auth-policy acl-only', ['']))
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find('auth-policy acl-only') > 0)
|
||||
self.assertTrue(self.vty.verify('auth-policy closed', ['']))
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find('auth-policy closed') > 0)
|
||||
self.assertTrue(self.vty.verify('gsup remote-ip 127.0.0.4', ['']))
|
||||
self.assertTrue(self.vty.verify('gsup remote-port 2222', ['']))
|
||||
self.assertTrue(self.vty.verify('auth-policy remote', ['']))
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find('auth-policy remote') > 0)
|
||||
|
||||
def testVtySubscriber(self):
|
||||
self.vty.enable()
|
||||
res = self.vty.command('show subscriber cache')
|
||||
self.assertTrue(res.find('1234567890') < 0)
|
||||
self.assertTrue(self.vty.verify('update-subscriber imsi 1234567890 create', ['']))
|
||||
res = self.vty.command('show subscriber cache')
|
||||
self.assertTrue(res.find('1234567890') >= 0)
|
||||
self.assertTrue(res.find('Authorized: 0') >= 0)
|
||||
self.assertTrue(self.vty.verify('update-subscriber imsi 1234567890 update-location-result ok', ['']))
|
||||
res = self.vty.command('show subscriber cache')
|
||||
self.assertTrue(res.find('1234567890') >= 0)
|
||||
self.assertTrue(res.find('Authorized: 1') >= 0)
|
||||
self.assertTrue(self.vty.verify('update-subscriber imsi 1234567890 cancel update-procedure', ['']))
|
||||
res = self.vty.command('show subscriber cache')
|
||||
self.assertTrue(res.find('1234567890') >= 0)
|
||||
self.assertTrue(self.vty.verify('update-subscriber imsi 1234567890 destroy', ['']))
|
||||
res = self.vty.command('show subscriber cache')
|
||||
self.assertTrue(res.find('1234567890') < 0)
|
||||
|
||||
def testVtyGgsn(self):
|
||||
self.vty.enable()
|
||||
self.assertTrue(self.vty.verify('configure terminal', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config')
|
||||
self.assertTrue(self.vty.verify('sgsn', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config-sgsn')
|
||||
self.assertTrue(self.vty.verify('ggsn 0 remote-ip 127.99.99.99', ['']))
|
||||
self.assertTrue(self.vty.verify('ggsn 0 gtp-version 1', ['']))
|
||||
self.assertTrue(self.vty.verify('apn * ggsn 0', ['']))
|
||||
self.assertTrue(self.vty.verify('apn apn1.test ggsn 0', ['']))
|
||||
self.assertTrue(self.vty.verify('apn apn1.test ggsn 1', ['% a GGSN with id 1 has not been defined']))
|
||||
self.assertTrue(self.vty.verify('apn apn1.test imsi-prefix 123456 ggsn 0', ['']))
|
||||
self.assertTrue(self.vty.verify('apn apn2.test imsi-prefix 123456 ggsn 0', ['']))
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find('ggsn 0 remote-ip 127.99.99.99') >= 0)
|
||||
self.assertTrue(res.find('ggsn 0 gtp-version 1') >= 0)
|
||||
self.assertTrue(res.find('apn * ggsn 0') >= 0)
|
||||
self.assertTrue(res.find('apn apn1.test ggsn 0') >= 0)
|
||||
self.assertTrue(res.find('apn apn1.test imsi-prefix 123456 ggsn 0') >= 0)
|
||||
self.assertTrue(res.find('apn apn2.test imsi-prefix 123456 ggsn 0') >= 0)
|
||||
|
||||
def testVtyEasyAPN(self):
|
||||
self.vty.enable()
|
||||
self.assertTrue(self.vty.verify('configure terminal', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config')
|
||||
self.assertTrue(self.vty.verify('sgsn', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config-sgsn')
|
||||
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertEqual(res.find("apn internet"), -1)
|
||||
|
||||
self.assertTrue(self.vty.verify("access-point-name internet.apn", ['']))
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find("apn internet.apn ggsn 0") >= 0)
|
||||
|
||||
self.assertTrue(self.vty.verify("no access-point-name internet.apn", ['']))
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertEqual(res.find("apn internet"), -1)
|
||||
|
||||
def testVtyCDR(self):
|
||||
self.vty.enable()
|
||||
self.assertTrue(self.vty.verify('configure terminal', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config')
|
||||
self.assertTrue(self.vty.verify('sgsn', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config-sgsn')
|
||||
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find("no cdr filename") > 0)
|
||||
|
||||
self.vty.command("cdr filename bla.cdr")
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertEqual(res.find("no cdr filename"), -1)
|
||||
self.assertTrue(res.find(" cdr filename bla.cdr") > 0)
|
||||
|
||||
self.vty.command("no cdr filename")
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find("no cdr filename") > 0)
|
||||
self.assertEqual(res.find(" cdr filename bla.cdr"), -1)
|
||||
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find(" cdr interval 600") > 0)
|
||||
|
||||
self.vty.command("cdr interval 900")
|
||||
res = self.vty.command("show running-config")
|
||||
self.assertTrue(res.find(" cdr interval 900") > 0)
|
||||
self.assertEqual(res.find(" cdr interval 600"), -1)
|
||||
|
||||
def testVtyTimers(self):
|
||||
self.vty.enable()
|
||||
self.assertTrue(self.vty.verify('configure terminal', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config')
|
||||
self.assertTrue(self.vty.verify('sgsn', ['']))
|
||||
self.assertEqual(self.vty.node(), 'config-sgsn')
|
||||
|
||||
for t in [3312, 3322, 3350, 3360, 3370, 3313, 3314, 3316, 3385, 3395, 3397]:
|
||||
self.assertTrue(self.vty.verify('timer t%d 10' % t, ['']))
|
||||
|
||||
def add_gbproxy_test(suite, workdir):
|
||||
if not os.path.isfile(os.path.join(workdir, "src/gbproxy/osmo-gbproxy")):
|
||||
print("Skipping the Gb-Proxy test")
|
||||
return
|
||||
assert os.path.isfile(os.path.join(workdir, "src/osmo-gbproxy"))
|
||||
test = unittest.TestLoader().loadTestsFromTestCase(TestVTYGbproxy)
|
||||
suite.addTest(test)
|
||||
|
||||
def add_sgsn_test(suite, workdir):
|
||||
if not os.path.isfile(os.path.join(workdir, "src/sgsn/osmo-sgsn")):
|
||||
print("Skipping the SGSN test")
|
||||
return
|
||||
test = unittest.TestLoader().loadTestsFromTestCase(TestVTYSGSN)
|
||||
suite.addTest(test)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import argparse
|
||||
import sys
|
||||
|
@ -319,7 +150,6 @@ if __name__ == '__main__':
|
|||
print("Running tests for specific VTY commands")
|
||||
suite = unittest.TestSuite()
|
||||
add_gbproxy_test(suite, workdir)
|
||||
add_sgsn_test(suite, workdir)
|
||||
|
||||
if args.test_name:
|
||||
osmoutil.pick_tests(suite, *args.test_name)
|
||||
|
|
Loading…
Reference in New Issue