| 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, |
| messageLength := 0, // 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 := * |
| } |
| } |
| } |
| |
| |
| /*********************************************************************** |
| * 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 |
| } |
| } |
| |
| |
| |
| } |