IPA_Emulation: Allow client/server to specify CCM parameters
This commit is contained in:
parent
e7096c1571
commit
e21096dbaf
|
@ -57,14 +57,43 @@ type component IPA_Emulation_CT {
|
|||
var boolean g_is_bsc_mgw;
|
||||
|
||||
var IpaMode g_mode;
|
||||
var IPA_CCM_Parameters g_ccm_pars := c_default_ccm_pars;
|
||||
}
|
||||
|
||||
type record IPA_CCM_Parameters {
|
||||
charstring ser_nr optional,
|
||||
charstring name optional,
|
||||
charstring location1 optional,
|
||||
charstring location2 optional,
|
||||
charstring equip_version optional,
|
||||
charstring sw_version optional,
|
||||
charstring ip_addr optional,
|
||||
charstring mac_addr optional,
|
||||
charstring unit_id optional,
|
||||
charstring osmo_rand optional
|
||||
}
|
||||
|
||||
private const IPA_CCM_Parameters c_default_ccm_pars := {
|
||||
ser_nr := omit,
|
||||
name := "mahlzeit",
|
||||
location1 := omit,
|
||||
location2 := omit,
|
||||
equip_version := omit,
|
||||
sw_version := omit,
|
||||
ip_addr := omit,
|
||||
mac_addr := omit,
|
||||
unit_id := "0/1/2",
|
||||
osmo_rand := omit
|
||||
};
|
||||
|
||||
function f_connect(charstring remote_host, PortNumber remote_port,
|
||||
charstring local_host, PortNumber local_port) runs on IPA_Emulation_CT {
|
||||
charstring local_host, PortNumber local_port,
|
||||
IPA_CCM_Parameters ccm_pars := c_default_ccm_pars) runs on IPA_Emulation_CT {
|
||||
var Result res;
|
||||
res := IPA_CodecPort_CtrlFunct.f_IPL4_connect(IPA_PORT, remote_host, remote_port,
|
||||
local_host, local_port, 0, { tcp:={} });
|
||||
g_ipa_conn_id := res.connId;
|
||||
g_ccm_pars := ccm_pars;
|
||||
/* Set function for dissecting the binary */
|
||||
var f_IPL4_getMsgLen vl_f := refers(f_IPL4_fixedMsgLen);
|
||||
IPA_CodecPort_CtrlFunct.f_IPL4_setGetMsgLen(IPA_PORT, g_ipa_conn_id, vl_f, {0, 2, 3, 1, 0});
|
||||
|
@ -72,11 +101,13 @@ function f_connect(charstring remote_host, PortNumber remote_port,
|
|||
g_is_bsc_mgw := true;
|
||||
}
|
||||
|
||||
function f_bind(charstring local_host, PortNumber local_port) runs on IPA_Emulation_CT {
|
||||
function f_bind(charstring local_host, PortNumber local_port,
|
||||
IPA_CCM_Parameters ccm_pars := c_default_ccm_pars) runs on IPA_Emulation_CT {
|
||||
var Result res;
|
||||
res := IPA_CodecPort_CtrlFunct.f_IPL4_listen(IPA_PORT,
|
||||
local_host, local_port, { tcp:={} });
|
||||
g_ipa_conn_id := res.connId;
|
||||
g_ccm_pars := ccm_pars;
|
||||
g_is_bsc_mgw := false;
|
||||
}
|
||||
|
||||
|
@ -96,7 +127,7 @@ private template IpaCcmRespPart t_IdRespPart(IpaCcmIdTag tag, charstring payload
|
|||
}
|
||||
|
||||
/* build IPA CCM ID RESP response from IPA CCM GET */
|
||||
private function f_ccm_make_id_resp(PDU_IPA_CCM get) return PDU_IPA_CCM {
|
||||
private function f_ccm_make_id_resp(PDU_IPA_CCM get) runs on IPA_Emulation_CT return PDU_IPA_CCM {
|
||||
var integer i;
|
||||
var PDU_IPA_CCM resp := {
|
||||
msg_type := IPAC_MSGT_ID_RESP,
|
||||
|
@ -109,14 +140,38 @@ private function f_ccm_make_id_resp(PDU_IPA_CCM get) return PDU_IPA_CCM {
|
|||
var IpaCcmIdTag tag := get.u.get[i].tag;
|
||||
var charstring foo;
|
||||
select (tag) {
|
||||
case (IPAC_IDTAG_UNIT) {
|
||||
foo := "0/1/2";
|
||||
case (IPAC_IDTAG_SERNR) {
|
||||
foo := g_ccm_pars.ser_nr;
|
||||
}
|
||||
case (IPAC_IDTAG_UNITNAME) {
|
||||
foo := "mahlzeit";
|
||||
foo := g_ccm_pars.name;
|
||||
}
|
||||
case (IPAC_IDTAG_LOCATION1) {
|
||||
foo := g_ccm_pars.location1;
|
||||
}
|
||||
case (IPAC_IDTAG_LOCATION2) {
|
||||
foo := g_ccm_pars.location2;
|
||||
}
|
||||
case (IPAC_IDTAG_EQUIPVERS) {
|
||||
foo := g_ccm_pars.equip_version;
|
||||
}
|
||||
case (IPAC_IDTAG_SWVERSION) {
|
||||
foo := g_ccm_pars.sw_version;
|
||||
}
|
||||
case (IPAC_IDTAG_IPADDR) {
|
||||
foo := g_ccm_pars.ip_addr;
|
||||
}
|
||||
case (IPAC_IDTAG_MACADDR) {
|
||||
foo := g_ccm_pars.mac_addr;
|
||||
}
|
||||
case (IPAC_IDTAG_UNIT) {
|
||||
foo := g_ccm_pars.unit_id;
|
||||
}
|
||||
case (IPAC_IDTAG_OSMO_RAND) {
|
||||
foo := g_ccm_pars.osmo_rand;
|
||||
}
|
||||
case else {
|
||||
foo := "foo";
|
||||
foo := "unknown";
|
||||
}
|
||||
}
|
||||
resp.u.resp[sizeof(resp.u.resp)] := valueof(t_IdRespPart(tag, foo));
|
||||
|
|
Loading…
Reference in New Issue