2019-10-17 09:09:05 +00:00
|
|
|
module M3UA_Templates {
|
|
|
|
|
|
|
|
/* M3UA Templates, building on top of M3UA_Types from Ericsson.
|
|
|
|
*
|
|
|
|
* (C) 2019 by Harald Welte <laforge@gnumonks.org>
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* Released under the terms of GNU General Public License, Version 2 or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
*/
|
|
|
|
|
|
|
|
import from M3UA_Types all;
|
|
|
|
import from General_Types all;
|
|
|
|
import from Osmocom_Types all;
|
|
|
|
|
|
|
|
const OCT1 c_M3UA_VERSION := '01'O;
|
|
|
|
|
|
|
|
const OCT2 c_M3UA_ST_T_STATE_CHG := '0001'O;
|
|
|
|
const OCT2 c_M3UA_ST_I_RESERVED := '0001'O;
|
|
|
|
const OCT2 c_M3UA_ST_I_AS_INACTIVE := '0002'O;
|
|
|
|
const OCT2 c_M3UA_ST_I_AS_ACTIVE := '0003'O;
|
|
|
|
const OCT2 c_M3UA_ST_I_AS_PENDING := '0004'O;
|
|
|
|
|
|
|
|
const OCT2 c_M3UA_ST_T_OTHER := '0002'O;
|
|
|
|
const OCT2 c_M3UA_ST_I_INSUFF_RESRC := '0001'O
|
|
|
|
const OCT2 c_M3UA_ST_I_ALTERNATE_ASP := '0002'O
|
|
|
|
const OCT2 c_M3UA_ST_I_ASP_FAILUREP := '0003'O
|
|
|
|
|
|
|
|
private function f_aspid_or_omit(template (omit) OCT4 aspid)
|
|
|
|
return template (omit) M3UA_ASP_Identifier {
|
|
|
|
var template (omit) M3UA_ASP_Identifier id;
|
|
|
|
if (istemplatekind(aspid, "omit")) {
|
|
|
|
return omit;
|
|
|
|
} else {
|
|
|
|
id.tag := '0011'O;
|
|
|
|
id.lengthInd := 8;
|
|
|
|
id.aSPIdentifier := aspid;
|
|
|
|
return id;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function tr_M3UA_asp_id(template OCT4 aspid)
|
|
|
|
return template M3UA_ASP_Identifier {
|
|
|
|
var template M3UA_ASP_Identifier id := {
|
|
|
|
tag := '0011'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
aSPIdentifier := aspid
|
|
|
|
};
|
|
|
|
if (istemplatekind(aspid, "omit")) {
|
|
|
|
return omit;
|
|
|
|
} else if (istemplatekind(aspid, "*")) {
|
|
|
|
return *;
|
|
|
|
} else {
|
|
|
|
return id;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* ASPSM Class
|
|
|
|
***********************************************************************/
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_ASPUP(template (omit) OCT4 aspid := omit,
|
|
|
|
template (omit) octetstring infostr := omit) := {
|
|
|
|
m3UA_ASPUP := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0301'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
aSP_Identifier := f_aspid_or_omit(aspid),
|
|
|
|
info_String := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_ASPUP(template OCT4 aspid := *,
|
|
|
|
template octetstring infostr := omit) := {
|
|
|
|
m3UA_ASPUP := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0301'O,
|
2019-11-05 15:53:56 +00:00
|
|
|
messageLength := ?, // overwritten
|
2019-10-17 09:09:05 +00:00
|
|
|
messageParameters := {
|
|
|
|
aSP_Identifier := tr_M3UA_asp_id(aspid),
|
|
|
|
info_String := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_ASPUP_ACK := {
|
|
|
|
m3UA_ASPUP_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0304'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
info_String := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_ASPUP_ACK := {
|
|
|
|
m3UA_ASPUP_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0304'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
info_String := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_ASPDN := {
|
|
|
|
m3UA_ASPDN := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0302'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
info_String := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_ASPDN := {
|
|
|
|
m3UA_ASPDN := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0302'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
info_String := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_ASPDN_ACK := {
|
|
|
|
m3UA_ASPUP_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0305'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
info_String := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_ASPDN_ACK := {
|
|
|
|
m3UA_ASPUP_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0305'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
info_String := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) M3UA_Heartbeat_Data ts_M3UA_hb_data(template (value) octetstring hb_data) := {
|
|
|
|
tag := '0009'O,
|
|
|
|
lengthInd := 0, // overwritten
|
|
|
|
heartbeat_Data := hb_data
|
|
|
|
}
|
|
|
|
|
|
|
|
template (present) M3UA_Heartbeat_Data tr_M3UA_hb_data(template (present) octetstring hb_data) := {
|
|
|
|
tag := '0009'O,
|
|
|
|
lengthInd := ?,
|
|
|
|
heartbeat_Data := hb_data
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_BEAT(template (omit) M3UA_Heartbeat_Data hbd := omit) := {
|
|
|
|
m3UA_BEAT := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0303'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
heartbeat_Data := hbd
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_BEAT(template M3UA_Heartbeat_Data hbd := *) := {
|
|
|
|
m3UA_BEAT := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0303'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
heartbeat_Data := hbd
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_BEAT_ACK(template (omit) M3UA_Heartbeat_Data hb_data) := {
|
|
|
|
m3UA_BEAT_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0306'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
heartbeat_Data := hb_data
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_BEAT_ACK(template M3UA_Heartbeat_Data hb_data := *) := {
|
|
|
|
m3UA_BEAT_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0306'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
heartbeat_Data := hb_data
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* ASPTM Class
|
|
|
|
***********************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
const M3UA_Traffic_Mode_Type c_M3UA_TMT_override := {
|
|
|
|
tag := '000B'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
trafficModeType := int2oct(1, 4)
|
|
|
|
}
|
|
|
|
|
|
|
|
const M3UA_Traffic_Mode_Type c_M3UA_TMT_loadshare := {
|
|
|
|
tag := '000B'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
trafficModeType := int2oct(2, 4)
|
|
|
|
}
|
|
|
|
|
|
|
|
const M3UA_Traffic_Mode_Type c_M3UA_TMT_broadcast := {
|
|
|
|
tag := '000B'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
trafficModeType := int2oct(3, 4)
|
|
|
|
}
|
|
|
|
|
|
|
|
function ts_M3UA_routing_ctx(template (omit) octetstring rctx)
|
|
|
|
return template (omit) M3UA_Routing_Context {
|
|
|
|
var template (omit) M3UA_Routing_Context id;
|
|
|
|
if (istemplatekind(rctx, "omit")) {
|
|
|
|
return omit;
|
|
|
|
} else {
|
|
|
|
id.tag := '0006'O;
|
|
|
|
id.lengthInd := 0; // overwritten
|
|
|
|
id.routingContext := rctx;
|
|
|
|
return id;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function tr_M3UA_routing_ctx(template octetstring rctx)
|
|
|
|
return template M3UA_Routing_Context {
|
|
|
|
var template M3UA_Routing_Context id;
|
|
|
|
if (istemplatekind(rctx, "omit")) {
|
|
|
|
return omit;
|
|
|
|
} else if (istemplatekind(rctx, "*")) {
|
|
|
|
return *;
|
|
|
|
} else {
|
|
|
|
id.tag := '0006'O;
|
|
|
|
id.lengthInd := ?;
|
|
|
|
id.routingContext := rctx;
|
|
|
|
return id;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_ASPAC(template (omit) M3UA_Traffic_Mode_Type tmt,
|
|
|
|
template (omit) OCT4 rctx) := {
|
|
|
|
m3UA_ASPAC := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0401'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
traffic_Mode_Type := tmt,
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_ASPAC(template M3UA_Traffic_Mode_Type tmt,
|
|
|
|
template OCT4 rctx) := {
|
|
|
|
m3UA_ASPAC := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0401'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
traffic_Mode_Type := tmt,
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_ASPAC_ACK(template (omit) M3UA_Traffic_Mode_Type tmt,
|
|
|
|
template (omit) OCT4 rctx) := {
|
|
|
|
m3UA_ASPAC_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0403'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
traffic_Mode_Type := tmt,
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_ASPAC_ACK(template M3UA_Traffic_Mode_Type tmt,
|
|
|
|
template OCT4 rctx) := {
|
|
|
|
m3UA_ASPAC_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0403'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
traffic_Mode_Type := tmt,
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_ASPIA(template (omit) OCT4 rctx) := {
|
|
|
|
m3UA_ASPIA := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0402'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_ASPIA(template OCT4 rctx) := {
|
|
|
|
m3UA_ASPIA := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0402'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_ASPIA_ACK(template (omit) OCT4 rctx) := {
|
|
|
|
m3UA_ASPIA_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0404'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_ASPIA_ACK(template OCT4 rctx) := {
|
|
|
|
m3UA_ASPIA_Ack := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0404'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* MGMT Class
|
|
|
|
***********************************************************************/
|
|
|
|
|
|
|
|
template (value) M3UA_Error_Code ts_M3UA_err_code(template (value) OCT4 val) := {
|
|
|
|
tag := '000C'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
errorCode := val
|
|
|
|
}
|
|
|
|
template (present) M3UA_Error_Code tr_M3UA_err_code(template (present) OCT4 val) := {
|
|
|
|
tag := '000C'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
errorCode := val
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) M3UA_Status ts_M3UA_status(template (value) OCT2 status_type,
|
|
|
|
template (value) OCT2 status_info) := {
|
|
|
|
tag := '000D'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
statusType := status_type,
|
|
|
|
statusInfo := status_info
|
|
|
|
}
|
|
|
|
|
|
|
|
template (present) M3UA_Status tr_M3UA_status(template (present) OCT2 status_type,
|
|
|
|
template (present) OCT2 status_info) := {
|
|
|
|
tag := '000D'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
statusType := status_type,
|
|
|
|
statusInfo := status_info
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_ERR(template (value) OCT4 err_code,
|
|
|
|
template (omit) OCT4 rctx) := {
|
|
|
|
m3UA_ERR := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0000'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
error_Code := ts_M3UA_err_code(err_code),
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
|
|
affected_Point_Codes := omit,
|
|
|
|
network_Appearance := omit,
|
|
|
|
diagnostic_information := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_ERR(template (present) OCT4 err_code,
|
|
|
|
template OCT4 rctx) := {
|
|
|
|
m3UA_ERR := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0000'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
error_Code := tr_M3UA_err_code(err_code),
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
|
|
affected_Point_Codes := *,
|
|
|
|
network_Appearance := *,
|
|
|
|
diagnostic_information := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_NOTIFY(template (value) OCT2 status_type,
|
|
|
|
template (value) OCT2 status_info,
|
|
|
|
template (omit) OCT4 rctx,
|
|
|
|
template (omit) OCT4 aspid := omit,
|
|
|
|
template (omit) octetstring infostr := omit) := {
|
|
|
|
m3UA_NOTIFY := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0001'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
status := ts_M3UA_status(status_type, status_info),
|
|
|
|
aSP_Identifier := f_aspid_or_omit(aspid),
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_NOTIFY(template (present) OCT2 status_type,
|
|
|
|
template (present) OCT2 status_info,
|
|
|
|
template OCT4 rctx,
|
|
|
|
template OCT4 aspid := *,
|
|
|
|
template octetstring infostr := *) := {
|
|
|
|
m3UA_NOTIFY := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0001'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
status := tr_M3UA_status(status_type, status_info),
|
|
|
|
aSP_Identifier := *,
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
|
|
info_String := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* Message Transfer Class
|
|
|
|
***********************************************************************/
|
|
|
|
|
|
|
|
template (value) M3UA_Protocol_Data ts_M3UA_protocol_data(template (value) OCT4 opc,
|
|
|
|
template (value) OCT4 dpc,
|
|
|
|
template (value) OCT1 si,
|
|
|
|
template (value) OCT1 ni,
|
|
|
|
template (value) OCT1 mp,
|
|
|
|
template (value) OCT1 sls,
|
|
|
|
template (value) octetstring data) := {
|
|
|
|
tag := '0210'O,
|
|
|
|
lengthInd := 0, // overwritten
|
|
|
|
oPC := opc,
|
|
|
|
dPC := dpc,
|
|
|
|
sI := si,
|
|
|
|
nI := ni,
|
|
|
|
mP := mp,
|
|
|
|
sLS := sls,
|
|
|
|
userProtocolData := data
|
|
|
|
}
|
|
|
|
template (present) M3UA_Protocol_Data tr_M3UA_protocol_data(template (present) OCT4 opc,
|
|
|
|
template (present) OCT4 dpc,
|
|
|
|
template (present) OCT1 si,
|
|
|
|
template (present) OCT1 ni,
|
|
|
|
template (present) OCT1 mp,
|
|
|
|
template (present) OCT1 sls,
|
|
|
|
template (present) octetstring data) := {
|
|
|
|
tag := '0210'O,
|
|
|
|
lengthInd := ?,
|
|
|
|
oPC := opc,
|
|
|
|
dPC := dpc,
|
|
|
|
sI := si,
|
|
|
|
nI := ni,
|
|
|
|
mP := mp,
|
|
|
|
sLS := sls,
|
|
|
|
userProtocolData := data
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_DATA(template (omit) OCT4 rctx,
|
|
|
|
template (value) M3UA_Protocol_Data data) := {
|
|
|
|
m3UA_DATA := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0101'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters :={
|
|
|
|
network_Appearance := omit,
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
|
|
protocol_Data := data,
|
|
|
|
correlation_ID := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_DATA(template OCT4 rctx,
|
|
|
|
template (present) M3UA_Protocol_Data data) := {
|
|
|
|
m3UA_DATA := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0101'O,
|
|
|
|
messageLength := ?, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
network_Appearance := *,
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
|
|
protocol_Data := data,
|
|
|
|
correlation_ID := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* Routing Key Management
|
|
|
|
***********************************************************************/
|
|
|
|
|
|
|
|
template (value) M3UA_Local_Routing_Key_Id ts_M3UA_lrkid(template (value) OCT4 id) := {
|
|
|
|
tag := '020a'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
localRkId := id
|
|
|
|
}
|
|
|
|
|
|
|
|
template (present) M3UA_Local_Routing_Key_Id tr_M3UA_lrkid(template (present) OCT4 id) := {
|
|
|
|
tag := '020a'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
localRkId := id
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template (value) M3UA_Routing_Key ts_M3UA_rkey(OCT4 id, OCT3 dpc,
|
|
|
|
template (omit) M3UA_Traffic_Mode_Type tmt := omit,
|
|
|
|
template (omit) OCT4 rctx := omit) := {
|
|
|
|
tag := '0207'O,
|
|
|
|
lengthInd := 0, // overwritten
|
|
|
|
routingKey := {
|
|
|
|
local_Routing_Key_Id := ts_M3UA_lrkid(id),
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
|
|
traffic_Mode_Type := tmt,
|
|
|
|
destination_Point_Code := {
|
|
|
|
tag := '020b'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
pointCode := { '00'O, dpc }
|
|
|
|
},
|
|
|
|
network_Appearance := omit,
|
|
|
|
service_Indicators := omit,
|
|
|
|
opc_List := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) M3UA_Routing_Key tr_M3UA_rkey(template (present) OCT4 id, template (present) OCT3 dpc,
|
|
|
|
template M3UA_Traffic_Mode_Type tmt := *,
|
|
|
|
template OCT4 rctx := *) := {
|
|
|
|
tag := '0207'O,
|
|
|
|
lengthInd := ?,
|
|
|
|
routingKey := {
|
|
|
|
local_Routing_Key_Id := tr_M3UA_lrkid(id),
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
|
|
traffic_Mode_Type := tmt,
|
|
|
|
destination_Point_Code := {
|
|
|
|
tag := '020b'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
pointCode := { '00'O, dpc }
|
|
|
|
},
|
|
|
|
network_Appearance := omit,
|
|
|
|
service_Indicators := omit,
|
|
|
|
opc_List := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const OCT4 c_M3UA_REGSTS_SUCCESS := '00000000'O;
|
|
|
|
const OCT4 c_M3UA_REGSTS_ERR_UNKNOWN := '00000001'O;
|
|
|
|
const OCT4 c_M3UA_REGSTS_ERR_INVAL_DPC := '00000002'O;
|
|
|
|
const OCT4 c_M3UA_REGSTS_ERR_INVAL_NA := '00000003'O;
|
|
|
|
const OCT4 c_M3UA_REGSTS_ERR_INVAL_RKEY := '00000004'O;
|
|
|
|
const OCT4 c_M3UA_REGSTS_ERR_EPERM := '00000005'O;
|
|
|
|
// ...
|
|
|
|
|
|
|
|
const OCT4 c_m3UA_DEREGSTS_SUCCESS := '00000000'O;
|
|
|
|
const OCT4 c_m3UA_DEREGSTS_ERR_UNKNOWN := '00000001'O;
|
|
|
|
const OCT4 c_m3UA_DEREGSTS_ERR_INVAL_RCTX := '00000002'O;
|
|
|
|
const OCT4 c_m3UA_DEREGSTS_ERR_EPERM := '00000003'O;
|
|
|
|
const OCT4 c_m3UA_DEREGSTS_ERR_NOT_REG := '00000004'O;
|
|
|
|
const OCT4 c_m3UA_DEREGSTS_ERR_ASP_ACTIVE := '00000005'O;
|
|
|
|
|
|
|
|
template (value) M3UA_Registration_Result ts_M3UA_reg_res(template (value) OCT4 id,
|
|
|
|
template (value) OCT4 status,
|
|
|
|
template (value) OCT4 rctx) := {
|
|
|
|
tag := '0208'O,
|
|
|
|
lengthInd := 0, // overwritten
|
|
|
|
registrationResult := {
|
|
|
|
local_Routing_Key_Id := ts_M3UA_lrkid(id),
|
|
|
|
registration_Status := {
|
|
|
|
tag := '0212'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
registrationStatus := status
|
|
|
|
},
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) M3UA_Registration_Result tr_M3UA_reg_res(template (present) OCT4 id,
|
|
|
|
template (present) OCT4 status,
|
|
|
|
template (present) OCT4 rctx) := {
|
|
|
|
tag := '0208'O,
|
|
|
|
lengthInd := ?,
|
|
|
|
registrationResult := {
|
|
|
|
local_Routing_Key_Id := tr_M3UA_lrkid(id),
|
|
|
|
registration_Status := {
|
|
|
|
tag := '0212'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
registrationStatus := status
|
|
|
|
},
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) M3UA_Deregistration_Result ts_M3UA_dereg_res(template (value) OCT4 rctx,
|
|
|
|
template (value) OCT4 status) := {
|
|
|
|
tag := '0209'O,
|
|
|
|
lengthInd := 0, // overwritten
|
|
|
|
deregistrationResult := {
|
|
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
|
|
deregistration_Status := {
|
|
|
|
tag := '0213'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
deregistrationStatus := status
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) M3UA_Deregistration_Result tr_M3UA_dereg_res(template (present) OCT4 rctx,
|
|
|
|
template (present) OCT4 status) := {
|
|
|
|
tag := '0209'O,
|
|
|
|
lengthInd := ?,
|
|
|
|
deregistrationResult := {
|
|
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
|
|
deregistration_Status := {
|
|
|
|
tag := '0213'O,
|
|
|
|
lengthInd := 8,
|
|
|
|
deregistrationStatus := status
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_REG_REQ(template (value) M3UA_Routing_Keys rkeys) := {
|
|
|
|
m3UA_REG_REQ := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0901'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := rkeys
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_REG_REQ(template (present) M3UA_Routing_Keys rkeys) := {
|
|
|
|
m3UA_REG_REQ := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0901'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := rkeys
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_REG_RSP(template (value) M3UA_Registration_Results res) := {
|
|
|
|
m3UA_REG_RSP := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0902'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := res
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_REG_RSP(template (present) M3UA_Registration_Results res) := {
|
|
|
|
m3UA_REG_RSP := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0902'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := res
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_DEREG_REQ(template (value) M3UA_Routing_Context rctx) := {
|
|
|
|
m3UA_DEREG_REQ := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0903'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := {
|
|
|
|
routing_Context := rctx
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_DEREG_REQ(template (present) M3UA_Routing_Context rctx) := {
|
|
|
|
m3UA_DEREG_REQ := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0903'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := {
|
|
|
|
routing_Context := rctx
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) PDU_M3UA ts_M3UA_DEREG_RSP(template (value) M3UA_Deregistration_Results res) := {
|
|
|
|
m3UA_DEREG_RSP := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0904'O,
|
|
|
|
messageLength := 0, // overwritten
|
|
|
|
messageParameters := res
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_DEREG_RSP(template (present) M3UA_Deregistration_Results res) := {
|
|
|
|
m3UA_DEREG_RSP := {
|
|
|
|
version := c_M3UA_VERSION,
|
|
|
|
reserved := '00'O,
|
|
|
|
messageClassAndType := '0904'O,
|
|
|
|
messageLength := ?,
|
|
|
|
messageParameters := res
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|