987 lines
26 KiB
Plaintext
987 lines
26 KiB
Plaintext
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 OCT1 c_M3UA_NI_NATIONAL := '02'O;
|
|
const OCT1 c_M3UA_NI_INTERNATIONAL := '00'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,
|
|
messageLength := ?, // overwritten
|
|
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 := *
|
|
}
|
|
}
|
|
}
|
|
|
|
/***********************************************************************
|
|
* SSNM Class
|
|
***********************************************************************/
|
|
|
|
template (value) M3UA_Point_Code ts_M3UA_PC(uint24_t pc, uint8_t mask := 0) := {
|
|
mask := int2oct(mask, 1),
|
|
affected_Point_Code := int2oct(pc, 3)
|
|
}
|
|
|
|
template (value) M3UA_Affected_Point_Codes ts_M3UA_AffPc(template (value) M3UA_Point_Codes pcs) := {
|
|
tag := '0012'O,
|
|
lengthInd := 0,
|
|
pointCodes := pcs
|
|
}
|
|
template (present) M3UA_Affected_Point_Codes tr_M3UA_AffPc(template (present) M3UA_Point_Codes pcs) := {
|
|
tag := '0012'O,
|
|
lengthInd := ?,
|
|
pointCodes := pcs
|
|
}
|
|
|
|
template (value) M3UA_User_Cause ts_M3UA_UserCause(template (value) OCT2 cause,
|
|
template (value) OCT2 user) := {
|
|
tag := '0204'O,
|
|
lengthInd := 0,
|
|
cause := cause,
|
|
user := user
|
|
}
|
|
template (present) M3UA_User_Cause tr_M3UA_UserCause(template (present) OCT2 cause,
|
|
template (present) OCT2 user) := {
|
|
tag := '0204'O,
|
|
lengthInd := ?,
|
|
cause := cause,
|
|
user := user
|
|
}
|
|
|
|
template (value) PDU_M3UA ts_M3UA_DUNA(template (value) M3UA_Point_Codes affected_pcs,
|
|
template (omit) OCT4 rctx := omit) := {
|
|
m3UA_DUNA := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0201'O,
|
|
messageLength := 0,
|
|
messageParameters := {
|
|
network_Appearance := omit,
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := ts_M3UA_AffPc(affected_pcs),
|
|
info_String := omit
|
|
}
|
|
}
|
|
}
|
|
template (present) PDU_M3UA tr_M3UA_DUNA(template (present) M3UA_Point_Codes affected_pcs := ?,
|
|
template OCT4 rctx := *):= {
|
|
m3UA_DUNA := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0201'O,
|
|
messageLength := ?,
|
|
messageParameters := {
|
|
network_Appearance := *,
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := tr_M3UA_AffPc(affected_pcs),
|
|
info_String := *
|
|
}
|
|
}
|
|
}
|
|
|
|
template (value) PDU_M3UA ts_M3UA_DAVA(template (value) M3UA_Point_Codes affected_pcs,
|
|
template (omit) OCT4 rctx := omit) := {
|
|
m3UA_DAVA := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0202'O,
|
|
messageLength := 0,
|
|
messageParameters := {
|
|
network_Appearance := omit,
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := ts_M3UA_AffPc(affected_pcs),
|
|
info_String := omit
|
|
}
|
|
}
|
|
}
|
|
template (present) PDU_M3UA tr_M3UA_DAVA(template (present) M3UA_Point_Codes affected_pcs := ?,
|
|
template OCT4 rctx := *):= {
|
|
m3UA_DAVA := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0202'O,
|
|
messageLength := ?,
|
|
messageParameters := {
|
|
network_Appearance := *,
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := tr_M3UA_AffPc(affected_pcs),
|
|
info_String := *
|
|
}
|
|
}
|
|
}
|
|
|
|
template (value) PDU_M3UA ts_M3UA_DAUD(template (value) M3UA_Point_Codes affected_pcs,
|
|
template (omit) OCT4 rctx := omit) := {
|
|
m3UA_DAUD := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0203'O,
|
|
messageLength := 0,
|
|
messageParameters := {
|
|
network_Appearance := omit,
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := ts_M3UA_AffPc(affected_pcs),
|
|
info_String := omit
|
|
}
|
|
}
|
|
}
|
|
template (present) PDU_M3UA tr_M3UA_DAUD(template (present) M3UA_Point_Codes affected_pcs := ?,
|
|
template OCT4 rctx := *):= {
|
|
m3UA_DAUD := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0203'O,
|
|
messageLength := ?,
|
|
messageParameters := {
|
|
network_Appearance := *,
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := tr_M3UA_AffPc(affected_pcs),
|
|
info_String := *
|
|
}
|
|
}
|
|
}
|
|
|
|
template (value) PDU_M3UA ts_M3UA_SCON(template (value) M3UA_Point_Codes affected_pcs,
|
|
template (omit) OCT4 rctx := omit) := {
|
|
m3UA_SCON := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0204'O,
|
|
messageLength := 0,
|
|
messageParameters := {
|
|
network_Appearance := omit,
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := ts_M3UA_AffPc(affected_pcs),
|
|
concerned_Destination := omit,
|
|
congestion_Indicators := omit,
|
|
info_String := omit
|
|
}
|
|
}
|
|
}
|
|
template (present) PDU_M3UA tr_M3UA_SCON(template (present) M3UA_Point_Codes affected_pcs := ?,
|
|
template OCT4 rctx := *):= {
|
|
m3UA_SCON := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0204'O,
|
|
messageLength := ?,
|
|
messageParameters := {
|
|
network_Appearance := *,
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := tr_M3UA_AffPc(affected_pcs),
|
|
concerned_Destination := *,
|
|
congestion_Indicators := *,
|
|
info_String := *
|
|
}
|
|
}
|
|
}
|
|
|
|
template (value) PDU_M3UA ts_M3UA_DUPU(template (value) M3UA_Point_Codes affected_pcs,
|
|
template (value) OCT2 cause,
|
|
template (value) OCT2 user,
|
|
template (omit) OCT4 rctx := omit) := {
|
|
m3UA_DUPU := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0205'O,
|
|
messageLength := 0,
|
|
messageParameters := {
|
|
network_Appearance := omit,
|
|
routing_Context := ts_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := ts_M3UA_AffPc(affected_pcs),
|
|
user_Cause := ts_M3UA_UserCause(cause, user),
|
|
info_String := omit
|
|
}
|
|
}
|
|
}
|
|
template (present) PDU_M3UA tr_M3UA_DUPU(template (present) M3UA_Point_Codes affected_pcs := ?,
|
|
template (present) OCT2 cause := ?,
|
|
template (present) OCT2 user := ?,
|
|
template OCT4 rctx := *):= {
|
|
m3UA_DUPU := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0205'O,
|
|
messageLength := ?,
|
|
messageParameters := {
|
|
network_Appearance := *,
|
|
routing_Context := tr_M3UA_routing_ctx(rctx),
|
|
affected_Point_Codes := tr_M3UA_AffPc(affected_pcs),
|
|
user_Cause := tr_M3UA_UserCause(cause, user),
|
|
info_String := *
|
|
}
|
|
}
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_DRST := {
|
|
m3UA_DRST := {
|
|
version := c_M3UA_VERSION,
|
|
reserved := '00'O,
|
|
messageClassAndType := '0206'O,
|
|
messageLength := ?,
|
|
messageParameters := ?
|
|
}
|
|
}
|
|
|
|
template (present) PDU_M3UA tr_M3UA_SSNM := (tr_M3UA_DUNA, tr_M3UA_DAVA, tr_M3UA_DAUD,
|
|
tr_M3UA_SCON, tr_M3UA_DUPU, tr_M3UA_DRST);
|
|
|
|
/***********************************************************************
|
|
* 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
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|