aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc/abis_rsl.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libbsc/abis_rsl.c')
-rw-r--r--openbsc/src/libbsc/abis_rsl.c36
1 files changed, 31 insertions, 5 deletions
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index 54cc40d5e..31f25dce3 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -1084,15 +1084,41 @@ int rsl_imm_assign_cmd(struct gsm_bts *bts, uint8_t len, uint8_t *val)
return abis_rsl_sendmsg(msg);
}
-/* Chapter 8.5.6 */
-int rsl_ericsson_imm_assign_cmd(struct gsm_bts *bts, uint32_t tlli, uint8_t len, uint8_t *val)
-{
- struct msgb *msg = rsl_imm_assign_cmd_common(bts, len, val);
- /* ericsson can handle a reference at the end of the message which is used in
+/* Append mobile idenitiy (tlli) to message buffer */
+static void rsl_ericsson_put_mi(struct msgb *msg, uint32_t tlli)
+{
+ /* NOTE: ericsson can handle a reference at the end of the message which is used in
* the confirm message. The confirm message is only sent if the trailer is present */
msgb_put_u8(msg, 0xf1);
msgb_put_u32(msg, tlli);
+}
+
+/* Chapter 8.5.6 (Ericcson vendor specific RSL extension) */
+int rsl_ericsson_imm_assign_cmd(struct gsm_bts *bts, uint8_t len, uint8_t *val,
+ uint32_t tlli)
+{
+ struct msgb *msg = rsl_imm_assign_cmd_common(bts, len, val);
+
+ /* Append ericsson propritary mobile identity field */
+ rsl_ericsson_put_mi(msg, tlli);
+
+ return abis_rsl_sendmsg(msg);
+}
+
+/* Chapter 8.5.6 (Ericcson vendor specific RSL extension) */
+int rsl_ericsson_imm_assign_via_pch_cmd(struct gsm_bts *bts, uint8_t len,
+ uint8_t *val, uint32_t tlli,
+ uint8_t pag_grp)
+{
+ struct msgb *msg = rsl_imm_assign_cmd_common(bts, len, val);
+
+ /* Append ericsson propritary paging group field */
+ msgb_put_u8(msg, 0x0e);
+ msgb_put_u8(msg, pag_grp);
+
+ /* Append ericsson propritary mobile identity field */
+ rsl_ericsson_put_mi(msg, tlli);
return abis_rsl_sendmsg(msg);
}