This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHarald Welte has uploaded this change for review. ( https://gerrit.osmocom.org/11487 Change subject: SGsAP_Emulation: Add functions to send MME or VLR reset ...................................................................... SGsAP_Emulation: Add functions to send MME or VLR reset ... including encoding/decoding of names between string and binary labels Change-Id: I981c7c1d34f0db60031b5436739cd924e5a09407 --- A library/DNS_Helpers.ttcn M library/SGsAP_Emulation.ttcn 2 files changed, 106 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/87/11487/1 diff --git a/library/DNS_Helpers.ttcn b/library/DNS_Helpers.ttcn new file mode 100644 index 0000000..45c3a09 --- /dev/null +++ b/library/DNS_Helpers.ttcn @@ -0,0 +1,63 @@ +module DNS_Helpers { + +private function f_strchr(charstring s, char c) return integer { + var integer i; + for (i := 0; i < lengthof(s); i := i+1) { + if (s[i] == c) { + return i; + } + } + return -1; +} + +private function f_dns_enc_label(charstring str) return octetstring { + var octetstring ret; + + ret[0] := int2oct(lengthof(str), 1); + return ret & char2oct(str); +} + +function f_enc_dns_hostname(charstring str) return octetstring { + var octetstring ret := ''O; + while (lengthof(str) > 0) { + var integer dot_idx; + var octetstring lbl; + + dot_idx := f_strchr(str, "."); + if (dot_idx >= 0) { + /* there is another dot */ + lbl := f_dns_enc_label(substr(str, 0, dot_idx)); + str := substr(str, dot_idx+1, lengthof(str)-dot_idx-1); + } else { + /* no more dot */ + lbl := f_dns_enc_label(str); + str := ""; + } + ret := ret & lbl; + } + return ret; +} + + + + +function f_dec_dns_hostname(octetstring inp) return charstring { + var charstring ret := ""; + while (lengthof(inp) > 0) { + var integer label_len; + var charstring lbl; + + label_len := oct2int(substr(inp, 0, 1)); + lbl := oct2char(substr(inp, 1, label_len)); + inp := substr(inp, 1+label_len, lengthof(inp)-1-label_len); + + ret := ret & lbl; + if (lengthof(inp) > 0) { + ret := ret & "."; + } + } + return ret; +} + + +} diff --git a/library/SGsAP_Emulation.ttcn b/library/SGsAP_Emulation.ttcn index 0c37840..968bcdd 100644 --- a/library/SGsAP_Emulation.ttcn +++ b/library/SGsAP_Emulation.ttcn @@ -31,6 +31,7 @@ import from SGsAP_Templates all; import from Osmocom_Types all; import from IPL4asp_Types all; +import from DNS_Helpers all; type component SGsAP_ConnHdlr { port SGsAP_Conn_PT SGsAP; @@ -295,6 +296,7 @@ var hexstring imsi; var SGsAP_RecvFrom mrf; var PDU_SGsAP msg; + var charstring vlr_name, mme_name; alt { /* SGsAP from client */ @@ -329,6 +331,24 @@ f_create_expect(imsi, vc_conn); SGsAP_PROC.reply(SGsAPEM_register:{imsi, vc_conn}) to vc_conn; } + [] SGsAP_PROC.getcall(SGsAPEM_reset_mme:{?,-}) -> param(mme_name) { + var octetstring mme_enc, vlr_enc; + mme_enc := f_enc_dns_hostname(mme_name); + msg := f_sgsap_xceive(ts_SGsAP_RESET_IND_MME(mme_enc)); + vlr_enc := msg.sGsAP_RESET_ACK.vLR_Name.name; + vlr_name := f_dec_dns_hostname(vlr_enc); + SGsAP_PROC.reply(SGsAPEM_reset_mme:{mme_name, vlr_name}); + } + [] SGsAP_PROC.getcall(SGsAPEM_reset_vlr:{?,-}) -> param(vlr_name) { + var octetstring mme_enc, vlr_enc; + vlr_enc := f_enc_dns_hostname(vlr_name); + msg := f_sgsap_xceive(ts_SGsAP_RESET_IND_VLR(vlr_enc)); + mme_enc := msg.sGsAP_RESET_ACK.mME_Name.name; + mme_name := f_dec_dns_hostname(mme_enc); + SGsAP_PROC.reply(SGsAPEM_reset_vlr:{vlr_name, mme_name}); + } + + } } @@ -343,8 +363,11 @@ signature SGsAPEM_register(in hexstring imsi, in SGsAP_ConnHdlr hdlr); +signature SGsAPEM_reset_vlr(in charstring vlr_name, out charstring mme_name); +signature SGsAPEM_reset_mme(in charstring mme_name, out charstring vlr_name); + type port SGsAPEM_PROC_PT procedure { - inout SGsAPEM_register; + inout SGsAPEM_register, SGsAPEM_reset_vlr, SGsAPEM_reset_mme; } with { extension "internal" }; /* Function that can be used as create_cb and will usse the expect table */ @@ -399,6 +422,25 @@ } } +/* client/conn_hdlr side function to use procedure port to send RESET from emulated MME */ +function f_sgsap_reset_mme(charstring mme_name) runs on SGsAP_ConnHdlr return charstring { + var charstring vlr_name; + SGsAP_PROC.call(SGsAPEM_reset_mme:{mme_name, -}) { + [] SGsAP_PROC.getreply(SGsAPEM_reset_mme:{mme_name,?}) -> param(vlr_name) { + return vlr_name; + }; + } +} + +/* client/conn_hdlr side function to use procedure port to send RESET from emulated VLR */ +function f_sgsap_reset_vlr(charstring vlr_name) runs on SGsAP_ConnHdlr return charstring { + var charstring mme_name; + SGsAP_PROC.call(SGsAPEM_reset_vlr:{vlr_name, -}) { + [] SGsAP_PROC.getreply(SGsAPEM_reset_vlr:{vlr_name,?}) -> param(mme_name) { + return mme_name; + }; + } +} private function f_expect_table_init() runs on SGsAP_Emulation_CT { -- To view, visit https://gerrit.osmocom.org/11487 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I981c7c1d34f0db60031b5436739cd924e5a09407 Gerrit-Change-Number: 11487 Gerrit-PatchSet: 1 Gerrit-Owner: Harald Welte <laforge at gnumonks.org> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181028/c4baa8da/attachment.htm>