From 130110c8952106b963d7ccc45be6df9b4ec818d4 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 16 May 2022 15:45:05 +0200 Subject: [PATCH] GSUP: add f_unregister_imsi() to unregister an imsi/connhdlr Change-Id: I13f6784533fe0e1f42d9595f028861d4645ec1a9 --- library/GSUP_Emulation.ttcn | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/library/GSUP_Emulation.ttcn b/library/GSUP_Emulation.ttcn index 213810e19..5e15d0699 100644 --- a/library/GSUP_Emulation.ttcn +++ b/library/GSUP_Emulation.ttcn @@ -227,6 +227,10 @@ function main(GsupOps ops, charstring id) runs on GSUP_Emulation_CT { GSUP_PROC.reply(GSUPEM_unregister_expect:{imsi, vc_hdlr}) to vc_hdlr; } + [] GSUP_PROC.getcall(GSUPEM_unregister_connhdlr:{?}) -> param(imsi) sender vc_hdlr { + f_imsi_table_del(imsi); + GSUP_PROC.reply(GSUPEM_unregister_connhdlr:{imsi}) to vc_hdlr; + } [] GSUP_PROC.getcall(GSUPEM_change_connhdlr:{?,?}) -> param(imsi, vc_hdlr) { f_imsi_table_del(imsi); f_imsi_table_add(vc_hdlr, imsi); @@ -252,10 +256,12 @@ type record ExpectData { /* procedure based port to register for incoming calls */ signature GSUPEM_register_expect(in charstring imsi, in GSUP_ConnHdlr hdlr); signature GSUPEM_unregister_expect(in charstring imsi, in GSUP_ConnHdlr hdlr); +signature GSUPEM_unregister_connhdlr(in charstring imsi); signature GSUPEM_change_connhdlr(in charstring imsi, in GSUP_ConnHdlr hdlr); type port GSUPEM_PROC_PT procedure { - inout GSUPEM_register_expect, GSUPEM_unregister_expect, GSUPEM_change_connhdlr; + inout GSUPEM_register_expect, GSUPEM_unregister_expect, + GSUPEM_unregister_connhdlr, GSUPEM_change_connhdlr; } with { extension "internal" }; /* CreateCallback that can be used as create_cb and will use the expectation table */ @@ -329,6 +335,13 @@ function f_destroy_gsup_expect(charstring imsi) runs on GSUP_ConnHdlr { } } +function f_unregister_gsup_imsi(charstring imsi) runs on GSUP_ConnHdlr { + GSUP_PROC.call(GSUPEM_unregister_connhdlr:{imsi}) { + [] GSUP_PROC.getreply(GSUPEM_unregister_connhdlr:{?}) {}; + } +} + + /* Same as f_create_gsup_expect, but with explicit addressing. Needed when connecting multiple ports to GSUP_PROC. */ function f_create_gsup_expect_explicit(charstring imsi, GSUP_Emulation_CT ct) runs on GSUP_ConnHdlr {