doc: Document new subscriber CTRL commands

Related: SYS#5993
Change-Id: I3e38d067bbc2ebb7f788dc56a5d56e1e4cafdc9c
diff --git a/doc/manuals/Makefile.am b/doc/manuals/Makefile.am
index e3a76ad..e43e3ca 100644
--- a/doc/manuals/Makefile.am
+++ b/doc/manuals/Makefile.am
@@ -1,6 +1,10 @@
-EXTRA_DIST = example_subscriber_add_update_delete.vty \
+EXTRA_DIST = \
+    example_subscriber_add_update_delete.vty \
+    example_subscriber_aud2g.ctrl \
+    example_subscriber_aud3g.ctrl \
     example_subscriber_cs_ps_enabled.ctrl \
     example_subscriber_info.ctrl \
+    example_subscriber_msisdn.ctrl \
     osmohlr-usermanual.adoc \
     osmohlr-usermanual-docinfo.xml \
     osmohlr-vty-reference.xml \
diff --git a/doc/manuals/chapters/control.adoc b/doc/manuals/chapters/control.adoc
index 50fd314..0ab5b3e 100644
--- a/doc/manuals/chapters/control.adoc
+++ b/doc/manuals/chapters/control.adoc
@@ -5,6 +5,16 @@
 to all programs using it are described in <<ctrl_common_vars>>. This section
 describes the CTRL interface variables specific to OsmoHLR.
 
+Subscribers can be created and deleted using the following SET commands:
+
+.Subscriber management commands available on OsmoHLR's Control interface
+[options="header",width="100%",cols="35%,65%"]
+|===
+|Command|Comment
+|subscriber.create '123456'|Create a new subscriber with IMSI "123456" to the database. Returns database ID of the subscriber being created.
+|subscriber.delete '123456'|Delete subscriber with IMSI "123456" from database. Returns database ID of the subscriber being deleted.
+|===
+
 All subscriber variables are available by different selectors, which are freely
 interchangeable:
 
@@ -28,6 +38,9 @@
 |subscriber.by-\*.*info-all*|R|No||List both 'info' and 'info-aud' in one
 |subscriber.by-\*.*cs-enabled*|RW|No|'1' or '0'|Enable/disable circuit-switched access
 |subscriber.by-\*.*ps-enabled*|RW|No|'1' or '0'|Enable/disable packet-switched access
+|subscriber.by-\*.*msisdn*|RW|No|valid MSISDN string|Get/Set assigned MSISDN
+|subscriber.by-\*.*aud2g*|RW|No|'algo[,KI]'|Get/Set 2g Authentication Data
+|subscriber.by-\*.*aud2g*|RW|No|'algo[,KI,("op"|"opc"),OP_C[,ind_bitlen]]'|Get/Set 3g Authentication Data
 |===
 
 === subscriber.by-*.info, info-aud, info-all
@@ -104,3 +117,63 @@
 ----
 include::../example_subscriber_cs_ps_enabled.ctrl[]
 ----
+
+=== subscriber.by-*.msisdn
+
+Get or set the MSISDN currently assigned to a subscriber.
+
+
+This is an example transcript that illustrates use of this command:
+
+----
+include::../example_subscriber_msisdn.ctrl[]
+----
+
+=== subscriber.by-*.aud2g
+
+Get or set the 2G Authentication data of a subscriber.
+
+The information is stored/retrieved as a comma separated list of fields:
+
+----
+algo[,KI]
+----
+
+Where::
+* *KI* is the KI as a hexadecimal string.
+* *algo* is one of the following algorithms: _none, xor, comp128v1, comp128v2,
+  comp128v3_.
+
+All values are case insensitive.
+
+This is an example transcript that illustrates use of this command:
+
+----
+include::../example_subscriber_aud2g.ctrl[]
+----
+
+=== subscriber.by-*.aud3g
+
+Get or set the 3G Authentication data of a subscriber.
+
+The information is stored/retrieved as a comma separated list of fields:
+
+----
+algo[,KI,("op"|"opc"),OP_C[,ind_bitlen]]
+----
+
+Where:
+* *KI* is the KI as a hexadecimal string.
+* *algo* is one of the following algorithms: _none, xor, milenage_.
+* "op" or "opc" indicates whether next field is an OP or OPC value.
+* *OP_C* contains an OP or OPC values as hexadecimal string, based on what the
+  previous field specifies.
+* *ind_bitlen* is set to 5 by default if not provided.
+
+All values are case insensitive.
+
+This is an example transcript that illustrates use of this command:
+
+----
+include::../example_subscriber_aud3g.ctrl[]
+----
diff --git a/doc/manuals/example_subscriber_aud2g.ctrl b/doc/manuals/example_subscriber_aud2g.ctrl
new file mode 100644
index 0000000..e60c53b
--- /dev/null
+++ b/doc/manuals/example_subscriber_aud2g.ctrl
@@ -0,0 +1,14 @@
+GET 1 subscriber.by-imsi-901991234567891.aud2g
+GET_REPLY 1 subscriber.by-imsi-901991234567891.aud2g none
+
+SET 2 subscriber.by-imsi-901991234567891.aud2g xor,c01ffedc1cadaeac1d1f1edacac1ab0a
+SET_REPLY 2 subscriber.by-imsi-901991234567891.aud2g OK
+
+GET 3 subscriber.by-imsi-901991234567891.aud2g
+GET_REPLY 3 subscriber.by-imsi-901991234567891.aud2g XOR,c01ffedc1cadaeac1d1f1edacac1ab0a
+
+SET 4 subscriber.by-imsi-901991234567891.aud2g none
+SET_REPLY 4 subscriber.by-imsi-901991234567891.aud2g OK
+
+GET 5 subscriber.by-imsi-901991234567891.aud2g
+GET_REPLY 5 subscriber.by-imsi-901991234567891.aud2g none
diff --git a/doc/manuals/example_subscriber_aud3g.ctrl b/doc/manuals/example_subscriber_aud3g.ctrl
new file mode 100644
index 0000000..f422d90
--- /dev/null
+++ b/doc/manuals/example_subscriber_aud3g.ctrl
@@ -0,0 +1,20 @@
+GET 117 subscriber.by-imsi-901991234567891.aud3g
+GET_REPLY 117 subscriber.by-imsi-901991234567891.aud3g none
+
+SET 118 subscriber.by-imsi-901991234567891.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,OP,FB2A3D1B360F599ABAB99DB8669F8308
+SET_REPLY 118 subscriber.by-imsi-901991234567891.aud3g OK
+
+GET 119 subscriber.by-imsi-901991234567891.aud3g
+GET_REPLY 119 subscriber.by-imsi-901991234567891.aud3g MILENAGE,c01ffedc1cadaeac1d1f1edacac1ab0a,OP,fb2a3d1b360f599abab99db8669f8308,5
+
+SET 120 subscriber.by-imsi-901991234567891.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,OPC,FB2A3D1B360F599ABAB99DB8669F8308,7
+SET_REPLY 120 subscriber.by-imsi-901991234567891.aud3g OK
+
+GET 121 subscriber.by-imsi-901991234567891.aud3g
+GET_REPLY 121 subscriber.by-imsi-901991234567891.aud3g MILENAGE,c01ffedc1cadaeac1d1f1edacac1ab0a,OPC,fb2a3d1b360f599abab99db8669f8308,7
+
+SET 122 subscriber.by-imsi-901991234567891.aud3g none
+SET_REPLY 122 subscriber.by-imsi-901991234567891.aud3g OK
+
+GET 123 subscriber.by-imsi-901991234567891.aud3g
+GET_REPLY 123 subscriber.by-imsi-901991234567891.aud3g none
diff --git a/doc/manuals/example_subscriber_msisdn.ctrl b/doc/manuals/example_subscriber_msisdn.ctrl
new file mode 100644
index 0000000..3b6e9ac
--- /dev/null
+++ b/doc/manuals/example_subscriber_msisdn.ctrl
@@ -0,0 +1,8 @@
+GET 1 subscriber.by-imsi-901991234567891.msisdn
+GET_REPLY 1 subscriber.by-imsi-901991234567891.msisdn none
+
+SET 2 subscriber.by-imsi-901991234567891.msisdn 555666
+SET_REPLY 2 subscriber.by-imsi-901991234567891.msisdn OK
+
+GET 3 subscriber.by-imsi-901991234567891.msisdn
+GET_REPLY 3 subscriber.by-imsi-901991234567891.msisdn 555666