Ttf t041

Changes related to ASN.1 - Titan bug fix. NAS decoding changes.

Merge request reports

Loading
+4 −4
Changes for ccsrc/Externals/LIB_NG_NAS_Functions_ext.cc: 4 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@ namespace LIB__NG__NAS__Functions {
  }

  INTEGER fx__f1(const BITSTRING& p_authK, const BITSTRING& p_rand, const BITSTRING& p_sqn, const BITSTRING& p_amf, BITSTRING& p_mac_a) {
    loggers::get_instance().log_msg(">>> fx__f1: p_authK: ", p_authK);
    loggers::get_instance().log_msg(">>> fx__f1: p_rand: ", p_rand);
    loggers::get_instance().log_msg(">>> fx__f1: p_authK: ", bit2oct(p_authK));
    loggers::get_instance().log_msg(">>> fx__f1: p_rand: ", bit2oct(p_rand));

    rijndael r;
    OCTETSTRING authK = bit2oct(p_authK);
@@ -74,8 +74,8 @@ namespace LIB__NG__NAS__Functions {
  }

  INTEGER fx__f1star(const BITSTRING& p_authK, const BITSTRING& p_rand, const BITSTRING& p_sqn, const BITSTRING& p_amf, BITSTRING& p_mac_s) {
    loggers::get_instance().log_msg(">>> fx__f1star: p_authK: ", p_authK);
    loggers::get_instance().log_msg(">>> fx__f1star: p_rand: ", p_rand);
    loggers::get_instance().log_msg(">>> fx__f1star: p_authK: ", bit2oct(p_authK));
    loggers::get_instance().log_msg(">>> fx__f1star: p_rand: ", bit2oct(p_rand));

    rijndael r;
    OCTETSTRING authK = bit2oct(p_authK);
+9 −0
Changes for ccsrc/Externals/common_ext.cc: 9 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -26,13 +26,17 @@ namespace CommonDefs {
   */
   //INTEGER fx__KeyDerivationFunction(INTEGER const&, BITSTRING const&, OCTETSTRING const&){
   BITSTRING fx__KeyDerivationFunction(const INTEGER& p__KDF, const BITSTRING& p__Key, const OCTETSTRING& p__String){
      loggers::get_instance().log_msg(">>> fx__KeyDerivationFunction: p__KDF: ", p__KDF);
      loggers::get_instance().log_msg(">>> fx__KeyDerivationFunction: p__Key: ", bit2oct(p__Key));

      hmac h; // hash_algorithms::sha_256: p__KDF == 1 (tsc_KDF_HMAC_SHA_256 see CommonDefs.ttcn)
      OCTETSTRING res;
      if (h.generate(p__String, bit2oct(p__Key), res) == -1) {
         loggers::get_instance().error("fx__KeyDerivationFunction: Key derivation failed");
         return int2bit(0, 0);
      }

      loggers::get_instance().log_msg("<<< fx__KeyDerivationFunction: res: ", res);
      return oct2bit(res);
   }
	/**
@@ -42,6 +46,11 @@ namespace CommonDefs {
   */
//INTEGER fx__GetSystemTime(CommonDefs::Struct__tm__Type&, INTEGER&){
void  fx__GetSystemTime(CommonDefs::Struct__tm__Type& p__Struct__tm, INTEGER& p__TimezoneInfo){
   const time_t t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
   tm* now = std::localtime(&t);
   p__Struct__tm = Struct__tm__Type(now->tm_sec, now->tm_min, now->tm_hour, now->tm_mday, now->tm_mon, now->tm_year, now->tm_wday, now->tm_yday, now->tm_isdst); 
   p__TimezoneInfo = 0; // TODO FSCOM

   return;
}
//void fx__CalculateFCS32(BITSTRING const&)   {
+2 −2
Changes for ccsrc/Ports/LibNGAP/NGAPPort.cc: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -77,12 +77,12 @@ namespace LibNGAP__Interface {
      }
      static_cast<ngap_layer*>(_layer)->add_upper_port(this);
     
      // Create layer
      /*IJ commented out // Create layer
      _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str());
      if (static_cast<ngap_layer*>(_layer) == NULL) {
        loggers::get_instance().error("NGAPPort::user_map: Invalid stack configuration: %s", it->second.c_str());
      } 
      static_cast<ngap_layer*>(_layer)->add_upper_port(this);
      static_cast<ngap_layer*>(_layer)->add_upper_port(this);*/
    } else {
      loggers::get_instance().error("NGAPPort::user_map: No layers defined in configuration file");
    }
+65 −63
Changes for ttcn/Lib3GPP/Common/CommonDefs.ttcn: 65 added lines, 63 removed lines.
Original line number Diff line number Diff line
@@ -14,77 +14,77 @@ module CommonDefs {
  //----------------------------------------------------------------------------
  // type definitions:

  type bitstring                B1_Type        length(1);
  type bitstring                B2_Type        length(2);
  type bitstring                B3_Type        length(3);
  type bitstring                B4_Type        length(4);
  type bitstring                B5_Type        length(5);
  type bitstring                B6_Type        length(6);
  type bitstring                B7_Type        length(7);
  type bitstring                B1_Type        length(1) with { variant "FIELDLENGTH(1)" };
  type bitstring                B2_Type        length(2) with { variant "FIELDLENGTH(2)" };
  type bitstring                B3_Type        length(3) with { variant "FIELDLENGTH(3)" };
  type bitstring                B4_Type        length(4) with { variant "FIELDLENGTH(4)" };
  type bitstring                B5_Type        length(5) with { variant "FIELDLENGTH(5)" };
  type bitstring                B6_Type        length(6) with { variant "FIELDLENGTH(6)" };
  type bitstring                B7_Type        length(7) with { variant "FIELDLENGTH(7)" };
  type bitstring                B7_15_Type     length(7..15);    // NOTE: length restriction can only be a range but not two destinct lengths
  type bitstring                B8_Type        length(8);
  type bitstring                B9_Type        length(9);
  type bitstring                B10_Type       length(10);
  type bitstring                B11_Type       length(11);
  type bitstring                B12_Type       length(12);
  type bitstring                B13_Type       length(13);
  type bitstring                B14_Type       length(14);
  type bitstring                B15_Type       length(15);
  type bitstring                B16_Type       length(16);
  type bitstring                B18_Type       length(18);
  type bitstring                B20_Type       length(20);
  type bitstring                B22_Type       length(22);
  type bitstring                B24_Type       length(24);
  type bitstring                B27_Type       length(27);
  type bitstring                B28_Type       length(28);
  type bitstring                B32_Type       length(32);
  type bitstring                B36_Type       length(36);
  type bitstring                B40_Type       length(40);
  type bitstring                B41_Type       length(41);
  type bitstring                B42_Type       length(42);
  type bitstring                B43_Type       length(43);
  type bitstring                B45_Type       length(45);
  type bitstring                B47_Type       length(47);
  type bitstring                B48_Type       length(48);
  type bitstring                B56_Type       length(56);
  type bitstring                B64_Type       length(64);
  type bitstring                B80_Type       length(80);
  type bitstring                B112_Type      length(112);
  type bitstring                B128_Type      length(128);
  type bitstring                B160_Type      length(160);
  type bitstring                B184_Type      length(184);
  type bitstring                B192_Type      length(192);
  type bitstring                B256_Type      length(256);
  type bitstring                B8_Type        length(8) with { variant "FIELDLENGTH(8)" };
  type bitstring                B9_Type        length(9) with { variant "FIELDLENGTH(9)" };
  type bitstring                B10_Type       length(10) with { variant "FIELDLENGTH(10)" };
  type bitstring                B11_Type       length(11) with { variant "FIELDLENGTH(11)" };
  type bitstring                B12_Type       length(12) with { variant "FIELDLENGTH(12)" };
  type bitstring                B13_Type       length(13) with { variant "FIELDLENGTH(13)" };
  type bitstring                B14_Type       length(14) with { variant "FIELDLENGTH(14)" };
  type bitstring                B15_Type       length(15) with { variant "FIELDLENGTH(15)" };
  type bitstring                B16_Type       length(16) with { variant "FIELDLENGTH(16)" };
  type bitstring                B18_Type       length(18) with { variant "FIELDLENGTH(18)" };
  type bitstring                B20_Type       length(20) with { variant "FIELDLENGTH(20)" };
  type bitstring                B22_Type       length(22) with { variant "FIELDLENGTH(22)" };
  type bitstring                B24_Type       length(24) with { variant "FIELDLENGTH(24)" };
  type bitstring                B27_Type       length(27) with { variant "FIELDLENGTH(27)" };
  type bitstring                B28_Type       length(28) with { variant "FIELDLENGTH(28)" };
  type bitstring                B32_Type       length(32) with { variant "FIELDLENGTH(32)" };
  type bitstring                B36_Type       length(36) with { variant "FIELDLENGTH(36)" };
  type bitstring                B40_Type       length(40) with { variant "FIELDLENGTH(40)" };
  type bitstring                B41_Type       length(41) with { variant "FIELDLENGTH(41)" };
  type bitstring                B42_Type       length(42) with { variant "FIELDLENGTH(42)" };
  type bitstring                B43_Type       length(43) with { variant "FIELDLENGTH(43)" };
  type bitstring                B45_Type       length(45) with { variant "FIELDLENGTH(45)" };
  type bitstring                B47_Type       length(47) with { variant "FIELDLENGTH(47)" };
  type bitstring                B48_Type       length(48) with { variant "FIELDLENGTH(48)" };
  type bitstring                B56_Type       length(56) with { variant "FIELDLENGTH(56)" };
  type bitstring                B64_Type       length(64) with { variant "FIELDLENGTH(64)" };
  type bitstring                B80_Type       length(80) with { variant "FIELDLENGTH(80)" };
  type bitstring                B112_Type      length(112) with { variant "FIELDLENGTH(112)" };
  type bitstring                B128_Type      length(128) with { variant "FIELDLENGTH(128)" };
  type bitstring                B160_Type      length(160) with { variant "FIELDLENGTH(160)" };
  type bitstring                B184_Type      length(184) with { variant "FIELDLENGTH(184)" };
  type bitstring                B192_Type      length(192) with { variant "FIELDLENGTH(192)" };
  type bitstring                B256_Type      length(256) with { variant "FIELDLENGTH(256)" };
  type bitstring                B32_128_Type   length(32..128);

  type B128_Type                B128_Key_Type;      /* 128 bit security key */
  type B256_Type                B256_Key_Type;      /* 256 bit security key */

  type octetstring              O1_Type         length(1);
  type octetstring              O2_Type         length(2);
  type octetstring              O3_Type         length(3);
  type octetstring              O4_Type         length(4);
  type octetstring              O5_Type         length(5);
  type octetstring              O6_Type         length(6);
  type octetstring              O8_Type         length(8);
  type octetstring              O9_Type         length(9);
  type octetstring              O10_Type        length(10);
  type octetstring              O13_Type        length(13);
  type octetstring              O14_Type        length(14);
  type octetstring              O15_Type        length(15);
  type octetstring              O16_Type        length(16);
  type octetstring              O28_Type        length(28);
  type octetstring              O32_Type        length(32);
  type octetstring              O43_Type        length(43);

  type hexstring                H1_Type         length(1);
  type hexstring                H2_Type         length(2);
  type hexstring                H4_Type         length(4);
  type hexstring                H12_Type        length(12);
  type hexstring                H14_Type        length(14);
  type octetstring              O1_Type         length(1) with { variant "FIELDLENGTH(1)" };
  type octetstring              O2_Type         length(2) with { variant "FIELDLENGTH(2)" };
  type octetstring              O3_Type         length(3) with { variant "FIELDLENGTH(3)" };
  type octetstring              O4_Type         length(4) with { variant "FIELDLENGTH(4)" };
  type octetstring              O5_Type         length(5) with { variant "FIELDLENGTH(5)" };
  type octetstring              O6_Type         length(6) with { variant "FIELDLENGTH(6)" };
  type octetstring              O8_Type         length(8) with { variant "FIELDLENGTH(8)" };
  type octetstring              O9_Type         length(9) with { variant "FIELDLENGTH(9)" };
  type octetstring              O10_Type        length(10) with { variant "FIELDLENGTH(10)" };
  type octetstring              O13_Type        length(13) with { variant "FIELDLENGTH(13)" };
  type octetstring              O14_Type        length(14) with { variant "FIELDLENGTH(14)" };
  type octetstring              O15_Type        length(15) with { variant "FIELDLENGTH(15)" };
  type octetstring              O16_Type        length(16) with { variant "FIELDLENGTH(16)" };
  type octetstring              O28_Type        length(28) with { variant "FIELDLENGTH(28)" };
  type octetstring              O32_Type        length(32) with { variant "FIELDLENGTH(32)" };
  type octetstring              O43_Type        length(43) with { variant "FIELDLENGTH(43)" };

  type hexstring                H1_Type         length(1) with { variant "FIELDLENGTH(1)" };
  type hexstring                H2_Type         length(2) with { variant "FIELDLENGTH(2)" };
  type hexstring                H4_Type         length(4) with { variant "FIELDLENGTH(4)" };
  type hexstring                H12_Type        length(12) with { variant "FIELDLENGTH(12)" };
  type hexstring                H14_Type        length(14) with { variant "FIELDLENGTH(14)" };

  type O1_Type                  Octet_Type;
  type hexstring                HalfOctet_Type length(1);
  type hexstring                HalfOctet_Type length(1) with { variant "FIELDLENGTH(1)" };

  type record of B8_Type B8_List_Type;

@@ -1695,4 +1695,6 @@ module CommonDefs {
    }
    return omit;
  }
} with {
  encode "RAW"
}
+278 −18
Changes for ttcn/Lib3GPP/NAS/NAS_CommonTypeDefs.ttcn: 278 added lines, 18 removed lines.
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ module NAS_CommonTypeDefs {

  type HalfOctet_Type           SpareHalfOctet;

  type hexstring   NAS_Mcc length(3);   //* @desc Type which can be used to represent an MCC (as string of 3 decimal digits).
  type hexstring   NAS_Mcc length(3) with { variant "FIELDLENGTH(3)" };   //* @desc Type which can be used to represent an MCC (as string of 3 decimal digits).

  type record of hexstring EmergencyNumList;

@@ -65,7 +65,7 @@ module NAS_CommonTypeDefs {

  type B3_Type PdnTypeValue;

  type bitstring   BcdDigit_Bit length(4);
  type bitstring   BcdDigit_Bit length(4) with { variant "FIELDLENGTH(4)" };

  type B3_Type              NAS_IdType;
  type B8_Type              NAS_CauseValue_Type;
@@ -92,6 +92,11 @@ module NAS_CommonTypeDefs {
    IEI8_Type                   iei                   optional, /* present in case of TLV; omit in case of LV */
    Type4Length_Type            iel,
    octetstring                 nameValue length(1..100)
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (nameValue)";
    variant (iel) "BYTEORDER(last)";
    variant (nameValue) "BYTEORDER(last)";
  };

  type record AdditionalUpdateType {                          /* 24.301 cl. 9.9.3.0B @sic R5s100135 sic@ */
@@ -99,6 +104,8 @@ module NAS_CommonTypeDefs {
    B2_Type                     pnb_CIOT,                     // 0=no additional info, 1=CP, 2=UP, 3=reserved @sic R5s160711 Baseline Moving sic@
    B1_Type                     signallingActiveFlag,         // @sic R5s160711 Baseline Moving sic@
    B1_Type                     addUpdateTypeValue
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -110,6 +117,8 @@ module NAS_CommonTypeDefs {
    IEI4_Type            iei  optional,                   // '1000'B
    B1_Type              spare1,
    KeySeq               keySeq
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -120,6 +129,8 @@ module NAS_CommonTypeDefs {
  type record ConnectivityType {
    IEI4_Type            iei,
    B4_Type              connectivityValue
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -130,6 +141,8 @@ module NAS_CommonTypeDefs {
    // IEI is always skipped
    B1_Type                     switchOff,
    NAS_AttDetValue_Type        typeOfDetach
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -141,6 +154,8 @@ module NAS_CommonTypeDefs {
    IEI4_Type            iei,
    B3_Type              spare,
    B1_Type              lowPriority
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -154,6 +169,8 @@ module NAS_CommonTypeDefs {
    B4_Type              cnDRXcoef,             // CN specific DRX cycle length coefficient
    B1_Type              splitOnCCCH,           // Split on CCCCH
    B3_Type              nonDRXtimer            // non-DRX timer
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -164,6 +181,8 @@ module NAS_CommonTypeDefs {
  type record EmergServCat {
    B1_Type              spare,
    B7_Type              emergSCValue             // Emergency Service Category value
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -175,6 +194,11 @@ module NAS_CommonTypeDefs {
    Type4Length_Type   len,                   // length
    EmergServCat       emergServCat,          // Emergency Service Category
    octetstring        digits length(0..10)   // BCD numbers
  } with {
    variant "FIELDORDER(msb)";
    variant (len) "LENGTHTO (emergServCat, digits)";
    variant (len) "BYTEORDER(last)";
    variant (digits) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -186,6 +210,10 @@ module NAS_CommonTypeDefs {
    IEI8_Type            iei,                   // '00110100'B (34 hex) @sic R5s110420 sic@
    Type4Length_Type     iel,                   // length @sic R5s110420 sic@
    record length (1..10) of EmergNum  emergNum             // Emergency Number
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (emergNum)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -197,6 +225,8 @@ module NAS_CommonTypeDefs {
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    GprsTimerUnit               unit,
    B5_Type                     timerValue
  } with {
    variant "FIELDORDER(msb)";
  };

  type B3_Type GprsTimerUnit;
@@ -211,6 +241,10 @@ module NAS_CommonTypeDefs {
    Type4Length_Type     iel,                   // length  @sic R5s110420 sic@
    GprsTimerUnit        unit,                      // Unit
    B5_Type              gprsTimerValue             // Timer  value
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (unit, gprsTimerValue)";
    variant (iel) "BYTEORDER(last)";
  };
  
  type GPRS_Timer2 GPRS_Timer3; // definition is identical @sic R5s150329 Baseline Moving sic@
@@ -224,6 +258,8 @@ module NAS_CommonTypeDefs {
    IEI4_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B1_Type                     spare,
    B3_Type                     requestValue
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -235,6 +271,8 @@ module NAS_CommonTypeDefs {
    IEI8_Type   iei          optional,
    NAS_PlmnId  plmn,        // MCC  + MNC 3 digits each
    NAS_Lac     lac          // LAC
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -246,6 +284,8 @@ module NAS_CommonTypeDefs {
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    LocAreaId                   lai,                            /* MCC  + MNC + LAC */
    O1_Type                     rac                             /* RAC */
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -256,6 +296,8 @@ module NAS_CommonTypeDefs {
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B4_Type                     spare,
    B4_Type                     llcSapiValue
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -271,6 +313,11 @@ module NAS_CommonTypeDefs {
    B1_Type              oddEvenInd,              // Odd/even indicator
    NAS_IdType           typeOfId,                // Type of identity
    octetstring          otherDigits length(0..10) // Other identity digits (10 octets rather than 8 to cover Guti as well)
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (idDigit1, oddEvenInd, typeOfId, otherDigits)";
    variant (iel) "BYTEORDER(last)";
    variant (otherDigits) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -301,6 +348,10 @@ module NAS_CommonTypeDefs {
    B1_Type              cMSP,                  // CM Service Prompt Support
    B1_Type              a5_3,                  // Algorithm A5/3 Support
    B1_Type              a5_2                   // Algorithm A5/2 Support
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spare1_1, revLvl, eSIND, a5_1, rFPwrCap, spare1_2, pSCap, sSSI, sMCap, vBS, vGCS, fC, cM3, spare1_3, lCSVA, uCS2, soLSA, cMSP, a5_3, a5_2)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -405,6 +456,11 @@ module NAS_CommonTypeDefs {
    B1_Type              xtdTSCSetCap               optional, // @sic R5s150329 Baseline Moving sic@
    B1_Type              xtdEARFCNValueRange        optional, // @sic R5s160712 Baseline Moving sic@
    bitstring            spareBits2                 optional
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spareBit, multibandSupported, a5_7, a5_6, a5_5, a5_4, associatedRadioCapabilty2, spareBits1, associatedRadioCapabilty1, maskBit1, rGSM_RadioCapability, maskBit2, multiSlotClass, uCS2Treatment, extMeasurementCapability, maskBit3, msMeasurementCapability, maskBit4, msPositioningMethod, maskBit5, eDGE_MultiSlot, maskBit6, psk8_Struct, maskBit7, gSM400BandsSupported, gSM400AssociatedRadioCapability, maskBit8, gSM850AssociatedRadiioCapability, maskBit9, pCS1900AssociatedRadiioCapability, uMTS_FDD_RAT_Capability, uMTS384TDD_RAT_Capability, cDMA2000_RAT_Capability, maskBit10, dTM_GPRS_MultiSlotSubclass, singleSlotDTM, maskBit11, dTM_EGPRS_MultiSlorSubclass, maskBit12, singleBandSupport, maskBit13, gSM700AssociatedRadioCapability, uMTS128TDD_RAT_Capability, gERANFeatPack1, mask14, extDTM_GPRS_MultiSlotSubclass, etxDTM_EGPRS_MultiSlotSubclass, mask15, highMultislotCap, spare2, gERANFeatPack2, gMSKMultislotPowerProfile, pSKMultislotPowerProfile, mask17, tGSM400BandsSupported, tGSM400AssocRadioCap, spare, dlAdvancedRxPerf, dTMEhancCap, mask19, dTMGPRSHighMultislotClass, offsetReq, mask20, dTMEGPRSHighMultislotClass, rptdACCHCap, mask21, gsm710AssocRadioCap, mask22, tgsm810AssocRadioCap, cipheringModeSettingCap, addPositionCap, eutraFDDSupport, eutraTDDSupport, eutraMeasAndReporting, priorityBasedReselection, utraCSGCellsReporting, vamosLevel, tighterCap, selectCipheringDLSACCH, csPS_SRVCC_G2U, csPS_SRVCC_G2E, geranNwkSharing, eutraWidebandRSRQMeas, erBandSupport, utraMultipleFreqBandInd, eutraMultipleFreqBandInd, xtdTSCSetCap, xtdEARFCNValueRange)";
    variant (iel) "BYTEORDER(last)";
    variant (spareBits2) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -417,6 +473,8 @@ module NAS_CommonTypeDefs {
    B2_Type              eDGE_RF_PowerCapability1  optional, // not present if pwrMask1 = 0
    B1_Type              pwrMask2,
    B2_Type              eDGE_RF_PowerCapability2  optional // not present if pwrMask2 = 0
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -426,6 +484,8 @@ module NAS_CommonTypeDefs {
  type record MS_MeasCapability {
    B4_Type              sMS_VALUE,
    B4_Type              sM_VALUE
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -468,6 +528,11 @@ module NAS_CommonTypeDefs {
    B1_Type                     restrictEnhancedCoverageCap optional,  // @sic R5s170598 Baseline Moving sic@
    B1_Type                     dualConnectivityEUTRA_NR optional, // @sic R5s180553 Baseline Moving sic@
    bitstring                   spareBits length (0..43) optional
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (gea1, smCapDedicated, smCapGPRS, ucs2, ssScreeningIndicator, soLSACap, revLevelIndicator, pfcFeatureMode, gea2, gea3, gea4, gea5, gea6, gea7, lcsVACap, psHOtoUTRAN_IuModeCap, psHOtoEUTRAN_S1ModeCap, emmCombinedCap, isrSupport, srvccToGERAN_UTRANCap, epcCap, nfCap, gERANNtwkShareCap, userPlaneIntegrityProtSupport, gia4, gia5, gia6, gia7, ePCOInd, restrictEnhancedCoverageCap, dualConnectivityEUTRA_NR, spareBits)";
    variant (iel) "BYTEORDER(last)";
    variant (spareBits) "BYTEORDER(last)";
  };

// =============================================================================
@@ -479,6 +544,8 @@ type record Non3GPP_NW_ProvidedPolicies {
  IEI4_Type            iei,
  B3_Type              spareBits,
  B1_Type              n3ENInd
  } with {
    variant "FIELDORDER(msb)";
};

  // =============================================================================
@@ -491,6 +558,10 @@ type record Non3GPP_NW_ProvidedPolicies {
    Type4Length_Type     iel,                   //
    B10_Type              nriContainerValue,      // @sic R5s140778 sic@
    B6_Type              spareBits                // @sic R5s140778 sic@
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (nriContainerValue, spareBits)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -503,6 +574,10 @@ type record Non3GPP_NW_ProvidedPolicies {
    Type4Length_Type            iel,   // @sic R5s110420 sic@
    B1_Type                     spare,
    B7_Type                     idValue
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spare, idValue)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -514,6 +589,10 @@ type record Non3GPP_NW_ProvidedPolicies {
    IEI8_Type                   iei,
    Type4Length_Type            iel,
    NAS_PlmnId                  plmn
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (plmn)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -526,6 +605,10 @@ type record Non3GPP_NW_ProvidedPolicies {
    Type4Length_Type            iel,              // @sic R5s110420 sic@
    record length(1..15) of
    NAS_PlmnId                  plmnList          /* list of PLMNs */
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (plmnList)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -537,6 +620,8 @@ type record Non3GPP_NW_ProvidedPolicies {
    IEI4_Type                   iei,
    B3_Type                     spare,
    B1_Type                     extdPeriodicTimers
  } with {
    variant "FIELDORDER(msb)";
  };

  type PLMN_List.plmnList NAS_PlmnIdList_Type;
@@ -554,6 +639,11 @@ type record Non3GPP_NW_ProvidedPolicies {
    B3_Type                     configProtocol,
    record length (0..83) of
    ProtocolContainer         pco optional
  } with {
    variant "FIELDORDER(msb)";
    // FIXME variant (pco) "FORCEOMIT(protocolLongLength)";
    variant (iel) "LENGTHTO (ext, spare, configProtocol, pco)";
    variant (iel) "BYTEORDER(last)";
  };

  type record ProtocolContainer {
@@ -561,6 +651,11 @@ type record Non3GPP_NW_ProvidedPolicies {
    Type4Length_Type          protocolLength        optional, // @sic R5s201386 Baseline Moving sic@
    Type6Length_Type          protocolLongLength    optional, // always set to omit in UL @sic R5s201386 Baseline Moving sic@
    octetstring               content               optional
  } with {
    variant "FIELDORDER(msb)";
    variant (protocolLength) "LENGTHTO (content)";
    variant (protocolLength) "BYTEORDER(last)";
    variant (content) "BYTEORDER(last)";
  };

  type ProtocolConfigOptions.pco NAS_ProtocolConfigOptions_Type;
@@ -570,6 +665,9 @@ type record Non3GPP_NW_ProvidedPolicies {
    B1_Type     aer,
    B3_Type     uplinkTimeUnit,
    O3_Type     maxUplinkRate  optional // @sic R5s170598 Baseline Moving sic@
  } with {
    variant "FIELDORDER(msb)";
    variant (maxUplinkRate) "BYTEORDER(last)";
  };
  // =============================================================================
  // Structured Type Definition
@@ -580,6 +678,11 @@ type record Non3GPP_NW_ProvidedPolicies {
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    Type4Length_Type            iel                   optional, // only present in 24.008 version of DETACH REQUEST message
    O3_Type                     signatureValue
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (signatureValue)";
    variant (iel) "BYTEORDER(last)";
    variant (signatureValue) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -620,6 +723,10 @@ type record Non3GPP_NW_ProvidedPolicies {
    B8_Type                     guaranteedBitRateDL_Ext2     optional,  // @sic R5s1300195 Baseline Moving sic@
    B8_Type                     maxBitRateUL_Ext2            optional,  // @sic R5s1300195 Baseline Moving sic@
    B8_Type                     guaranteedBitRateUL_Ext2     optional   // @sic R5s1300195 Baseline Moving sic@
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spare1, delayClass, relabilityClass, peakThroughput, spare2, precedenceClass, spare3, meanThroughput, trafficClass, deliveryOrder, deliveryErrorSDU, maxSduSize, maxBitRateUL, maxBitRateDL, residualBER, sduErrorRatio, transferDelay, trafficHandlingPrio, guaranteedBitRateUL, guaranteedBitRateDL, spare4, signallingInd, sourceStatisticsDescriptor, maxBitRateDL_Ext, guaranteedBitRateDL_Ext, maxBitRateUL_Ext, guaranteedBitRateUL_Ext, maxBitRateDL_Ext2, guaranteedBitRateDL_Ext2, maxBitRateUL_Ext2, guaranteedBitRateUL_Ext2)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -631,6 +738,8 @@ type record Non3GPP_NW_ProvidedPolicies {
    IEI4_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B1_Type                     spare,
    B3_Type                     levelValue
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -643,6 +752,10 @@ type record Non3GPP_NW_ProvidedPolicies {
    Type4Length_Type len,                   // length
    B8_Type          bitMap1to8,  // codec bitmap bits 1-8
    B8_Type          bitMap9to16 optional // codec bitmap bits 9-16
  } with {
    variant "FIELDORDER(msb)";
    variant (len) "LENGTHTO (bitMap1to8, bitMap9to16)";
    variant (len) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -654,6 +767,10 @@ type record Non3GPP_NW_ProvidedPolicies {
    IEI8_Type            iei,                   // '01000000'B (40 hex) @sic R5s110420 sic@
    Type4Length_Type     iel,                   // length @sic R5s110420 sic@
    record of Codec      codec// list of codecs
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (codec)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -665,6 +782,8 @@ type record Non3GPP_NW_ProvidedPolicies {
    // IEI is always skipped
    B1_Type                     spare,
    B3_Type                     typeValue
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -676,6 +795,8 @@ type record Non3GPP_NW_ProvidedPolicies {
    IEI4_Type            iei  optional,
    B3_Type              spare3,
    TmsiStatusValue      flag                     // Flag
  } with {
    variant "FIELDORDER(msb)";
  };

  // =============================================================================
@@ -691,12 +812,21 @@ type record Non3GPP_NW_ProvidedPolicies {
    B4_Type                     noOfPktFilter,
    record of PacketFilter      packetFilterList      optional,
    record of TftParameter      parameterList         optional
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (tftOperationCode, eBit, noOfPktFilter, packetFilterList, parameterList)";
    variant (iel) "BYTEORDER(last)";
  };

  type record TftParameter {
    IEI8_Type                   iei,
    Type4Length_Type            iel,
    octetstring                 contents
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (contents)";
    variant (iel) "BYTEORDER(last)";
    variant (contents) "BYTEORDER(last)";
  };

  type record PacketFilter {
@@ -706,6 +836,11 @@ type record Non3GPP_NW_ProvidedPolicies {
    B8_Type                     precedence            optional,
    Type4Length_Type            iel                   optional,
    PacketFilterContents        contents              optional
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (contents)";
    variant (iel) "BYTEORDER(last)";
    variant (contents) "BYTEORDER(last)";
  };

  type record of PacketFilterComponent PacketFilterContents;
@@ -713,7 +848,9 @@ type record Non3GPP_NW_ProvidedPolicies {
  type record PacketFilterComponent {
    O1_Type                     id,
    PacketFilterComponentValue  packetFilterComponentValue
  } with { variant (id)"FIELDLENGTH(8)";};
  } with {
    variant "FIELDORDER(msb)";
  };

  type union PacketFilterComponentValue {
    O8_Type    ipv4RemoteAddress,
@@ -726,6 +863,17 @@ type record Non3GPP_NW_ProvidedPolicies {
    O4_Type    securityParameterIndex,
    O2_Type    typeOfServiceTrafficClass,
    O3_Type    flowLabel
  } with {
    variant "FIELDORDER(msb)";
    variant (ipv4RemoteAddress) "BYTEORDER(last)";
    variant (ipv6RemoteAddress) "BYTEORDER(last)";
    variant (singleLocalPort) "BYTEORDER(last)";
    variant (localPortRange) "BYTEORDER(last)";
    variant (singleRemotePort) "BYTEORDER(last)";
    variant (remotePortRange) "BYTEORDER(last)";
    variant (securityParameterIndex) "BYTEORDER(last)";
    variant (typeOfServiceTrafficClass) "BYTEORDER(last)";
    variant (flowLabel) "BYTEORDER(last)";
  };

  type record UE_NetworkCap {                                   // 24.301 cl. 9.9.3.34
@@ -743,6 +891,8 @@ type record Non3GPP_NW_ProvidedPolicies {
    octetstring                 spare                 optional  // @sic R5s100135 sic@
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO(eeaCap, eiaCap, ueaCap, uiaCap, srvcc_LPP_ProSeCap, cIoT_proSeCap, cIoT_V2X, edt_WUS, musim, spare)";
    variant (iel) "BYTEORDER(last)";
  }
  
  type record ReAttemptIndicator {                                   // 24.301 cl. 9.9.4.13A, 24.008 cl. 10.5.6.5A
@@ -755,6 +905,8 @@ type record Non3GPP_NW_ProvidedPolicies {
    B1_Type                     ratcValue
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO(spare, eplmncValue, ratcValue)";
    variant (iel) "BYTEORDER(last)";
  }
  
  // =============================================================================
@@ -768,8 +920,9 @@ type record Non3GPP_NW_ProvidedPolicies {
    B128_Type                   aUTN                            /* (as for UMTS) */
  } with {
    variant "FIELDORDER(msb)";
    variant "PRESENCE (iei = '20'O)";
    variant (iel) "LENGTHTO (aUTN)"
    variant (iel) "LENGTHTO (aUTN)";
    variant (iel) "BYTEORDER(last)";
    variant (aUTN) "BYTEORDER(last)";
  }

  // =============================================================================
@@ -784,8 +937,9 @@ type record Non3GPP_NW_ProvidedPolicies {
    B112_Type            auts              // AUTS, 14 octets
  } with {
    variant "FIELDORDER(msb)";
    variant "PRESENCE (iei = '30'O)";
    variant (iel) "LENGTHTO (auts)"
    variant (iel) "LENGTHTO (auts)";
    variant (iel) "BYTEORDER(last)";
    variant (auts) "BYTEORDER(last)";
  }

  // =============================================================================
@@ -798,7 +952,7 @@ type record Non3GPP_NW_ProvidedPolicies {
    B128_Type            randValue    // Authentication Parameter RAND value
  } with {
    variant "FIELDORDER(msb)";
    variant "PRESENCE (iei = '21'O)"
    variant (randValue) "BYTEORDER(last)";
  }

  type record DaylightSavingTime {                              /* 24.301 cl. 9.9.3.5 -> 24.008 cl. 10.5.3.12 */
@@ -808,6 +962,8 @@ type record Non3GPP_NW_ProvidedPolicies {
    B2_Type                     val
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spare, val)";
    variant (iel) "BYTEORDER(last)";
  };

  type record NetworkName {                                     /* 24.301 cl. 9.9.3.21 -> 24.008 cl. 10.5.3.5a */
@@ -820,6 +976,9 @@ type record Non3GPP_NW_ProvidedPolicies {
    octetstring                 text
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (ext, codingScheme, addCI, spareBitCnt, text)";
    variant (iel) "BYTEORDER(last)";
    variant (text) "BYTEORDER(last)";
  };

  type record TimeZone {                                        /* 24.301 cl. 9.9.3.26 -> 24.008 cl. 10.5.3.8 */
@@ -855,6 +1014,8 @@ type record Non3GPP_NW_ProvidedPolicies {
    B2_Type              voiceDomainPrefEUTRA        // @sic R5s110233 sic@
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spareBits, ueUsageSetting, voiceDomainPrefEUTRA)";
    variant (iel) "BYTEORDER(last)";
  };

  type record IdentityType {                                    /* 24.301 cl. 9.9.3.15 -> 24.008 cl. 10.5.3.4 */
@@ -919,6 +1080,9 @@ type record Non3GPP_NW_ProvidedPolicies {
    octetstring      components   // ASN.1 definitions BER encoded
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (components)";
    variant (iel) "BYTEORDER(last)";
    variant (components) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -946,6 +1110,8 @@ type record Non3GPP_NW_ProvidedPolicies {
    O1_Type              sS_VersionInfo // ss version information
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (sS_VersionInfo)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -987,6 +1153,10 @@ type record ExtdDRXParams {
  B4_Type       pagingTimeWindow,
  B4_Type       eDRXValue,
  B8_Type       extdPTW         optional // @sic R5s221182 Baseline Moving Rel-17 sic@
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (pagingTimeWindow, eDRXValue, extdPTW)";
    variant (iel) "BYTEORDER(last)";
};

// =============================================================================
@@ -998,6 +1168,11 @@ type record NBIFOMContainer {
  IEI8_Type     iei,
  Type4Length_Type     iel,           // length
  octetstring   containerContents
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (containerContents)";
    variant (iel) "BYTEORDER(last)";
    variant (containerContents) "BYTEORDER(last)";
};

// =============================================================================
@@ -1009,6 +1184,11 @@ type record NBIFOMContainer {
    IEI8_Type                   iei,
    Type4Length_Type            iel,
    O2_Type                     dcnIdValue
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (dcnIdValue)";
    variant (iel) "BYTEORDER(last)";
    variant (dcnIdValue) "BYTEORDER(last)";
  };

// =============================================================================
@@ -1023,6 +1203,10 @@ type record NBIFOMContainer {
    B4_Type                     spare,
    B3_Type                     configProtocol,
    record of ProtocolContainer pco optional
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (ext, spare, configProtocol, configProtocol)";
    variant (iel) "BYTEORDER(last)";
  };

  type record of ProtocolContainer NAS_ExtdProtocolConfigOptions_Type; /* @sic R5-2001649 sic@ @status    APPROVED (LTE_A_PRO, NBIOT) */
@@ -1035,6 +1219,11 @@ type record NBIFOMContainer {
    IEI8_Type                   iei,
    Type4Length_Type            iel,
    octetstring                 additionalInfo
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (additionalInfo)";
    variant (iel) "BYTEORDER(last)";
    variant (additionalInfo) "BYTEORDER(last)";
  };

  type record AuthenticationResponseParameter {                 /* 24.301 cl. 9.9.3.4 */
@@ -1042,8 +1231,10 @@ type record NBIFOMContainer {
    Type4Length_Type            iel                   optional, /* present in case of LV or TLV; omit in case of V */
    B32_128_Type                res                             /* 4..16 octets */
  } with {
    variant "PRESENCE (iei = '2D'O)";
    variant (iel) "LENGTHTO (res)"
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (res)";
    variant (iel) "BYTEORDER(last)";
    variant (res) "BYTEORDER(last)";
  }

  type record NAS_KeySetIdentifier {                            /* 24.301 cl. 9.9.3.21 */
@@ -1052,8 +1243,6 @@ type record NBIFOMContainer {
    NAS_KsiValue                nasKeySetId
  } with {
    variant "FIELDORDER(msb)";
    variant "FORCEOMIT(iei)";
    variant "FIELDLENGTH(4)";
  }

  type record HashMME { /* 24.301 cl. 9.9.3.50 @sic R5s170597 Baseline Moving sic@ */
@@ -1062,8 +1251,9 @@ type record NBIFOMContainer {
    O8_Type                     hashMME
  } with {
    variant "FIELDORDER(msb)";
    variant "FORCEOMIT(iei)";
    variant "FIELDLENGTH(4)";
    variant (iel) "LENGTHTO (hashMME)";
    variant (iel) "BYTEORDER(last)";
    variant (hashMME) "BYTEORDER(last)";
  }

  type record PDN_Address {                                     /* 24.301 cl. 9.9.4.9 */
@@ -1074,8 +1264,9 @@ type record NBIFOMContainer {
    octetstring                 adressInfo length(4..12)
  } with {
    variant "FIELDORDER(msb)";
    variant "FORCEOMIT(iei)";
    variant (iel) "LENGTHTO (adressInfo)";
    variant (iel) "LENGTHTO (spare, typeValue, adressInfo)";
    variant (iel) "BYTEORDER(last)";
    variant (adressInfo) "BYTEORDER(last)";
  };

  type record ReplayedNASMessageContainer { /* 24.301 cl. 9.9.3.51 @sic R5s170597 Baseline Moving sic@ */
@@ -1084,8 +1275,9 @@ type record NBIFOMContainer {
    octetstring                 replayedNASMsgContainerValue
  } with {
    variant "FIELDORDER(msb)";
    variant "FORCEOMIT(iei)";
    variant (iel) "LENGTHTO (replayedNASMsgContainerValue)";
    variant (iel) "BYTEORDER(last)";
    variant (replayedNASMsgContainerValue) "BYTEORDER(last)";
  };

  type record NAS_SecurityAlgorithms {                          /* 24.301 cl. 9.9.3.23 */
@@ -1094,6 +1286,8 @@ type record NBIFOMContainer {
    B3_Type                     cipheringType,                  /* Type of ciphering algorithm */
    B1_Type                     spare2,
    B3_Type                     integrityType                   /* Type of integrity protection algorithm */
  } with {
    variant "FIELDORDER(msb)";
  };

  type record Extd_EPS_QOS {                             /* 24.301 cl. 9.9.4.30 */
@@ -1109,6 +1303,10 @@ type record NBIFOMContainer {
    B8_Type                     guaranteedBitRateUl_2,
    B8_Type                     guaranteedBitRateDl_1,
    B8_Type                     guaranteedBitRateDl_2
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (unitMaxBitRate, maxBitRateUl_1, maxBitRateUl_2, maxBitRateDl_1, maxBitRateDl_2, unitGuaranteedBitRate, guaranteedBitRateUl_1, guaranteedBitRateUl_2, guaranteedBitRateDl_1, guaranteedBitRateDl_2)";
    variant (iel) "BYTEORDER(last)";
  };

  type record UE_Status {                                     // 24.501 cl. 9.11.3.56
@@ -1117,6 +1315,10 @@ type record NBIFOMContainer {
    B6_Type                     spare,
    B1_Type                     n1ModeRegistered,
    B1_Type                     s1ModeRegistered
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spare, n1ModeRegistered, s1ModeRegistered)";
    variant (iel) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -1130,6 +1332,10 @@ type record NBIFOMContainer {
    B7_Type              spareBits,                 // @sic R5s201386 Baseline Moving sic@
    B1_Type              extdEmergNumListValidity,
    record of ExtdEmergNum  emergNum
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spareBits, extdEmergNumListValidity, emergNum)";
    variant (iel) "BYTEORDER(last)";
  };

  type record ExtdEmergNum {
@@ -1137,6 +1343,12 @@ type record NBIFOMContainer {
    octetstring        digits,                 // BCD numbers
    Type4Length_Type   lengthOfSubService,
    octetstring        subServices
  } with {
    variant "FIELDORDER(msb)";
    variant (lengthOfSubService) "LENGTHTO (subServices)";
    variant (lengthOfSubService) "BYTEORDER(last)";
    variant (digits) "BYTEORDER(last)";
    variant (subServices) "BYTEORDER(last)";
  };

  // =============================================================================
@@ -1151,6 +1363,10 @@ type record NBIFOMContainer {
    O1_Type                     ueaCap                optional, // @sic R5s100135 sic@
    O1_Type                     uiaCap                optional, // @sic R5s100135 sic@
    O1_Type                     geaCap                optional  // @sic R5s100135 sic@
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (eeaCap, eiaCap, ueaCap, uiaCap, geaCap)";
    variant (iel) "BYTEORDER(last)";
  };

  type record EPS_QualityOfService {                             /* 24.301 cl. 9.9.4.3 */
@@ -1169,6 +1385,10 @@ type record NBIFOMContainer {
    B8_Type                     maxBitRateDL_Ext2            optional,  // @sic R5s1300195 Baseline Moving, R5s180640 sic@
    B8_Type                     guaranteedBitRateUL_Ext2     optional,  // @sic R5s1300195 Baseline Moving, R5s180640 sic@
    B8_Type                     guaranteedBitRateDL_Ext2     optional   // @sic R5s1300195 Baseline Moving, R5s180640 sic@
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (maxBitRateUl, maxBitRateDl, guaranteedBitRateUl, guaranteedBitRateDl, maxBitRateUlExt, maxBitRateDlExt, guaranteedBitRateUlExt, guaranteedBitRateDlExt, maxBitRateUL_Ext2, maxBitRateDL_Ext2, guaranteedBitRateUL_Ext2, guaranteedBitRateDL_Ext2)";
    variant (iel) "BYTEORDER(last)";
  };

  type record EPS_BearerContextStatus {                         /* 24.301 cl. 9.9.2.1 */
@@ -1178,18 +1398,29 @@ type record NBIFOMContainer {
    B4_Type                     ebi4_1,                         /* EBI(1)- EBI(4) @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    B1_Type                     spare,                          /* EBI(0) is spare and shall be coded as zero @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    B8_Type                     ebi8_15                         /* EBI(8)- EBI(15)*/
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (ebi5_7, ebi4_1, spare, ebi5_7)";
    variant (iel) "BYTEORDER(last)";
  };

  type record UERadioCapId {                       /* 24.501 cl. 9.11.3.68 */
    IEI8_Type                   iei                   optional, /* present in case of TV or TLV; omit in case of V */
    Type4Length_Type            iel                   optional, /* present in case of LV or TLV; omit in case of V */
    octetstring                 id
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (id)";
    variant (iel) "BYTEORDER(last)";
    variant (id) "BYTEORDER(last)";
  };

  type record UERadioCapIdDeletion  {                 /* 24.501 cl. 9.11.3.69 */
    IEI4_Type                   iei                   optional,
    B1_Type                     spare,
    B3_Type                     deleteReq
  } with {
    variant "FIELDORDER(msb)";
  };

  type record DRXParamCommon  {                      /* 24.301 cl. 9.9.3.63 */
@@ -1197,42 +1428,67 @@ type record NBIFOMContainer {
    Type4Length_Type            iel,
    B4_Type                     spare,
    B4_Type                     drxValue
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spare, drxValue)";
    variant (iel) "BYTEORDER(last)";
  };

  type record ReleaseAssistanceInd {                 /* 24.301 cl. 9.9.4.25 */
    IEI4_Type                   iei                   optional,
    B2_Type                     spare,
    B2_Type                     dlDataExpected
  } with {
    variant "FIELDORDER(msb)";
  };

  type record WUSAssistInfo {                           /* 24.301 cl. 9.9.3.62 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel,
    record of WusInfoType       infoType
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (infoType)";
    variant (iel) "BYTEORDER(last)";
  };
  
  type record WusInfoType {
    B3_Type                     wusType,
    B5_Type                     pagingProbability,
    octetstring                 wusValue    optional
  } with {
    variant "FIELDORDER(msb)";
    variant (wusValue) "BYTEORDER(last)";
  };

  type record ServingPLMNRateControl {                           /* 24.301 cl. 9.9.4.28 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel,
    O2_Type                     servingPLMNRate
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (servingPLMNRate)";
    variant (iel) "BYTEORDER(last)";
    variant (servingPLMNRate) "BYTEORDER(last)";
  };

  type record ControlPlaneInd {                           /* 24.301 cl. 9.9.4.23 */
    IEI4_Type                   iei                   optional,
    B3_Type                     spare,
    B1_Type                     cpIndValue
  } with {
    variant "FIELDORDER(msb)";
  };

  type record QoSParameters {
    O1_Type                    id,
    Type4Length_Type           lenOfContent,
    octetstring                qosParam
  } with {
    variant "FIELDORDER(msb)";
    variant (lenOfContent) "LENGTHTO (qosParam)";
    variant (lenOfContent) "BYTEORDER(last)";
    variant (qosParam) "BYTEORDER(last)";
  };

  type record of QoSParameters QoSParametersList;
@@ -1242,7 +1498,11 @@ type record NBIFOMContainer {
    Type4Length_Type            iel,
    B4_Type                     spare,
    B4_Type                     requestType
  } with {
    variant "FIELDORDER(msb)";
    variant (iel) "LENGTHTO (spare, requestType)";
    variant (iel) "BYTEORDER(last)";
  };
 
//}  with { encode "NAS Types" }
}  with { encode "RAW"; variant "" }
}  with { encode "RAW" }
Loading
Loading