Commit bbe79b7a authored by Bostjan Pintar's avatar Bostjan Pintar
Browse files

Merge branch 'main' into 'TTF_T048'

Four merges related to NGAP templates and NAS QoS types

See merge request !15
parents 2f44ab13 fd2c5135
Loading
Loading
Loading
Loading
+24 −12
Original line number Diff line number Diff line
@@ -174,16 +174,13 @@ module NG_NAS_Common {
    B32_Type        NG_TMSI
  };

  template (value) NG_PacketFilterList cs_PacketFilterList_RemoteAddress (B4_Type p_Id, octetstring p_Component) :=
  template (value) NG_PacketFilter_Type2 cs_PacketFilter_RemoteAddress (B4_Type p_Id, octetstring p_Component) :=
  { /* @status    APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */
   new := {{
     spare          := tsc_Spare2,
     direction      := '11'B,       // bi-directional
     packetFilterId := p_Id,
     len            := int2oct(lengthof(p_Component), 1),
     contents       := p_Component

   }}
  };

  template (value) QoS_Rule cs_QoS_RuleRemoteAccess (O1_Type p_Id,
@@ -196,14 +193,18 @@ module NG_NAS_Common {
   { /* @status    APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */
    identifier          := p_Id,
    iel                 := p_Length,
    u := {
      creat := {
        ruleOperationCode   := '001'B,
        dqrBit              := p_DQR,
        numOfPacketFilters  := '0001'B,
    packetFilterList    := cs_PacketFilterList_RemoteAddress (p_FilterId, p_Component),
        packetFilterList    := { cs_PacketFilter_RemoteAddress (p_FilterId, p_Component) },
        precedence          := p_Precedence,
        spare               := tsc_Spare1,
        segregation         := tsc_Spare1,
        flowIdentifier      := p_FlowId
      }
    }
  };

  template (value) NG_NAS_GutiParameters_Type cs_NG_NAS_GutiParameters(B8_Type p_AMF_RegionId,
@@ -238,6 +239,17 @@ module NG_NAS_Common {
    otherDigits := p_Guti
  };

  template (value) NG_MobileIdentity cs_NG_MobileIdentitySUCI(template (value) B4_Type p_SUPIFormat,
                                                              template (value) octetstring p_OtherDigits) :=
  { /* @status    APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */
      iei         := omit,
      iel         := int2oct(1+lengthof(p_OtherDigits), 2),              // @sic R5s190719 sic@
      idDigit1    := p_SUPIFormat,                      // 4 bits
      oddEvenInd  := '0'B,                              // 1 bit
      typeOfId    := tsc_IdType_NG_SUCI,                // 3 bits
      otherDigits := p_OtherDigits
  };

  template (present) NG_MobileIdentity cr_NG_MobileIdentity_TypeOfId(template (present) B4_Type p_FirstDigit,
                                                                     template (present) B1_Type p_OddEvenInd,
                                                                     template (present) octetstring p_OtherDigits,
+6 −6
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ module NG_NAS_MsgContainers
      configuration_Update_Complete,                  messageType = '01010101'B;
      cp_Service_Request,                             messageType = '01001111'B;
      deregistration_Accept,                          messageType = '01000110'B;
      deregistration_RequestMO,                       messageType = '01001000'B;
      deregistration_RequestMO,                       messageType = '01000101'B;
      gmm_Status,                                     messageType = '01100100'B;
      gsm_Status,                                     messageType = '11010110'B;
      network_Slice_Specific_Authentication_Complete, messageType = '01010001'B;
+256 −56

File changed.

Preview size limit exceeded, changes collapsed.

+105 −15
Original line number Diff line number Diff line
@@ -2495,14 +2495,13 @@ module NG_NAS_TypeDefs {
    B4_Type                     spare,
    B1_Type                     si16LLA,                    // @sic R5s201526 sic@
    B3_Type                     typeValue,
    octetstring                 adressInfo length(4..12),
    octetstring                 ipv6Address length(1..16) optional    /* Sep20 @sic R5s201387 Baseline Moving sic@ */
    octetstring                 adressInfo length(4..12) optional,
    octetstring                 ipv6Address length(16) optional    /* Sep20 @sic R5s201387 Baseline Moving sic@ */
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spare, si16LLA, typeValue, adressInfo, ipv6Address)";
    variant (iel) "BYTEORDER(last)";
    variant (adressInfo) "BYTEORDER(last)";
    variant (ipv6Address) "BYTEORDER(last)";
    variant (ipv6Address) "PRESENCE(si16LLA = '1'B)"
  };

  type record PDU_SessionType {                                 /* 24.501 cl. 9.11.4.11 */
@@ -2539,25 +2538,116 @@ module NG_NAS_TypeDefs {
  type record QoS_Rule {
    IEI8_Type                   identifier,
    Type6Length_Type            iel,
    B3_Type                     ruleOperationCode,
    QoS_RuleU                   u
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (u)";
    variant (iel) "BYTEORDER(last)";
  };

  type union QoS_RuleU {
    QoS_Rule_Create creat,
    QoS_Rule_Delete delete,
    QoS_Rule_Modify_and_add_PF modify_and_add_pf,
    QoS_Rule_Modify_and_replace_PF modify_and_replace_pf,
    QoS_Rule_Modify_and_delete_PF modify_and_delete_pf,
    QoS_Rule_Modify_no_PF modify_no_pf
  } with {
    variant "TAG(creat, ruleOperationCode = '001'B;
                 delete, ruleOperationCode = '010'B;
                 modify_and_add_pf, ruleOperationCode = '011'B;
                 modify_and_replace_pf, ruleOperationCode = '100'B;
                 modify_and_delete_pf, ruleOperationCode = '101'B;
                 modify_no_pf, ruleOperationCode = '110'B)"
  };

  type record QoS_Rule_Create {
    B3_Type                     ruleOperationCode ('001'B),
    B1_Type                     dqrBit,
    B4_Type                     numOfPacketFilters,
    NG_PacketFilterList         packetFilterList   optional,
    B4_Type                     numOfPacketFilters, /* >= 0 */
    NG_PacketFilterList_Type2   packetFilterList   optional,
    /*  For the "create new QoS rule" operation, the QoS rule precedence value field shall be included */
    O1_Type                     precedence,
    /* For the "create new QoS rule" operation, the QoS flow identifier value field shall be included. */
    B1_Type                     spare,
    B1_Type                     segregation,        /* Dec18 */
    B6_Type                     flowIdentifier
  } with {
    variant "FIELDORDER(msb)";
    variant (numOfPacketFilters) "LENGTHTO(packetFilterList)";
    variant (numOfPacketFilters) "UNIT(elements)"
  };

  type record QoS_Rule_Delete {
    B3_Type                     ruleOperationCode ('010'B),
    B1_Type                     dqrBit,
    /* For the "delete existing QoS rule" operation the number of packet filters shall be coded as 0. */
    B4_Type                     numOfPacketFilters ('0000'B)
    /* For the "delete existing QoS rule" operation, the QoS rule precedence
     * value field shall not be included */
    /* For the "delete existing QoS rule" operation, the QoS flow identifier
     * value field shall not be included. */
  } with {
    variant "FIELDORDER(msb)";
  };

  type record QoS_Rule_Modify_and_add_PF {
    B3_Type                     ruleOperationCode ('011'B),
    B1_Type                     dqrBit,
    B4_Type                     numOfPacketFilters, /* > 0 */
    NG_PacketFilterList_Type2   packetFilterList,
    O1_Type                     precedence         optional,
    B1_Type                     spare              optional,
    B1_Type                     segregation        optional,        /* Dec18 */
    B6_Type                     flowIdentifier     optional
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (ruleOperationCode, dqrBit, numOfPacketFilters, packetFilterList, precedence, spare, segregation, flowIdentifier)";
    variant (iel) "BYTEORDER(last)";
    variant (numOfPacketFilters) "LENGTHTO(packetFilterList)";
    variant (numOfPacketFilters) "UNIT(elements)"
  };

  type union NG_PacketFilterList {
    NG_PacketFilterList_Type1   modify,
    NG_PacketFilterList_Type2   new
  type record QoS_Rule_Modify_and_replace_PF {
    B3_Type                     ruleOperationCode ('100'B),
    B1_Type                     dqrBit,
    B4_Type                     numOfPacketFilters,  /* >= 0 */
    NG_PacketFilterList_Type2   packetFilterList   optional,
    O1_Type                     precedence         optional,
    B1_Type                     spare              optional,
    B1_Type                     segregation        optional,        /* Dec18 */
    B6_Type                     flowIdentifier     optional
  } with {
    variant "";
    variant "FIELDORDER(msb)";
    variant (numOfPacketFilters) "LENGTHTO(packetFilterList)";
    variant (numOfPacketFilters) "UNIT(elements)"
  };

  type record QoS_Rule_Modify_and_delete_PF {
    B3_Type                     ruleOperationCode ('101'B),
    B1_Type                     dqrBit,
    B4_Type                     numOfPacketFilters,  /* > 0 */
    NG_PacketFilterList_Type1   packetFilterList,
    O1_Type                     precedence         optional,
    B1_Type                     spare              optional,
    B1_Type                     segregation        optional,        /* Dec18 */
    B6_Type                     flowIdentifier     optional
  } with {
    variant "FIELDORDER(msb)";
    variant (numOfPacketFilters) "LENGTHTO(packetFilterList)";
    variant (numOfPacketFilters) "UNIT(elements)"
  };

  type record QoS_Rule_Modify_no_PF {
    B3_Type                     ruleOperationCode ('110'B),
    B1_Type                     dqrBit,
/* For the "modify existing QoS rule without modifying packet filters"
 * operation, the number of packet filters shall be coded as 0. */
    B4_Type                     numOfPacketFilters ('0000'B),
    O1_Type                     precedence         optional,
    B1_Type                     spare              optional,
    B1_Type                     segregation        optional,        /* Dec18 */
    B6_Type                     flowIdentifier     optional
  } with {
    variant "FIELDORDER(msb)";
  };

  type record of NG_PacketFilter_Type1 NG_PacketFilterList_Type1;
@@ -2575,8 +2665,8 @@ module NG_NAS_TypeDefs {
    B2_Type                     spare,
    B2_Type                     direction,
    B4_Type                     packetFilterId,
    Type4Length_Type            len                   optional,
    octetstring                 contents  length (1..255) optional // @sic R5w190307 sic@
    Type4Length_Type            len,
    octetstring                 contents length (0..255) // @sic R5w190307 sic@
  } with {
    variant "FIELDORDER(msb)";
    variant (len) "LENGTHTO (contents)";
+111 −111
Original line number Diff line number Diff line
@@ -560,7 +560,7 @@ module LibNGAP_Templates {
                                                                                                       value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
                                                                                                   },
                                                                                                   {
                                                                                                       id := id_PDUSessionResourceModifyListModReq,
                                                                                                       id := id_PDUSessionResourceModifyListModRes,
                                                                                                       criticality := reject,
                                                                                                       value_ := { PDUSessionResourceModifyListModRes := p_pDUSessionResourceModifyListModRes
                                                                                                   }