| /////////////////////////////////////////////////////////////////////////////// |
| // // |
| // Copyright Test Competence Center (TCC) ETH 2008 // |
| // // |
| // The copyright to the computer program(s) herein is the property of TCC. // |
| // The program(s) may be used and/or copied only with the written permission // |
| // of TCC or in accordance with the terms and conditions stipulated in the // |
| // agreement/contract under which the program(s) has been supplied. // |
| // // |
| /////////////////////////////////////////////////////////////////////////////// |
| // |
| // File: NS_Types.ttcn |
| // Rev: R1A01 |
| // Prodnr: CNL 113 578 |
| // Updated: 2008-01-22 |
| // Contact: http://ttcn.ericsson.se |
| // Reference: 3GPP TS 48.016 7.3.0 |
| |
| module NS_Types |
| { // beginning of module |
| |
| // This module contains the Base Station System (BSS) Serving GPRS Support |
| // Node (SGSN) interface Network Sevice protocol |
| // 48.016 v7.3.0 with attributes for RAW encoding/decoding. |
| // |
| |
| // History: |
| // ******** |
| |
| import from General_Types all; |
| |
| external function enc_PDU_NS(in PDU_NS pdu) return octetstring |
| with { extension "prototype(convert)" |
| extension "encode(RAW)" |
| } |
| |
| external function dec_PDU_NS(in octetstring stream) return PDU_NS |
| with { extension "prototype(convert)" |
| extension "decode(RAW)" |
| } |
| |
| type record CauseNS |
| { |
| OCT1 iEI, |
| BIT1 ext, |
| LIN1_2 lengthIndicator, |
| OCT1 cause |
| } with { |
| variant (lengthIndicator) "LENGTHTO (cause)"; |
| variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B; |
| length2, ext = '0'B;)"; |
| variant (ext,lengthIndicator) "FIELDORDER(msb)"; |
| } |
| |
| type record NS_VCI |
| { |
| OCT1 iEI, |
| BIT1 ext, |
| LIN1_2 lengthIndicator, |
| OCT2 nS_VCI |
| } with { |
| variant (lengthIndicator) "LENGTHTO (nS_VCI)"; |
| variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B; |
| length2, ext = '0'B;)"; |
| variant (ext,lengthIndicator) "FIELDORDER(msb)"; |
| } |
| |
| type record NS_PDU |
| { |
| OCT1 iEI, |
| BIT1 ext, |
| LIN1_2 lengthIndicator, |
| octetstring ns_PDU |
| } with { |
| variant (lengthIndicator) "LENGTHTO (ns_PDU)"; |
| variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B; |
| length2, ext = '0'B;)"; |
| variant (ext,lengthIndicator) "FIELDORDER(msb)"; |
| } |
| |
| type record BVCI_NS |
| { |
| OCT1 iEI, |
| BIT1 ext, |
| LIN1_2 lengthIndicator, |
| OCT2 bVCI |
| } with { |
| variant (lengthIndicator) "LENGTHTO (bVCI)"; |
| variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B; |
| length2, ext = '0'B;)"; |
| variant (ext,lengthIndicator) "FIELDORDER(msb)"; |
| } |
| |
| type record ListofIP4Elements |
| { |
| OCT1 iEI, |
| BIT1 ext, |
| LIN1_2 lengthIndicator, |
| IP4_Elements iP4_Elements |
| } with { |
| variant (lengthIndicator) "LENGTHTO (iP4_Elements)"; |
| variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B; |
| length2, ext = '0'B;)"; |
| variant (ext,lengthIndicator) "FIELDORDER(msb)"; |
| } |
| |
| type record IP4_Element |
| { |
| OCT4 ipAddress, |
| OCT2 uDP_Port, |
| OCT1 signallingWeight, |
| OCT1 dataWeight |
| } |
| |
| type record of IP4_Element IP4_Elements; |
| |
| type record ListofIP6Elements |
| { |
| OCT1 iEI, |
| BIT1 ext, |
| LIN1_2 lengthIndicator, |
| IP6_Elements iP6_Elements |
| } with { |
| variant (lengthIndicator) "LENGTHTO (iP6_Elements)"; |
| variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B; |
| length2, ext = '0'B;)"; |
| variant (ext,lengthIndicator) "FIELDORDER(msb)"; |
| } |
| |
| type record IP6_Element |
| { |
| OCT16 ipAddress, |
| OCT2 uDP_Port, |
| OCT1 signallingWeight, |
| OCT1 dataWeight |
| } |
| |
| type record of IP6_Element IP6_Elements; |
| |
| type record IP_Address_NS |
| { |
| OCT1 iEI, |
| OCT1 addressType, |
| IPAddress ipAddress |
| }with { |
| variant (ipAddress) "CROSSTAG |
| ( |
| ip4Address, addressType = '01'O; |
| ip6Address, addressType = '02'O; |
| )" |
| }; |
| |
| type union IPAddress |
| { |
| OCT4 ip4Address, |
| OCT16 ip6Address |
| } |
| |
| type record EndFlag |
| { |
| BIT1 eBIT, |
| BIT7 spare |
| } |
| |
| type record ResetFlag |
| { |
| OCT1 iEI, |
| BIT1 resetBIT, |
| BIT7 spare |
| } |
| |
| type record MaxNumberOfNSVCs |
| { |
| OCT1 iEI, |
| OCT2 maxNumberOfNSVCs |
| } |
| |
| type record NumberOfIP_Endpoints |
| { |
| OCT1 iEI, |
| OCT2 numberOfIP_Endpoints |
| } |
| |
| |
| type record NSEI_NS |
| { |
| OCT1 iEI, |
| BIT1 ext, |
| LIN1_2 lengthIndicator, |
| OCT2 nSEI |
| } with { |
| variant (lengthIndicator) "LENGTHTO (nSEI)"; |
| variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B; |
| length2, ext = '0'B;)"; |
| variant (ext,lengthIndicator) "FIELDORDER(msb)"; |
| } |
| |
| type record NS_SDU_ControlBits |
| { |
| BIT1 rBit, |
| BIT1 cBit, |
| BIT6 spare |
| } |
| |
| //same type def as LIN2_2a in BSSGP but named differently |
| type union LIN1_2 |
| { |
| integer length1, |
| integer length2 |
| } with { |
| variant (length1) "FIELDLENGTH(7)"; |
| variant (length2) "FIELDLENGTH(15)"; |
| variant (length2) "BYTEORDER(last)"; |
| variant (length1,length2) "FIELDORDER(msb)" |
| } |
| |
| |
| // PDUs ************************************************************ |
| |
| |
| type record PDU_NS_Alive |
| { |
| OCT1 nsPduType |
| } |
| |
| type record PDU_NS_Alive_Ack |
| { |
| OCT1 nsPduType |
| } |
| |
| type record PDU_NS_Block |
| { |
| OCT1 nsPduType, |
| CauseNS causeNS, //TLV |
| NS_VCI nS_VCI //TLV |
| } |
| |
| type record PDU_NS_Block_Ack |
| { |
| OCT1 nsPduType, |
| NS_VCI nS_VCI //TLV |
| } |
| |
| type record PDU_NS_Reset |
| { |
| OCT1 nsPduType, |
| CauseNS causeNS, //TLV |
| NS_VCI nS_VCI, //TLV |
| NSEI_NS nSEI_NS //TLV |
| } |
| |
| type record PDU_NS_Reset_Ack |
| { |
| OCT1 nsPduType, |
| NS_VCI nS_VCI, //TLV |
| NSEI_NS nSEI_NS //TLV |
| } |
| |
| type record PDU_NS_Status |
| { |
| OCT1 nsPduType, |
| CauseNS causeNS, //TLV |
| NS_VCI nS_VCI optional, //TLV |
| NS_PDU nS_PDU optional, //TLV |
| BVCI_NS bVCI_NS optional, //TLV |
| ListofIP4Elements listofIP4Elements optional, //TLV |
| ListofIP6Elements listofIP6Elements optional //TLV |
| } with { |
| variant "TAG ( |
| nS_VCI, iEI = '01'O; |
| nS_PDU, iEI = '02'O; |
| bVCI_NS, iEI = '03'O; |
| listofIP4Elements, iEI = '05'O; |
| listofIP6Elements, iEI = '06'O |
| )" |
| } |
| |
| type record PDU_NS_Unblock |
| { |
| OCT1 nsPduType |
| } |
| |
| type record PDU_NS_Unblock_Ack |
| { |
| OCT1 nsPduType |
| } |
| |
| type record PDU_NS_Unitdata |
| { |
| OCT1 nsPduType, |
| NS_SDU_ControlBits nS_SDU_ControlBits, //V |
| OCT2 bVCI, //V |
| octetstring nS_SDU //V |
| // decoder interprets all octets after the |
| // first 4 octets as NS SDU |
| } |
| |
| type record PDU_SNS_Ack |
| { |
| OCT1 nsPduType, |
| NSEI_NS nSEI_NS, //TLV |
| integer transactionID, //V |
| CauseNS causeNS optional, //TLV |
| IP_Address_NS iP_Address_NS optional, //TV |
| ListofIP4Elements listofIP4Elements optional, //TLV |
| ListofIP6Elements listofIP6Elements optional //TLV |
| } with { |
| variant (transactionID) "FIELDLENGTH(8)"; |
| variant "TAG ( |
| causeNS, iEI = '00'O; |
| iP_Address_NS, iEI = '0B'O; |
| listofIP4Elements, iEI = '05'O; |
| listofIP6Elements, iEI = '06'O |
| )" |
| } |
| |
| type record PDU_SNS_Add |
| { |
| OCT1 nsPduType, |
| NSEI_NS nSEI_NS, //TLV |
| integer transactionID, //V |
| ListofIP4Elements listofIP4Elements optional, //TLV |
| ListofIP6Elements listofIP6Elements optional //TLV |
| } with { |
| variant (transactionID) "FIELDLENGTH(8)"; |
| variant "TAG ( |
| listofIP4Elements, iEI = '05'O; |
| listofIP6Elements, iEI = '06'O |
| )" |
| } |
| |
| type record PDU_SNS_ChangeWeight |
| { |
| OCT1 nsPduType, |
| NSEI_NS nSEI_NS, //TLV |
| integer transactionID, //V |
| ListofIP4Elements listofIP4Elements optional, //TLV |
| ListofIP6Elements listofIP6Elements optional //TLV |
| } with { |
| variant (transactionID) "FIELDLENGTH(8)"; |
| variant "TAG ( |
| listofIP4Elements, iEI = '05'O; |
| listofIP6Elements, iEI = '06'O |
| )" |
| } |
| |
| type record PDU_SNS_Config |
| { |
| OCT1 nsPduType, |
| EndFlag endFlag, //V |
| NSEI_NS nSEI_NS, //TLV |
| ListofIP4Elements listofIP4Elements optional, //TLV |
| ListofIP6Elements listofIP6Elements optional //TLV |
| } with { |
| variant "TAG ( |
| listofIP4Elements, iEI = '05'O; |
| listofIP6Elements, iEI = '06'O |
| )" |
| } |
| |
| |
| |
| type record PDU_SNS_Config_Ack |
| { |
| OCT1 nsPduType, |
| NSEI_NS nSEI_NS, //TLV |
| CauseNS causeNS optional //TLV |
| } with { |
| variant "TAG (causeNS, iEI = '00'O;)" |
| } |
| |
| |
| |
| type record PDU_SNS_Delete |
| { |
| OCT1 nsPduType, |
| NSEI_NS nSEI_NS, //TLV |
| integer transactionID, //V |
| IP_Address_NS iP_Address_NS optional, //TV |
| ListofIP4Elements listofIP4Elements optional, //TLV |
| ListofIP6Elements listofIP6Elements optional //TLV |
| } with { |
| variant (transactionID) "FIELDLENGTH(8)"; |
| variant "TAG ( |
| iP_Address_NS, iEI = '0B'O; |
| listofIP4Elements, iEI = '05'O; |
| listofIP6Elements, iEI = '06'O |
| )" |
| } |
| |
| type record PDU_SNS_Size |
| { |
| OCT1 nsPduType, |
| NSEI_NS nSEI_NS, //TLV |
| ResetFlag resetFlag, //TV |
| MaxNumberOfNSVCs maxNumberOfNSVCs, //TV |
| NumberOfIP_Endpoints numberOfIP4_Endpoints optional, //TV |
| NumberOfIP_Endpoints numberOfIP6_Endpoints optional //TV |
| } with { |
| variant "TAG ( |
| numberOfIP4_Endpoints, iEI = '08'O; |
| numberOfIP6_Endpoints, iEI = '09'O; |
| )" |
| } |
| |
| |
| type record PDU_SNS_Size_Ack |
| { |
| OCT1 nsPduType, |
| NSEI_NS nSEI_NS, |
| CauseNS causeNS optional //TLV |
| } with { |
| variant "TAG (causeNS, iEI = '00'O;)" |
| } |
| |
| |
| |
| type union PDU_NS |
| { |
| |
| PDU_NS_Alive pDU_NS_Alive, |
| PDU_NS_Alive_Ack pDU_NS_Alive_Ack, |
| PDU_NS_Block pDU_NS_Block, |
| PDU_NS_Block_Ack pDU_NS_Block_Ack, |
| PDU_NS_Reset pDU_NS_Reset, |
| PDU_NS_Reset_Ack pDU_NS_Reset_Ack, |
| PDU_NS_Status pDU_NS_Status, |
| PDU_NS_Unblock pDU_NS_Unblock, |
| PDU_NS_Unblock_Ack pDU_NS_Unblock_Ack, |
| PDU_NS_Unitdata pDU_NS_Unitdata, |
| PDU_SNS_Ack pDU_SNS_Ack, |
| PDU_SNS_Add pDU_SNS_Add, |
| PDU_SNS_ChangeWeight pDU_SNS_ChangeWeight, |
| PDU_SNS_Config pDU_SNS_Config, |
| PDU_SNS_Config_Ack pDU_SNS_Config_Ack, |
| PDU_SNS_Delete pDU_SNS_Delete, |
| PDU_SNS_Size pDU_SNS_Size, |
| PDU_SNS_Size_Ack pDU_SNS_Size_Ack |
| |
| } with { variant "TAG ( |
| |
| pDU_NS_Alive, nsPduType ='0A'O; |
| pDU_NS_Alive_Ack, nsPduType ='0B'O; |
| pDU_NS_Block, nsPduType ='04'O; |
| pDU_NS_Block_Ack, nsPduType ='05'O; |
| pDU_NS_Reset, nsPduType ='02'O; |
| pDU_NS_Reset_Ack, nsPduType ='03'O; |
| pDU_NS_Status, nsPduType ='08'O; |
| pDU_NS_Unblock, nsPduType ='06'O; |
| pDU_NS_Unblock_Ack, nsPduType ='07'O; |
| pDU_NS_Unitdata, nsPduType ='00'O; |
| pDU_SNS_Ack, nsPduType ='0C'O; |
| pDU_SNS_Add, nsPduType ='0D'O; |
| pDU_SNS_ChangeWeight, nsPduType ='0E'O; |
| pDU_SNS_Config, nsPduType ='0F'O; |
| pDU_SNS_Config_Ack, nsPduType ='10'O; |
| pDU_SNS_Delete, nsPduType ='11'O; |
| pDU_SNS_Size, nsPduType ='12'O; |
| pDU_SNS_Size_Ack, nsPduType ='13'O |
| |
| )" |
| } |
| |
| |
| }with{ encode "RAW"} // end of module |