Commit d70fb786 authored by Pau Espin Pedrol's avatar Pau Espin Pedrol
Browse files

LibNGAP_Templates: Support passing optional NAS-PDU to PDUSessionResourceReleaseCommand

parent 523479b9
Loading
Loading
Loading
Loading
+90 −0
Original line number Diff line number Diff line
@@ -327,6 +327,51 @@ module LibNGAP_Templates {
                                            }
                        } // End of template m_n2_PDUSessionResourceReleaseCommand
                    function f_ts_n2_PDUSessionResourceReleaseCommand(template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID,
                                                                      template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID,
                                                                      template (omit) NAS_PDU p_nAS_PDU,
                                                                      template (value) PDUSessionResourceToReleaseListRelCmd p_pDUSessionResourceToReleaseListRelCmd)
                    return template (value) InitiatingMessage {
                        var template (value) InitiatingMessage pdu := {
                            procedureCode := id_PDUSessionResourceRelease,
                            criticality   := reject,
                            value_ := {
                                PDUSessionResourceReleaseCommand := {
                                    protocolIEs := {
                                        {
                                            id := id_AMF_UE_NGAP_ID,
                                            criticality := reject,
                                            value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
                                        },
                                        {
                                            id := id_RAN_UE_NGAP_ID,
                                            criticality := reject,
                                            value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
                                        }
                                    }
                                }
                            }
                        };
                        var integer idx := lengthof(pdu.value_.PDUSessionResourceReleaseCommand.protocolIEs);
                        if (isvalue(p_nAS_PDU)) {
                                pdu.value_.PDUSessionResourceReleaseCommand.protocolIEs[idx] :=
                                    {
                                        id := id_NAS_PDU,
                                        criticality := ignore,
                                        value_ := { nAS_PDU := p_nAS_PDU }
                                    };
                                idx := idx + 1;
                        }
                         pdu.value_.PDUSessionResourceReleaseCommand.protocolIEs[idx] :=
                            { id := id_PDUSessionResourceToReleaseListRelCmd,
                              criticality := reject,
                              value_ := { PDUSessionResourceToReleaseListRelCmd := p_pDUSessionResourceToReleaseListRelCmd }
                            };
                        return pdu;
                    }
                    } // End of group Send
                    group Receive {
@@ -364,6 +409,51 @@ module LibNGAP_Templates {
                                            }
                        } // End of template mw_n2_PDUSessionResourceReleaseCommand
                    function f_tr_n2_PDUSessionResourceReleaseCommand(template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
                                                                      template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
                                                                      template NAS_PDU p_nAS_PDU := omit,
                                                                      template (present) PDUSessionResourceToReleaseListRelCmd p_pDUSessionResourceToReleaseListRelCmd := ?)
                    return template (present) InitiatingMessage  {
                        var template (present) InitiatingMessage pdu := {
                            procedureCode := id_PDUSessionResourceRelease,
                            criticality   := reject,
                            value_ := {
                                PDUSessionResourceReleaseCommand := {
                                    protocolIEs := {
                                        {
                                            id := id_AMF_UE_NGAP_ID,
                                            criticality := reject,
                                            value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
                                        },
                                        {
                                            id := id_RAN_UE_NGAP_ID,
                                            criticality := reject,
                                            value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
                                        }
                                    }
                                }
                            }
                        };
                        var integer idx := lengthof(pdu.value_.PDUSessionResourceReleaseCommand.protocolIEs);
                        if (not istemplatekind(p_nAS_PDU, "omit")) {
                                pdu.value_.PDUSessionResourceReleaseCommand.protocolIEs[idx] :=
                                    {
                                        id := id_NAS_PDU,
                                        criticality := ignore,
                                        value_ := { nAS_PDU := p_nAS_PDU }
                                    };
                                idx := idx + 1;
                         }
                         pdu.value_.PDUSessionResourceReleaseCommand.protocolIEs[idx] :=
                            { id := id_PDUSessionResourceToReleaseListRelCmd,
                              criticality := reject,
                              value_ := { PDUSessionResourceToReleaseListRelCmd := p_pDUSessionResourceToReleaseListRelCmd }
                            };
                        return pdu;
                    }
                    } // End of group Receive
                } // End of group PDU_SESSION_RESOURCE_RELEASE_COMMAND