convert over to Titan3 ProtocolModules for IP + UDP

This avoids the need to carrry the 3GPP CommonIP.ttcn + Parameters.ttcn
master
Harald Welte 6 years ago
parent 94e4d90c38
commit a5c6eaf8fb
  1. 23
      .gitignore
  2. 445
      testproject/CommonIP.ttcn
  3. 223
      testproject/IPL4_example.ttcn
  4. 14
      testproject/Makefile
  5. 723
      testproject/Parameters.ttcn
  6. 21
      testproject/gen_links.sh

23
.gitignore vendored

@ -1,13 +1,20 @@
testproject/IPL4asp_Functions.ttcn
testproject/IPL4asp_PT.cc
testproject/IPL4asp_PT.hh
testproject/IPL4asp_PortType.ttcn
testproject/IPL4asp_Types.ttcn
testproject/IPL4asp_discovery.cc
testproject/IPL4asp_protocol_L234.hh
testproject/Socket_API_Definitions.ttcn
testproject/TCCInterface_Functions.ttcn
testproject/TCCConversion_Functions.ttcn
testproject/TCCConversion.cc
testproject/TCCInterface.cc
testproject/TCCInterface_ip.h
testproject/UsefulTtcn3Types.ttcn
testproject/XSD.ttcn
testproject/http_www_netfilter_org_xml_libnetfilter_conntrack.ttcn
testproject/General_Types.ttcn
testproject/IP_EncDec.cc
testproject/IP_Types.ttcn
testproject/UDP_EncDec.cc
testproject/UDP_Types.ttcn
testproject/TCP_EncDec.cc
testproject/TCP_Types.ttcn

@ -1,445 +0,0 @@
/******************************************************************************/
// @copyright Copyright Notification
// No part may be reproduced except as authorized by written permission.
// The copyright and the foregoing restriction extend to reproduction in all media.
// Trademark 2012, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC).
// All rights reserved.
// @version: 36.523-3v10.1.0
// $Date: 2012-09-03 00:32:42 +0200 (Mon, 03 Sep 2012) $
// $Rev: 7245 $
/******************************************************************************/
module CommonIP {
import from CommonDefs all;
import from Parameters all;
const UInt8_Type tsc_IP_Protocol_ICMP := 1; /* @status APPROVED */
const UInt8_Type tsc_IP_Protocol_UDP := 17; /* @status APPROVED */
const UInt8_Type tsc_ICMP_Type_EchoReply := 0; /* @status APPROVED */
const UInt8_Type tsc_IP_Protocol_TCP := 6; /* @status APPROVED */
const UInt8_Type tsc_IP_Protocol_IPSec := 50; /* @status APPROVED */
const integer tsc_IMS_PortNumber_5060 := 5060; /* @status APPROVED */
const octetstring tsc_IP_AnyData := '00112233445566778899AABBCCDDEEFF'O; /* @status APPROVED */
function fl_LoopbackModeB_IPv4IPv6Address(boolean p_UseIPv4,
charstring p_IPv4Addr,
charstring p_IPv6Addr) return charstring
{
if (p_UseIPv4) { return p_IPv4Addr; }
else { return p_IPv6Addr; }
}
function f_LoopbackModeB_IP_Address_UE(boolean p_UseIPv4 := pc_IPv4,
PDN_Index_Type p_PdnIndex := PDN_1) return charstring
{
var charstring v_IPAddr := "";
select (p_PdnIndex) {
case (PDN_1) { v_IPAddr := fl_LoopbackModeB_IPv4IPv6Address(p_UseIPv4, px_IPv4_Address1_UE, px_IPv6_Address1_UE); }
case (PDN_2) { v_IPAddr := fl_LoopbackModeB_IPv4IPv6Address(p_UseIPv4, px_IPv4_Address2_UE, px_IPv6_Address2_UE); }
}
return v_IPAddr;
}
function f_LoopbackModeB_IP_Address_NW(boolean p_UseIPv4 := pc_IPv4,
PDN_Index_Type p_PdnIndex := PDN_1) return charstring
{
var charstring v_IPAddr := "";
select (p_PdnIndex) {
case (PDN_1) { v_IPAddr := fl_LoopbackModeB_IPv4IPv6Address(p_UseIPv4, px_IPv4_Address1_NW, px_IPv6_Address1_NW); }
case (PDN_2) { v_IPAddr := fl_LoopbackModeB_IPv4IPv6Address(p_UseIPv4, px_IPv4_Address2_NW, px_IPv6_Address2_NW); }
}
return v_IPAddr;
}
function f_IpAddressIsIPv4(charstring p_IpAddress) return boolean
{
var template charstring v_Pattern := pattern "[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+";
return match(p_IpAddress, v_Pattern);
};
function f_IpAddressIsIPv6(charstring p_IpAddress) return boolean
{
var Char1List_Type v_SplitCharList := {":"};
var CharStringList_Type v_FieldList := f_StringSplit(p_IpAddress, v_SplitCharList);
var integer v_FieldCnt := lengthof(v_FieldList);
var charstring v_Field;
var charstring v_Pattern;
var integer v_FieldLength;
var integer i;
if ((v_FieldCnt == 1) or (v_FieldCnt > 8)) { return false; }
for (i:=0; i<v_FieldCnt; i:=i+1) {
v_Field := v_FieldList[i];
v_FieldLength := lengthof(v_Field);
v_Pattern := "[0-9a-f]#(" & int2str(v_FieldLength) & ")";
if (v_FieldLength > 4) { return false; }
if (not match(v_Field, pattern v_Pattern)) { return false; }
}
return true;
}
function f_Convert_IPv4Addr2OctString(charstring p_IPv4AddrChar) return O4_Type
{
var Char1List_Type v_SplitCharList := {"."};
var CharStringList_Type v_FieldList := f_StringSplit(p_IPv4AddrChar, v_SplitCharList);
var octetstring v_IPv4AddrOct := ''O;
var integer v_FieldCnt := lengthof(v_FieldList);
var integer v_IntVal;
var integer i;
if (v_FieldCnt != 4) {
FatalError(__FILE__, __LINE__, "invalid IP Address");
}
for (i:=0; i<v_FieldCnt; i:=i+1) {
v_IntVal := str2int(v_FieldList[i]);
v_IPv4AddrOct := v_IPv4AddrOct & int2oct(v_IntVal, 1);
}
return v_IPv4AddrOct;
}
function f_Convert_IPv6Addr2OctString(charstring p_IPv6AddrChar) return O16_Type
{
var Char1List_Type v_SplitCharList := {":"};
var CharStringList_Type v_FieldList := f_StringSplit(p_IPv6AddrChar, v_SplitCharList);
var octetstring v_IPv6AddrOct := ''O;
var integer v_FieldCnt := lengthof(v_FieldList);
var boolean v_EmptyBlocksExpanded := false; /* set to true when "::" has been expanded => subsequent empty fields will just be replaced by '0000' */
var charstring v_Field;
var integer v_NoOfEmptyBlocks;
var integer i;
var integer k;
if (v_FieldCnt > 8) {
FatalError(__FILE__, __LINE__, "invalid IP Address");
}
for (i:=0; i<v_FieldCnt; i:=i+1) {
v_Field := v_FieldList[i];
select (lengthof(v_Field)) {
case (0) { // empty block
if (not v_EmptyBlocksExpanded) { /* e.g. for "2001:0ba0::" we have two empty blocks at the end of the address but only one of them shall be expanded; @sic R5s110645 change 5 sic@ */
v_EmptyBlocksExpanded := true;
v_NoOfEmptyBlocks := 8 - (v_FieldCnt - 1); /* "-1" because one empty block is already contained in v_FieldCnt */
for (k:=0; k < v_NoOfEmptyBlocks; k:=k+1) {
v_IPv6AddrOct := v_IPv6AddrOct & '0000'O;
}
} else { /* "::" has already been expanded */
v_IPv6AddrOct := v_IPv6AddrOct & '0000'O;
}
}
case (1) {
v_IPv6AddrOct := v_IPv6AddrOct & str2oct("000" & v_Field);
}
case (2) {
v_IPv6AddrOct := v_IPv6AddrOct & str2oct("00" & v_Field);
}
case (3) {
v_IPv6AddrOct := v_IPv6AddrOct & str2oct("0" & v_Field);
}
case (4) {
v_IPv6AddrOct := v_IPv6AddrOct & str2oct(v_Field);
}
case else {
FatalError(__FILE__, __LINE__, "invalid IP Address");
}
}
}
return v_IPv6AddrOct;
}
function f_Convert_OctString2IPv6Addr(O16_Type p_IPv6AddrOct) return charstring
{ /* @sic R5s110603 change 2 sic@ */
var charstring v_IPv6Addr := "";
var integer v_AddrLength := lengthof(p_IPv6AddrOct);
var integer i := 0;
while (i < v_AddrLength) {
v_IPv6Addr := v_IPv6Addr & oct2str(substr(p_IPv6AddrOct, i, 2));
i:=i+2;
if (i < v_AddrLength) {
v_IPv6Addr := v_IPv6Addr & ":";
}
}
return v_IPv6Addr;
}
function f_IpChecksum(octetstring p_OctetString) return O2_Type
{ /* calculate header checksum; within the given octetstring the header checksum shall be set to '0000'O */
var integer i;
var octetstring v_Word;
var integer v_DataLength := lengthof(p_OctetString);
var integer v_Sum := 0;
if (v_DataLength mod 2 != 0) {
p_OctetString := p_OctetString & '00'O;
}
// accumulate all words of the IP header
for (i:=0; i < v_DataLength; i := i+2) {
v_Word := p_OctetString[i] & p_OctetString[i+1];
v_Sum := v_Sum + oct2int(v_Word);
}
// deal with the
while (v_Sum > tsc_UInt16Max) {
v_Sum := (v_Sum mod (tsc_UInt16Max+1)) + (v_Sum / (tsc_UInt16Max+1));
}
// get complement
v_Sum := tsc_UInt16Max - v_Sum;
return int2oct(v_Sum, 2);
}
function f_IPv4Packet_Create(O2_Type p_Identification := '6d7d'O, // Identification; random value (can be used to generate different packets
O1_Type p_TOS := '00'O, // Differentiated services (RFC 2474), Explicit Congestion Notification (ECN, RFC 3168), former TOS (RFC 791)
UInt8_Type p_Protocol,
charstring p_SourceAddr,
charstring p_DestAddr,
octetstring p_IPPayload)
return octetstring
{
var integer v_TotalLength := lengthof(p_IPPayload) + 20; // 20 bytes IP header
var O4_Type v_SourceAddrStr := f_Convert_IPv4Addr2OctString(p_SourceAddr);
var O4_Type v_DestAddrStr := f_Convert_IPv4Addr2OctString(p_DestAddr);
var octetstring v_OctetString;
// IP header
v_OctetString := '45'O; // version and header length
v_OctetString := v_OctetString & p_TOS;
v_OctetString := v_OctetString & int2oct(v_TotalLength, 2);
v_OctetString := v_OctetString & p_Identification;
v_OctetString := v_OctetString & '0000'O; // flags (3 bits; typically 0 for UDP) and fragment offset (13 bits; typically 0 for UDP)
v_OctetString := v_OctetString & '80'O; // Time to live (random value)
v_OctetString := v_OctetString & int2oct(p_Protocol, 1);
v_OctetString := v_OctetString & f_IpChecksum(v_OctetString & '0000'O & v_SourceAddrStr & v_DestAddrStr);
v_OctetString := v_OctetString & v_SourceAddrStr;
v_OctetString := v_OctetString & v_DestAddrStr;
v_OctetString := v_OctetString & p_IPPayload;
return v_OctetString;
}
function f_IPv6Packet_Create(O1_Type p_TrafficClass := '00'O,
UInt20_Type p_FlowLabel := 0,
UInt8_Type p_Protocol,
charstring p_SourceAddr,
charstring p_DestAddr,
octetstring p_IPPayload)
return octetstring
{
var hexstring v_Version := '6'H;
var hexstring v_TrafficClass := oct2hex (p_TrafficClass);
var hexstring v_FlowLabel := int2hex (p_FlowLabel, 5);
var O16_Type v_SourceAddrStr := f_Convert_IPv6Addr2OctString(p_SourceAddr);
var O16_Type v_DestAddrStr := f_Convert_IPv6Addr2OctString(p_DestAddr);
var octetstring v_OctetString;
// IP header
v_OctetString := hex2oct(v_Version & v_TrafficClass & v_FlowLabel); // Version, Traffic Class and Flow Label to be revised
v_OctetString := v_OctetString & int2oct (lengthof(p_IPPayload), 2); // Payload Length
v_OctetString := v_OctetString & int2oct(p_Protocol, 1); // Next header
v_OctetString := v_OctetString & '40'O; // Hop Limit
v_OctetString := v_OctetString & v_SourceAddrStr;
v_OctetString := v_OctetString & v_DestAddrStr;
v_OctetString := v_OctetString & p_IPPayload;
return v_OctetString;
}
function f_IPv4UdpDatagram_Create(charstring p_SourceAddr,
charstring p_DestAddr,
UInt16_Type p_SourcePort,
UInt16_Type p_DestPort,
octetstring p_UdpPayload)
return octetstring
{ /* @desc create UDP datagram */
var integer v_UdpDatagramLength := lengthof(p_UdpPayload) + 8; // 8 bytes UDP header
// Pseudo Header:
var O4_Type v_SourceAddrStr := f_Convert_IPv4Addr2OctString(p_SourceAddr);
var O4_Type v_DestAddrStr := f_Convert_IPv4Addr2OctString(p_DestAddr);
var O2_Type v_LengthStr := int2oct(v_UdpDatagramLength, 2);
var O1_Type v_Protocol := '11'O; // UDP
var octetstring v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr &'00'O & v_Protocol & v_LengthStr;
var O2_Type v_ChecksumDummy := '0000'O;
var octetstring v_OctetString := ''O;
v_OctetString := v_OctetString & int2oct(p_SourcePort, 2);
v_OctetString := v_OctetString & int2oct(p_DestPort, 2);
v_OctetString := v_OctetString & v_LengthStr;
v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader & v_OctetString & v_ChecksumDummy & p_UdpPayload); /* Note: the UDP checksum can also be '0000'O what means "no chcksum"; but that is not the usual case */
v_OctetString := v_OctetString & p_UdpPayload;
return v_OctetString;
}
function f_IPv6UdpDatagram_Create(charstring p_SourceAddr,
charstring p_DestAddr,
UInt16_Type p_SourcePort,
UInt16_Type p_DestPort,
octetstring p_UdpPayload)
return octetstring
{
var integer v_UdpDatagramLength := lengthof(p_UdpPayload) + 8; // 8 bytes UDP header
var O16_Type v_SourceAddrStr := f_Convert_IPv6Addr2OctString(p_SourceAddr);
var O16_Type v_DestAddrStr := f_Convert_IPv6Addr2OctString(p_DestAddr);
var O4_Type v_LengthStr := int2oct(v_UdpDatagramLength, 4); // RFC 2460 clause 8.1
var octetstring v_PseudoHeader;
var octetstring v_OctetString;
// Prepare the pseudo header, see RFC 2460 and illustration in Wikipedia
v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr & v_LengthStr;
v_PseudoHeader := v_PseudoHeader & v_LengthStr; // UDP length
v_PseudoHeader := v_PseudoHeader & '000000'O & '11'O; // Zeros and Next header (= Protocol)
v_PseudoHeader := v_PseudoHeader & int2oct(p_SourcePort, 2) & int2oct(p_DestPort, 2) & int2oct(v_UdpDatagramLength, 2) & '0000'O;
v_PseudoHeader := v_PseudoHeader & p_UdpPayload;
// Now set the UDP packet
v_OctetString := int2oct(p_SourcePort, 2);
v_OctetString := v_OctetString & int2oct(p_DestPort, 2);
v_OctetString := v_OctetString & int2oct(v_UdpDatagramLength, 2);
v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader);
v_OctetString := v_OctetString & p_UdpPayload;
return v_OctetString;
}
function f_IPv4TcpDatagram_Create(charstring p_SourceAddr,
charstring p_DestAddr,
UInt16_Type p_SourcePort,
UInt16_Type p_DestPort,
octetstring p_TcpPayload)
return octetstring
{
var integer v_TcpDatagramLength := lengthof(p_TcpPayload) + 20; // 20 bytes TCP header
// Pseudo Header:
var O4_Type v_SourceAddrStr := f_Convert_IPv4Addr2OctString(p_SourceAddr);
var O4_Type v_DestAddrStr := f_Convert_IPv4Addr2OctString(p_DestAddr);
var O2_Type v_LengthStr := int2oct(v_TcpDatagramLength, 2);
var O1_Type v_Protocol := int2oct(tsc_IP_Protocol_TCP, 1);
var octetstring v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr &'00'O & v_Protocol & v_LengthStr;
var O2_Type v_ChecksumDummy := '0000'O;
var octetstring v_UrgPointer := '0000'O;
var octetstring v_OctetString := ''O;
v_OctetString := v_OctetString & int2oct(p_SourcePort, 2);
v_OctetString := v_OctetString & int2oct(p_DestPort, 2);
v_OctetString := v_OctetString & int2oct(0, 4); // Sequence Number
v_OctetString := v_OctetString & int2oct(0, 4); // Acknowledgment Number
v_OctetString := v_OctetString & '5011'O; // 4bits HeaderLen/6bits Reserved/URG/ACK/PSH/RST/SYN/FIN
v_OctetString := v_OctetString & int2oct(256, 4); // How to set the windows size?
v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader & v_OctetString & v_ChecksumDummy & v_UrgPointer & p_TcpPayload); /* Note: the TCP checksum can also be '0000'O what means "no chcksum"; but that is not the usual case */
v_OctetString := v_OctetString & v_UrgPointer;
v_OctetString := v_OctetString & p_TcpPayload;
return v_OctetString;
}
function f_IPv6TcpDatagram_Create(charstring p_SourceAddr,
charstring p_DestAddr,
UInt16_Type p_SourcePort,
UInt16_Type p_DestPort,
octetstring p_TcpPayload)
return octetstring
{ /* @sic R5s110645 change 4: IPv6 address instead of IPv4 sic@ */
var integer v_TcpDatagramLength := lengthof(p_TcpPayload) + 20; // 20 bytes TCP header
// Pseudo Header:
var O16_Type v_SourceAddrStr := f_Convert_IPv6Addr2OctString(p_SourceAddr);
var O16_Type v_DestAddrStr := f_Convert_IPv6Addr2OctString(p_DestAddr);
var O4_Type v_LengthStr := int2oct(v_TcpDatagramLength, 4); // 2460 clause 8.1
var O1_Type v_Protocol := int2oct(tsc_IP_Protocol_TCP, 1);
var octetstring v_PseudoHeader;
var O2_Type v_ChecksumDummy := '0000'O;
var octetstring v_UrgPointer := '0000'O;
var octetstring v_OctetString := ''O;
// Prepare the pseudo header, see RFC 2460 and illustration in Wikipedia
v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr & v_LengthStr;
v_PseudoHeader := v_PseudoHeader & '000000'O & v_Protocol; // Zeros and Next header (= Protocol)
v_OctetString := v_OctetString & int2oct(p_SourcePort, 2);
v_OctetString := v_OctetString & int2oct(p_DestPort, 2);
v_OctetString := v_OctetString & int2oct(0, 4); // Sequence Number
v_OctetString := v_OctetString & int2oct(0, 4); // Acknowledgment Number
v_OctetString := v_OctetString & '5011'O; // 4bits HeaderLen/6bits Reserved/URG/ACK/PSH/RST/SYN/FIN
v_OctetString := v_OctetString & int2oct(256, 4); // How to set the windows size?
v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader & v_OctetString & v_ChecksumDummy & v_UrgPointer & p_TcpPayload); /* Note: the TCP checksum can also be '0000'O what means "no chcksum"; but that is not the usual case */
v_OctetString := v_OctetString & v_UrgPointer;
v_OctetString := v_OctetString & p_TcpPayload;
return v_OctetString;
}
function fl_IcmpDatagram_Create(UInt8_Type p_IcmpType,
O2_Type p_SequenceNumber,
octetstring p_Data)
return octetstring
{ /* @desc create ICMP datagram */
var O2_Type v_ChecksumDummy := '0000'O;
var O2_Type v_Id := '0001'O;
var octetstring v_OctetString := ''O;
v_OctetString := v_OctetString & int2oct(p_IcmpType, 1); // Type
v_OctetString := v_OctetString & '00'O; // Code
v_OctetString := v_OctetString & f_IpChecksum(v_OctetString & v_ChecksumDummy & v_Id & p_Data);
v_OctetString := v_OctetString & v_Id;
v_OctetString := v_OctetString & p_SequenceNumber;
v_OctetString := v_OctetString & p_Data;
return v_OctetString;
}
function f_IcmpEchoReply(integer p_SequenceNumber) return octetstring
{
var O2_Type v_IcmpSequenceNumber := int2oct(p_SequenceNumber, 2);
var octetstring v_IcmpPayload := ''O;
var integer i;
for (i:=0; i<p_SequenceNumber; i:=i+1) {
v_IcmpPayload := v_IcmpPayload & tsc_IP_AnyData;
}
return fl_IcmpDatagram_Create(tsc_ICMP_Type_EchoReply, v_IcmpSequenceNumber, v_IcmpPayload);
}
function f_IPv4IPv6_IcmpEchoReply(charstring p_SourceAddr,
charstring p_DestAddr := "",
integer p_SequenceNumber := 1) return octetstring
{
var charstring v_DestAddr:= p_DestAddr;
var octetstring v_Payload := f_IcmpEchoReply(p_SequenceNumber);
var UInt8_Type v_Protocol := tsc_IP_Protocol_ICMP;
var octetstring v_IpPacket;
if (v_DestAddr == "") { v_DestAddr := p_SourceAddr; }
if (f_IpAddressIsIPv4(p_SourceAddr)) {
v_IpPacket := f_IPv4Packet_Create('10'O & int2oct(p_SequenceNumber, 1), -, v_Protocol, p_SourceAddr, p_DestAddr, v_Payload);
} else {
v_IpPacket := f_IPv6Packet_Create(-, -, v_Protocol, p_SourceAddr, v_DestAddr, v_Payload);
}
return v_IpPacket;
}
function f_IPv4IPv6_AnyUdpPacket(charstring p_SourceAddr,
charstring p_DestAddr,
UInt16_Type p_SourcePort,
UInt16_Type p_DestPort) return octetstring
{
var UInt8_Type v_Protocol := tsc_IP_Protocol_UDP;
var octetstring v_Payload := tsc_IP_AnyData;
var octetstring v_IpPacket;
if (f_IpAddressIsIPv4(p_SourceAddr)) {
v_IpPacket := f_IPv4Packet_Create(-, -, v_Protocol, p_SourceAddr, p_DestAddr, f_IPv4UdpDatagram_Create(p_SourceAddr, p_DestAddr, p_SourcePort, p_DestPort, v_Payload));
} else {
v_IpPacket := f_IPv6Packet_Create(-, -, v_Protocol, p_SourceAddr, p_DestAddr, f_IPv6UdpDatagram_Create(p_SourceAddr, p_DestAddr, p_SourcePort, p_DestPort, v_Payload));
}
return v_IpPacket;
}
}

@ -1,8 +1,13 @@
module IPL4_example {
import from CommonIP all;
import from General_Types all;
import from IP_Types all;
import from UDP_Types all;
import from CommonDefs all;
import from TunDevice_PortType all;
import from TunDevice_Types all;
import from NetfilterConntrack_Functions all;
import from http_www_netfilter_org_xml_libnetfilter_conntrack all;
import from XSD all;
@ -27,6 +32,9 @@ module IPL4_example {
template (value) Tun_send tunmsg(octetstring p_data) := { msg := p_data };
template (value) Tun_recv tunrcv(octetstring p_data) := { msg := p_data };
const integer AF_INET := 2;
const integer AF_INET6 := 23;
import from UsefulTtcn3Types all;
type enumerated nfct_direction { DIR_ORIG, DIR_REPLY };
@ -48,15 +56,20 @@ module IPL4_example {
}
/* generate a flow_info using pre-defined default addresses + * incremented port */
private function flow_gen(integer port_delta, unsignedbyte l4_prot := tsc_IP_Protocol_UDP) return flow_info {
private function flow_gen(integer port_delta, unsignedbyte l3_prot := 4, unsignedbyte l4_prot := c_ip_proto_udp) return flow_info {
var flow_info flowi := {
l3_protocol := 2,
l3_protocol := c_ip_proto_ipv4,
src_ip := "1.1.1.200",
dst_ip := "2.2.2.200",
l4_protocol := l4_prot,
src_port := 1000 + port_delta,
dst_port := 2000 + port_delta
}
if (l3_prot == 6) {
flowi.l3_protocol := c_ip_proto_ipv6;
flowi.src_ip := "";
flowi.dst_ip := "";
}
return flowi
}
@ -65,8 +78,196 @@ module IPL4_example {
return float2int(r * (65535.0 - 2000.0));
}
private function get_random_id() return unsignedshort {
var float r := rnd();
return float2int(r * 65535.0);
}
template IPv4_header t_ipv4h_normal(LIN1 l4_proto, OCT4 saddr, OCT4 daddr) := {
ver := c_ip_version_ipv4,
hlen := 5,
tos := 0,
tlen := 0,
id := get_random_id(),
res := '0'B,
dfrag := '0'B,
mfrag := '0'B,
foffset := 0,
ttl := 128,
proto := l4_proto,
cksum := 0,
srcaddr := saddr,
dstaddr := daddr
}
template IPv6_header t_ipv6h_normal(LIN1 l4_proto, OCT16 saddr, OCT16 daddr, NonNegativeInteger plen) := {
ver := c_ip_version_ipv6,
trclass := 0,
flabel := 0,
plen := plen,
nexthead := l4_proto,
hlim := 128,
srcaddr := saddr,
dstaddr := daddr
}
/* generate a payload (L5+) */
private function flow_gen_payload(flow_info flowi, pkt_info pkti) return octetstring {
var integer random_offset := float2int(rnd()*256.0);
return substr(tsc_RandomPRBS, random_offset, 232);
}
/* generate a UDP pseudo-header */
private function flow_gen_udp_pseudo_hdr4(flow_info flowi, pkt_info pkti, integer plen) return UDP_pseudo_header {
var UDP_pseudo_header ret := {
ipv4 := {
zero := 0,
proto := c_ip_proto_udp,
plen := plen
}
};
if (pkti.direction == DIR_ORIG) {
ret.ipv4.srcaddr := f_IPv4_addr_enc(flowi.src_ip);
ret.ipv4.dstaddr := f_IPv4_addr_enc(flowi.dst_ip);
} else {
ret.ipv4.srcaddr := f_IPv4_addr_enc(flowi.dst_ip);
ret.ipv4.dstaddr := f_IPv4_addr_enc(flowi.src_ip);
}
return ret;
}
private function flow_gen_udp_pseudo_hdr6(flow_info flowi, pkt_info pkti, integer plen) return UDP_pseudo_header {
var UDP_pseudo_header ret := {
ipv6 := {
plen := plen,
zero := 0,
nextheader := c_ip_proto_udp
}
};
if (pkti.direction == DIR_ORIG) {
ret.ipv6.srcaddr := f_IPv6_addr_enc(flowi.src_ip);
ret.ipv6.dstaddr := f_IPv6_addr_enc(flowi.dst_ip);
} else {
ret.ipv6.srcaddr := f_IPv6_addr_enc(flowi.dst_ip);
ret.ipv6.dstaddr := f_IPv6_addr_enc(flowi.src_ip);
}
return ret;
}
private function flow_gen_udp_pseudo_hdr(flow_info flowi, pkt_info pkti, integer plen) return UDP_pseudo_header {
if (flowi.l3_protocol == c_ip_proto_ipv4) {
return flow_gen_udp_pseudo_hdr4(flowi, pkti, plen);
} else if (flowi.l3_protocol == c_ip_proto_ipv6) {
return flow_gen_udp_pseudo_hdr6(flowi, pkti, plen);
} else {
testcase.stop("unknown/unsupported L3 Protocol");
}
}
/* generate a L4 packet according to flowi + pkti */
private function flow_gen_l4_pkt(flow_info flowi, pkt_info pkti) return octetstring {
var octetstring payload := flow_gen_payload(flowi, pkti);
var octetstring data;
var OCT2 csum;
if (flowi.l4_protocol == c_ip_proto_udp) {
var UDP_packet udp := {
header := {
len := lengthof(payload),
cksum := 0
},
payload := payload
};
if (pkti.direction == DIR_ORIG) {
udp.header.srcport := flowi.src_port;
udp.header.dstport := flowi.dst_port;
} else {
udp.header.srcport := flowi.dst_port;
udp.header.dstport := flowi.src_port;
}
data := f_UDP_enc(udp);
csum := f_UDP_checksum(f_UDP_pseudo_header_enc(flow_gen_udp_pseudo_hdr(flowi, pkti, lengthof(data))) & data);
data[6] := csum[0];
data[7] := csum[1];
} else {
}
return data;
}
/* generate an IPv4 packet according to flowi + pkti */
function flow_gen_ipv4_pkt(flow_info flowi, pkt_info pkti) return octetstring {
var octetstring data;
var OCT2 csum;
var charstring src_ip, dst_ip;
if (pkti.direction == DIR_ORIG) {
src_ip := flowi.src_ip;
dst_ip := flowi.dst_ip;
} else {
src_ip := flowi.dst_ip;
dst_ip := flowi.src_ip;
}
var IPv4_packet ip := {
header := valueof(t_ipv4h_normal(flowi.l4_protocol,
f_IPv4_addr_enc(src_ip),
f_IPv4_addr_enc(dst_ip))),
ext_headers := omit,
payload := flow_gen_l4_pkt(flowi, pkti)
}
data := f_IPv4_enc(ip);
csum := f_IPv4_checksum(data);
data[10] := csum[0];
data[11] := csum[1];
return data;
}
/* generate an IPv6 packet according to flowi + pkti */
function flow_gen_ipv6_pkt(flow_info flowi, pkt_info pkti) return octetstring {
var octetstring payload := flow_gen_l4_pkt(flowi, pkti);
var octetstring data;
var OCT2 csum;
var charstring src_ip, dst_ip;
if (pkti.direction == DIR_ORIG) {
src_ip := flowi.src_ip;
dst_ip := flowi.dst_ip;
} else {
src_ip := flowi.dst_ip;
dst_ip := flowi.src_ip;
}
var IPv6_packet ip := {
header := valueof(t_ipv6h_normal(flowi.l4_protocol, f_IPv4_addr_enc(src_ip), f_IPv4_addr_enc(dst_ip), lengthof(payload))),
payload := payload
}
data := f_IPv6_enc(ip);
csum := f_IPv4_checksum(data);
data[10] := csum[0];
data[11] := csum[1];
return data;
}
/* generate a packet according to the input flow + pkt information */
function flow_gen_pkt(flow_info flowi, pkt_info pkti) return octetstring {
var octetstring data;
if (flowi.l3_protocol == c_ip_proto_ipv4) {
data := flow_gen_ipv4_pkt(flowi, pkti);
} else if (flowi.l3_protocol == c_ip_proto_ipv6) {
data := flow_gen_ipv6_pkt(flowi, pkti);
} else {
data := ''O;
}
if (pkti.trunc_len > 0 and pkti.trunc_len < lengthof(data)) {
data := substr(data, 0, pkti.trunc_len);
}
return data;
}
/* generate a packet according to the input flow + pkt information */
/*
function flow_gen_pkt_(flow_info flowi, pkt_info pkti) return octetstring {
var octetstring ret;
var unsignedshort src_port, dst_port;
var charstring src_ip, dst_ip;
@ -81,7 +282,7 @@ module IPL4_example {
dst_ip := flowi.src_ip
dst_port := flowi.src_port
}
if (flowi.l4_protocol == tsc_IP_Protocol_UDP) {
if (flowi.l4_protocol == c_ip_proto_udp) {
ret := f_IPv4IPv6_AnyUdpPacket(src_ip, dst_ip, src_port, dst_port);
}
if (pkti.trunc_len > 0 and pkti.trunc_len < lengthof(ret)) {
@ -89,6 +290,7 @@ module IPL4_example {
}
return ret
}
*/
/* reverse the L3 portion */
private function f_nfct_l3_reverse(template Layer3_type input) return template Layer3_type {
@ -120,13 +322,23 @@ module IPL4_example {
return output
}
function f_proto_to_af(integer proto) return integer {
if (proto == c_ip_proto_ipv4) {
return AF_INET;
} else if (proto == c_ip_proto_ipv6) {
return AF_INET6;
} else {
return 0;
}
}
/* construct a template that can be used to match nf-conntrack XML */
function f_nfct_templ_from_flow(flow_info flowi) return template Flow {
/* construct original tuple from flow */
var template Orig_repl_group orig := {
layer3 := {
protoname := *,
protonum := int2str(flowi.l3_protocol),
protonum := int2str(f_proto_to_af(flowi.l3_protocol)),
src := flowi.src_ip,
dst := flowi.dst_ip
},
@ -196,6 +408,7 @@ module IPL4_example {
/* get nf_conntrack from kernel for given flow and match against template */
function get_nfct_and_match(flow_info flowi, template Flow t_flow) return boolean {
var Flow ct := f_get_conntrack(flowi);
log("conntrack found: ", ct);
var boolean ret := match(ct, t_flow);
if (not ret) {
setverdict(fail);

@ -1,6 +1,6 @@
# This Makefile was generated by the Makefile Generator
# of the TTCN-3 Test Executor version CRL 113 200/6 R2A
# for Harald Welte (laforge@nataraja) on Thu Jul 6 23:53:14 2017
# for Harald Welte (laforge@nataraja) on Fri Jul 7 19:19:20 2017
# Copyright (c) 2000-2017 Ericsson Telecom AB
@ -67,27 +67,27 @@ ARCHIVE_DIR = backup
#
# TTCN-3 modules of this project:
TTCN3_MODULES = IPL4_example.ttcn CommonDefs.ttcn CommonIP.ttcn NetfilterConntrack_Functions.ttcn Parameters.ttcn TunDevice_PortType.ttcn TunDevice_Types.ttcn UsefulTtcn3Types.ttcn XSD.ttcn http_www_netfilter_org_xml_libnetfilter_conntrack.ttcn
TTCN3_MODULES = IPL4_example.ttcn CommonDefs.ttcn General_Types.ttcn IP_Types.ttcn NetfilterConntrack_Functions.ttcn TCCConversion_Functions.ttcn TCCInterface_Functions.ttcn TCP_Types.ttcn TunDevice_PortType.ttcn TunDevice_Types.ttcn UDP_Types.ttcn UsefulTtcn3Types.ttcn XSD.ttcn http_www_netfilter_org_xml_libnetfilter_conntrack.ttcn
# ASN.1 modules of this project:
ASN1_MODULES =
# C++ source & header files generated from the TTCN-3 & ASN.1 modules of
# this project:
GENERATED_SOURCES = IPL4_example.cc CommonDefs.cc CommonIP.cc NetfilterConntrack_Functions.cc Parameters.cc TunDevice_PortType.cc TunDevice_Types.cc UsefulTtcn3Types.cc XSD.cc http_www_netfilter_org_xml_libnetfilter_conntrack.cc
GENERATED_HEADERS = IPL4_example.hh CommonDefs.hh CommonIP.hh NetfilterConntrack_Functions.hh Parameters.hh TunDevice_PortType.hh TunDevice_Types.hh UsefulTtcn3Types.hh XSD.hh http_www_netfilter_org_xml_libnetfilter_conntrack.hh
GENERATED_SOURCES = IPL4_example.cc CommonDefs.cc General_Types.cc IP_Types.cc NetfilterConntrack_Functions.cc TCCConversion_Functions.cc TCCInterface_Functions.cc TCP_Types.cc TunDevice_PortType.cc TunDevice_Types.cc UDP_Types.cc UsefulTtcn3Types.cc XSD.cc http_www_netfilter_org_xml_libnetfilter_conntrack.cc
GENERATED_HEADERS = IPL4_example.hh CommonDefs.hh General_Types.hh IP_Types.hh NetfilterConntrack_Functions.hh TCCConversion_Functions.hh TCCInterface_Functions.hh TCP_Types.hh TunDevice_PortType.hh TunDevice_Types.hh UDP_Types.hh UsefulTtcn3Types.hh XSD.hh http_www_netfilter_org_xml_libnetfilter_conntrack.hh
# C/C++ Source & header files of Test Ports, external functions and
# other modules:
USER_SOURCES = NetfilterConntrack.cc TunDevice_PT.cc
USER_SOURCES = IP_EncDec.cc NetfilterConntrack.cc TCCConversion.cc TCCInterface.cc TCP_EncDec.cc TunDevice_PT.cc UDP_EncDec.cc
USER_HEADERS = TunDevice_PT.hh
# Object files of this project that are needed for the executable test suite:
OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS)
GENERATED_OBJECTS = IPL4_example.o CommonDefs.o CommonIP.o NetfilterConntrack_Functions.o Parameters.o TunDevice_PortType.o TunDevice_Types.o UsefulTtcn3Types.o XSD.o http_www_netfilter_org_xml_libnetfilter_conntrack.o
GENERATED_OBJECTS = IPL4_example.o CommonDefs.o General_Types.o IP_Types.o NetfilterConntrack_Functions.o TCCConversion_Functions.o TCCInterface_Functions.o TCP_Types.o TunDevice_PortType.o TunDevice_Types.o UDP_Types.o UsefulTtcn3Types.o XSD.o http_www_netfilter_org_xml_libnetfilter_conntrack.o
USER_OBJECTS = NetfilterConntrack.o TunDevice_PT.o
USER_OBJECTS = IP_EncDec.o NetfilterConntrack.o TCCConversion.o TCCInterface.o TCP_EncDec.o TunDevice_PT.o UDP_EncDec.o
# Other files of the project (Makefile, configuration files, etc.)
# that will be added to the archived source files:

@ -1,723 +0,0 @@
/******************************************************************************/
// @copyright Copyright Notification
// No part may be reproduced except as authorized by written permission.
// The copyright and the foregoing restriction extend to reproduction in all media.
// Trademark 2012, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC).
// All rights reserved.
// @version: 36.523-3v10.1.0
/******************************************************************************/
/******************************************************************************/
// AUTOMATICLLY GENERATED MODUEL - DO NOT MODIFY
// $Date:
// $Author:
// $Rev:
/******************************************************************************/
module Parameters {
import from CommonDefs all;
//import from NAS_CommonTypeDefs all;
//****************************************************************************
// PIXIT Parameters
//----------------------------------------------------------------------------
modulepar octetstring px_AccessPointName; // @desc Access Point Name
modulepar EUTRA_ATTACH_TESTED_Type px_AttachTypeTested := EPS_ATTACH_ONLY; // @desc Attach Type to be tested, if UE supports both pc_Attach and pc_Combined_Attach
// Supported values: EPS_ATTACH_ONLY, COMBINED_ATTACH
modulepar B16_Type px_AuthAMF; // @desc Authentication Management Field (16 bits). The value shall be different from '1111 1111 1111 111'B (AMFresynch).
// Default value: no default value can be proposed
// Reference to other Spec: 34.123-3, Table B.1
modulepar B128_Type px_AuthK := oct2bit('000102030405060708090A0B0C0D0E0F'O);
// @desc Authentication Key
// Reference to other Spec: 34.123-3, Table B.1
modulepar O43_Type px_ETWS_DigitalSignature; // @desc ETWS Digital Signature
modulepar charstring px_EmergencyCallNumber := "112"; // @desc Emergency Number used by UE to initiate an emergency call
// Reference to other Spec: 34.123-3, Table B.1.2
// modulepar EmergencyLocalNumberList px_EmergencyLocalNumberList := {"301", "302", "303", "304", "305", "306", "307", "308", "309", "310"};
// @desc This list must not contain any emergency numbers already stored in the USIM or UE
modulepar hexstring px_IMEI_Def; // @desc Default IMEI value. No default can be proposed as this is a manufacturer defined value
// Reference to other Spec: 34.123-3, Table B.1
modulepar hexstring px_IMSI_Def := '001010123456063'H;
// @desc Default IMSI
// Reference to other Spec: 34.123-3, Table B.1
modulepar charstring px_IPv4_Address1_NW; // @desc IPv4 Gateway Address in PDN1
modulepar charstring px_IPv4_Address1_UE; // @desc IPv4 Address connected to PDN1
modulepar charstring px_IPv4_Address2_NW; // @desc IPv4 Gateway Address in PDN2
modulepar charstring px_IPv4_Address2_UE; // @desc IPv4 Address connected to PDN2
modulepar charstring px_IPv4_Address_HomeAgent; // @desc IPv4 Home Address Agent
modulepar charstring px_IPv6_Address1_NW; // @desc IPv6 Gateway Address in PDN1
modulepar charstring px_IPv6_Address1_UE; // @desc IPv6 Address in PDN1
modulepar charstring px_IPv6_Address2_NW; // @desc IPv6 Gateway Address in PDN2
modulepar charstring px_IPv6_Address2_UE; // @desc IPv6 Address in PDN2
modulepar charstring px_IPv6_Address_HomeAgent; // @desc IPv6 Home Address Agent
modulepar octetstring px_PTMSI_Def := 'C2345678'O; // @desc Default PTMSI
// Reference to other Spec: 34.123-3, Table B.1
modulepar octetstring px_PTMSI_SigDef := 'AB1234'O; // @desc Default PTMSI signature (3 octets, 3GPP 24.008 / 10.5.5.8).
// Reference to other Spec: 34.123-3, Table B.1
modulepar charstring px_PWS_CB_DataPage1; // @desc ETWS or CMAS Page 1 warning data message
modulepar charstring px_PWS_CB_DataPage2; // @desc ETWS or CMAS Page 2 warning data message
modulepar charstring px_PWS_CB_DataPage3; // @desc CMAS or ETWS Page 3 warning data message
modulepar charstring px_PWS_CB_DataPage4; // @desc CMAS or ETWS Page 4 warning data message
modulepar RATComb_Tested_Type px_RATComb_Tested := EUTRA_UTRA; // @desc This parameter represents the network RAT capability/preference and indicates which, if any is supported, RAT combination is to be tested
// Supported values: EUTRA_UTRA, EUTRA_GERAN, EUTRA_Only
modulepar boolean px_SMS_ChkMsgReceived := true; // @desc Whether the operator can check an MT Short Message received
modulepar integer px_SMS_IndexOffset := 0; // @desc Memory location index at UE for SMS storage, used in +CMSS command
// Reference to other Spec: 34.123-3, Table B.1.2
modulepar charstring px_SMS_MsgFrmt := "1"; // @desc UE which only supports PDU mode will be configured for text mode @sic R5s110750 sic@
modulepar charstring px_SMS_PrefMem1 := "SM"; // @desc SMS Preferred Memory 1 <mem1> of TS 27.005 [31], clause 3.2.2
// Reference to other Spec: 34.123-3, Table B.1.2
modulepar charstring px_SMS_PrefMem2 := "SM"; // @desc SMS Preferred Memory 2 <mem2> of TS 27.005 [31], clause 3.2.2
// Reference to other Spec: 34.123-3, Table B.1.2
modulepar charstring px_SMS_PrefMem3 := "MT"; // @desc SMS Preferred Memory 3 <mem3> of TS 27.005 [31], clause 3.2.2
// Reference to other Spec: 34.123-3, Table B.1.2
modulepar charstring px_SMS_Service := "0"; // @desc SMS Service <service> of TS 27.005 [31], clause 3.2.1
// Reference to other Spec: 34.123-3, Table B.1.2
modulepar SinglePLMN_TestedType px_SinglePLMN_Tested := MultiPLMN; // @desc This parameter represents the network capability/preference to support multi PLMNs on the same test Band and indicates the preference of multi PLMNs or single PLMN test environment
// Supported values: SinglePLMN, MultiPLMN, MultiPLMNinPrimaryBand, MultiPLMNinSecondaryBand
modulepar octetstring px_TMSI_Def := '12345678'O; // @desc Default TMSI
// Reference to other Spec: 34.123-3, Table B.1
/*
modulepar CS_PS_MODE px_UE_CS_PS_UsageSetting_Tested := VOICE_CENTRIC;
// @desc specifies which CS/PS mode is under test @sic R5s120274 sic@
// Supported values: VOICE_CENTRIC, DATA_CENTRIC
modulepar PS_MODE px_UE_PS_UsageSetting_Tested := VOICE_CENTRIC; // @desc specifies which PS mode is under test @sic R5s120274 sic@
// Supported values: VOICE_CENTRIC, DATA_CENTRIC
*/
modulepar UTRAN_FDD_TDD_Type px_UTRAN_ModeUnderTest := UTRAN_FDD; // @desc specifies which radio access technology is being tested in UTRAN
// Supported values: UTRAN_FDD, UTRAN_TDD
modulepar B128_Type px_eAuthRAND := oct2bit('A3DE0C6D363E30C364A4078F1BF8D577'O);
// @desc Random Challenge
//modulepar NAS_Mcc px_eJapanMCC_Band6 := '442'H; // @desc Japan MCC code to be used for Band 6. The same value will be used for E-UTRAN and Inter-RAT cells. Type is different to that defined in 34.123-3.
//****************************************************************************
// PICS Parameters
//----------------------------------------------------------------------------
modulepar boolean pc_1xCSfallback := false; // @desc Support of 1xCS fallback
// Reference: 36.523-2, A.4.2.1.1-1/3
modulepar boolean pc_1xRTT := false; // @desc UE supports CDMA2000 1xRTT band class
// Reference: 36.523-2, A.4.1-1/4
modulepar boolean pc_Allowed_CSG_list := false; // @desc Support of Allowed CSG list
// Reference: 36.523-2 A.4.4-1/2
modulepar boolean pc_Attach := false; // @desc Support EPS attach (with or without pre-configuration)
// Reference: 36.523-2 A.4.4-2/1
modulepar boolean pc_Auto_Attach_after_TAU_Reject := false; // @desc Support of automatic re-activation of the EPS bearer(s) after the TAU Reject
// Reference: 36.523-2 A.4.4-1/xx
modulepar boolean pc_Automatic_EPS_Re_Attach := false; // @desc Support of automatic re-activation of the EPS bearer(s)
// Reference: 36.523-2 A.4.4-1/xx
modulepar boolean pc_Automatic_Re_Attach := false; // @desc Support of automatic re-activation of the EPS bearer(s) during Network Initiated Detach with detach type set to re-attach required
// Reference: 36.523-2 A.4.4-1/27
modulepar boolean pc_CMAS_Message := false; // @desc Support of CMAS message
// Reference: 36.523-2 ??/58
modulepar boolean pc_CS := false; // @desc UE supports CS domain services
// Reference: 34.123-2 A.3/1
modulepar boolean pc_CS_Em_Call_in_1xRTT := false; // @desc Support for establishing the emergency call using the CS domain in 1xRTT
// Reference: 36.523-2 A.4.4-1/37
modulepar boolean pc_CS_Em_Call_in_GERAN := false; // @desc Support for establishing the emergency call using the CS domain in GERAN
// Reference: 36.523-2 A.4.4-1/36
modulepar boolean pc_CS_Em_Call_in_UTRA := false; // @desc Support for establishing the emergency call using the CS domain in UTRA
// Reference: 36.523-2 A.4.4-1/35
modulepar boolean pc_CS_Fallback := false; // @desc The UE supports CS fallback for voice calls. If true, pc_CS and at least one of pc_FDD, pc_TDD_HCR, pc_TDD_LCR, pc_TDD_VHCR or pc_UMTS_GSM is also true.
// Reference: 36.523-2, A.4.2.1.1-1/1
modulepar boolean pc_CS_PS_data_centric := false; // @desc Support of CS/PS mode 2
// Reference: 36.523-2 A.4.4-2/5
modulepar boolean pc_CS_PS_voice_centric := false; // @desc Support of configuring the UE to voice centric
// Reference: 36.523-2 A.4.4-2/4
modulepar boolean pc_Combined_Attach := false; // @desc Support combined EPS/IMSI attach (with or without pre-configuration)
// Reference: 36.523-2 A.4.4-2/2
modulepar boolean pc_DSMIPv6 := false; // @desc Support of Mobility management based on Dual-Stack Mobile IPv6
// Reference: 36.523-2 A.4.4-1/6
modulepar boolean pc_EDTM := false; // @desc Support for EDTM
// Reference: 36.523-2 A.4.4-1/38
modulepar boolean pc_EMM_Information := false; // @desc Support of EMM Information message
// Reference: 36.523-2 A.4.4-1/9
modulepar boolean pc_EPS_Disable := false; // @desc Support of disabling of EPS capability
// Reference: 36.523-2 A.4.4-1/26
modulepar boolean pc_ESM_MO_Bearer_Allocation := false; // @desc Support of ESM UE requested bearer resource allocation procedure
// Reference: 36.523-2 A.4.4-1/10
modulepar boolean pc_ESM_MO_Bearer_Modification := false; // @desc Support of ESM UE requested bearer resource modification procedure
// Reference: 36.523-2 A.4.4-1/11
modulepar boolean pc_ESM_UE_Modification_NW_TFT := false; // @desc Support for UE requested modification of network allocated TFTs
// Reference: 36.523-2 A.4.4-1/zz
modulepar boolean pc_ETWS_message := false; // @desc Support of ETWS message
// Reference: 36.523-2 A.4.4-1/20
modulepar boolean pc_ETWS_message_security := false; // @desc Support of ETWS message with security
// Reference: 36.523-2 A.4.4-1/24
modulepar boolean pc_E_UTRAN_2_GERAN_PSHO := false; // @desc Support for inter-RAT PS handover from E_UTRAN to GERAN
// Reference: 36.523-2 A.4.4-1/xx
modulepar boolean pc_Enhanced_1xCSfallback := false; // @desc Support of Enhanced 1xCS fallback
// Reference: 36.523-2, A.4.2.1.1-1/x
modulepar boolean pc_FDD := true; // @desc UE supports UTRA band as defined in TS 25.101
// Reference: 34.123-2 A.1/1
modulepar boolean pc_FeatrGrp_1 := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1/1
modulepar boolean pc_FeatrGrp_10 := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change)
// Reference: 36.523-2 A.4.5-1/10
modulepar boolean pc_FeatrGrp_10_F := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change)
// Reference: 36.523-2 A.4.5-1a/10
modulepar boolean pc_FeatrGrp_10_T := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change)
// Reference: 36.523-2 A.4.5-1b/10
modulepar boolean pc_FeatrGrp_11 := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover
// Reference: 36.523-2 A.4.5-1/11
modulepar boolean pc_FeatrGrp_11_F := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover
// Reference: 36.523-2 A.4.5-1a/11
modulepar boolean pc_FeatrGrp_11_T := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover
// Reference: 36.523-2 A.4.5-1b/11
modulepar boolean pc_FeatrGrp_12 := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover
// Reference: 36.523-2 A.4.5-1/12
modulepar boolean pc_FeatrGrp_12_F := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover
// Reference: 36.523-2 A.4.5-1a/12
modulepar boolean pc_FeatrGrp_12_T := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover
// Reference: 36.523-2 A.4.5-1b/12
modulepar boolean pc_FeatrGrp_13 := false; // @desc Support of Inter-frequency handover (within FDD or TDD)
// Reference: 36.523-2 A.4.5-1/13
modulepar boolean pc_FeatrGrp_13_F := false; // @desc Support of Inter-frequency handover (within FDD or TDD)
// Reference: 36.523-2 A.4.5-1a/13
modulepar boolean pc_FeatrGrp_13_T := false; // @desc Support of Inter-frequency handover (within FDD or TDD)
// Reference: 36.523-2 A.4.5-1b/13
modulepar boolean pc_FeatrGrp_14 := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2
// Reference: 36.523-2 A.4.5-1/14
modulepar boolean pc_FeatrGrp_14_F := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2
// Reference: 36.523-2 A.4.5-1a/14
modulepar boolean pc_FeatrGrp_14_T := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2
// Reference: 36.523-2 A.4.5-1b/14
modulepar boolean pc_FeatrGrp_15 := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold
// Reference: 36.523-2 A.4.5-1/15
modulepar boolean pc_FeatrGrp_15_F := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold
// Reference: 36.523-2 A.4.5-1a/15
modulepar boolean pc_FeatrGrp_15_T := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold
// Reference: 36.523-2 A.4.5-1b/15
modulepar boolean pc_FeatrGrp_16 := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements
// Reference: 36.523-2 A.4.5-1/16
modulepar boolean pc_FeatrGrp_16_F := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements
// Reference: 36.523-2 A.4.5-1a/16
modulepar boolean pc_FeatrGrp_16_T := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements
// Reference: 36.523-2 A.4.5-1b/16
modulepar boolean pc_FeatrGrp_17 := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events
// Reference: 36.523-2 A.4.5-1/17
modulepar boolean pc_FeatrGrp_17_F := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events
// Reference: 36.523-2 A.4.5-1a/17
modulepar boolean pc_FeatrGrp_17_T := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events
// Reference: 36.523-2 A.4.5-1b/17
modulepar boolean pc_FeatrGrp_18 := false; // @desc Support of ANR related inter-frequency measurement reporting events
// Reference: 36.523-2 A.4.5-1/18
modulepar boolean pc_FeatrGrp_18_F := false; // @desc Support of ANR related inter-frequency measurement reporting events
// Reference: 36.523-2 A.4.5-1a/18
modulepar boolean pc_FeatrGrp_18_T := false; // @desc Support of ANR related inter-frequency measurement reporting events
// Reference: 36.523-2 A.4.5-1b/18
modulepar boolean pc_FeatrGrp_19 := false; // @desc Support of ANR related inter-RAT measurement reporting events
// Reference: 36.523-2 A.4.5-1/19
modulepar boolean pc_FeatrGrp_19_F := false; // @desc Support of ANR related inter-RAT measurement reporting events
// Reference: 36.523-2 A.4.5-1a/19
modulepar boolean pc_FeatrGrp_19_T := false; // @desc Support of ANR related inter-RAT measurement reporting events
// Reference: 36.523-2 A.4.5-1b/19
modulepar boolean pc_FeatrGrp_1_F := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1a/1
modulepar boolean pc_FeatrGrp_1_T := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1b/1
modulepar boolean pc_FeatrGrp_2 := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1/2
modulepar boolean pc_FeatrGrp_20 := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB
// Reference: 36.523-2 A.4.5-1/20
modulepar boolean pc_FeatrGrp_20_F := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB
// Reference: 36.523-2 A.4.5-1a/20
modulepar boolean pc_FeatrGrp_20_T := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB
// Reference: 36.523-2 A.4.5-1b/20
modulepar boolean pc_FeatrGrp_21 := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1
// Reference: 36.523-2 A.4.5-1/21
modulepar boolean pc_FeatrGrp_21_F := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1
// Reference: 36.523-2 A.4.5-1a/21
modulepar boolean pc_FeatrGrp_21_T := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1
// Reference: 36.523-2 A.4.5-1b/21
modulepar boolean pc_FeatrGrp_22 := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1/22
modulepar boolean pc_FeatrGrp_22_F := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1a/22
modulepar boolean pc_FeatrGrp_22_T := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1b/22
modulepar boolean pc_FeatrGrp_23 := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1/23
modulepar boolean pc_FeatrGrp_23_F := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1a/23
modulepar boolean pc_FeatrGrp_23_T := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1b/23
modulepar boolean pc_FeatrGrp_24 := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1/24
modulepar boolean pc_FeatrGrp_24_F := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1a/24
modulepar boolean pc_FeatrGrp_24_T := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1b/24
modulepar boolean pc_FeatrGrp_25 := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1/25
modulepar boolean pc_FeatrGrp_25_F := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1a/25
modulepar boolean pc_FeatrGrp_25_T := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1b/25
modulepar boolean pc_FeatrGrp_26 := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1/26
modulepar boolean pc_FeatrGrp_26_F := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1a/26
modulepar boolean pc_FeatrGrp_26_T := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode
// Reference: 36.523-2 A.4.5-1b/26
modulepar boolean pc_FeatrGrp_27 := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover
// Reference: 36.523-2 A.4.5-1/27
modulepar boolean pc_FeatrGrp_27_F := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover
// Reference: 36.523-2 A.4.5-1a/27
modulepar boolean pc_FeatrGrp_27_T := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover
// Reference: 36.523-2 A.4.5-1b/27
modulepar boolean pc_FeatrGrp_28 := false; // @desc Support of TTI bundling
// Reference: 36.523-2 A.4.5-1/28
modulepar boolean pc_FeatrGrp_28_F := false; // @desc Support of TTI bundling
// Reference: 36.523-2 A.4.5-1a/28
modulepar boolean pc_FeatrGrp_28_T := false; // @desc Support of TTI bundling
// Reference: 36.523-2 A.4.5-1b/28
modulepar boolean pc_FeatrGrp_29 := false; // @desc Support of Semi-Persistent Scheduling
// Reference: 36.523-2 A.4.5-1/29
modulepar boolean pc_FeatrGrp_29_F := false; // @desc Support of Semi-Persistent Scheduling
// Reference: 36.523-2 A.4.5-1a/29
modulepar boolean pc_FeatrGrp_29_T := false; // @desc Support of Semi-Persistent Scheduling
// Reference: 36.523-2 A.4.5-1b/29
modulepar boolean pc_FeatrGrp_2_F := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1a/2
modulepar boolean pc_FeatrGrp_2_T := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1b/2
modulepar boolean pc_FeatrGrp_3 := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN
// Reference: 36.523-2 A.4.5-1/3
modulepar boolean pc_FeatrGrp_30 := false; // @desc Support of Handover between FDD and TDD
// Reference: 36.523-2 A.4.5-1/30
modulepar boolean pc_FeatrGrp_30_F := false; // @desc Support of Handover between FDD and TDD
// Reference: 36.523-2 A.4.5-1a/30
modulepar boolean pc_FeatrGrp_30_T := false; // @desc Support of Handover between FDD and TDD
// Reference: 36.523-2 A.4.5-1b/30
modulepar boolean pc_FeatrGrp_33 := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1d/1
modulepar boolean pc_FeatrGrp_33_F := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1d/1
modulepar boolean pc_FeatrGrp_33_T := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1e/1
modulepar boolean pc_FeatrGrp_34 := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1d/2
modulepar boolean pc_FeatrGrp_34_F := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1d/2
modulepar boolean pc_FeatrGrp_34_T := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1e/2
modulepar boolean pc_FeatrGrp_35 := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1d/3
modulepar boolean pc_FeatrGrp_35_F := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1d/3
modulepar boolean pc_FeatrGrp_35_T := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1e/3
modulepar boolean pc_FeatrGrp_36 := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1d/4
modulepar boolean pc_FeatrGrp_36_F := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1d/4
modulepar boolean pc_FeatrGrp_36_T := false; // @desc ########################################################################################################################################
// Reference: 36.523-2 A.4.5-1e/4
modulepar boolean pc_FeatrGrp_3_F := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN
// Reference: 36.523-2 A.4.5-1a/3
modulepar boolean pc_FeatrGrp_3_T := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN
// Reference: 36.523-2 A.4.5-1b/3
modulepar boolean pc_FeatrGrp_4 := false; // @desc Support of Short DRX cycle
// Reference: 36.523-2 A.4.5-1/4
modulepar boolean pc_FeatrGrp_4_F := false; // @desc Support of Short DRX cycle
// Reference: 36.523-2 A.4.5-1a/4
modulepar boolean pc_FeatrGrp_4_T := false; // @desc Support of Short DRX cycle
// Reference: 36.523-2 A.4.5-1b/4
modulepar boolean pc_FeatrGrp_5 := false; // @desc Support of Long DRX cycle, DRX command MAC control element
// Reference: 36.523-2 A.4.5-1/5
modulepar boolean pc_FeatrGrp_5_F := false; // @desc Support of Long DRX cycle, DRX command MAC control element
// Reference: 36.523-2 A.4.5-1a/5
modulepar boolean pc_FeatrGrp_5_T := false; // @desc Support of Long DRX cycle, DRX command MAC control element
// Reference: 36.523-2 A.4.5-1b/5
modulepar boolean pc_FeatrGrp_6 := false; // @desc Support of Piroritized bit rate
// Reference: 36.523-2 A.4.5-1/6
modulepar boolean pc_FeatrGrp_6_F := false; // @desc Support of Piroritized bit rate
// Reference: 36.523-2 A.4.5-1a/6
modulepar boolean pc_FeatrGrp_6_T := false; // @desc Support of Piroritized bit rate
// Reference: 36.523-2 A.4.5-1b/6
modulepar boolean pc_FeatrGrp_7 := false; // @desc Support of RLC UM
// Reference: 36.523-2 A.4.5-1/7
modulepar boolean pc_FeatrGrp_7_F := false; // @desc Support of RLC UM
// Reference: 36.523-2 A.4.5-1a/7
modulepar boolean pc_FeatrGrp_7_T := false; // @desc Support of RLC UM
// Reference: 36.523-2 A.4.5-1b/7
modulepar boolean pc_FeatrGrp_8 := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover
// Reference: 36.523-2 A.4.5-1/8
modulepar boolean pc_FeatrGrp_8_F := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover
// Reference: 36.523-2 A.4.5-1a/8
modulepar boolean pc_FeatrGrp_8_T := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover
// Reference: 36.523-2 A.4.5-1b/8
modulepar boolean pc_FeatrGrp_9 := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover
// Reference: 36.523-2 A.4.5-1/9
modulepar boolean pc_FeatrGrp_9_F := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover
// Reference: 36.523-2 A.4.5-1a/9
modulepar boolean pc_FeatrGrp_9_T := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover
// Reference: 36.523-2 A.4.5-1b/9
modulepar boolean pc_FullNameNetwork := false; // @desc Support of storage of the network full name
// Reference: 36.523-2 A.4.4-1/12
modulepar boolean pc_GERAN := false; // @desc UE Supports GSM and/or GPRS
// Reference: 36.523-2 A.4.1-1/6
modulepar boolean pc_GERAN_2_E_UTRAN_PSHO := false; // @desc Support of GERAN to E-UTRAN PS Handover
// Reference: 36.523-2 A.4.4-1/29
modulepar boolean pc_GERAN_2_E_UTRAN_meas
:= false; // @desc Supports Neighbour Cell measurements and Network controlled & autonomous cell reselection to E-UTRAN
// Reference: 36.523-2 A.4.4-1/21
modulepar boolean pc_GERAN_2_E_UTRAN_measreporting_CCN := false; // @desc Supports CCN towards E-UTRAN, E-UTRAN Neighbour cell measurement reporting and Network controlled cell reselection to E-UTRAN
// Reference: 36.523-2 A.4.4-1/39
modulepar boolean pc_HO_from_UTRA_to_eFDD := false; // @desc Support of Inter-RAT PS handover to E-UTRA from UTRA (FDD)
// Reference: 36.523-2 A.4.4-1/8
modulepar boolean pc_HO_from_UTRA_to_eTDD := false; // @desc Support of Inter-RAT PS handover to E-UTRA from UTRA (TDD)
// Reference: 36.523-2 A.4.4-1/aa
modulepar boolean pc_HRPD := false; // @desc UE supports CDMA2000 HRPD band class
// Reference: 36.523-2, A.4.1-1/3
modulepar boolean pc_IMS := false; // @desc Support of IMS
// Reference: 36.523-2 A.4.4-1/25
modulepar boolean pc_IMSI_Detach := false; // @desc Support of detach for non-EPS services
// Reference: 36.523-2 A.4.4-1/34
modulepar boolean pc_IMS_emergency_call := false; // @desc Support of MS emergency call
// Reference: 36.523-2, A.4.2.1.1-1/4
modulepar boolean pc_IPv4 := true; // @desc UE supports IPv4 (used IMS PICS as currently not defined in LTE)
// Reference: 34.229-2 A.7/1
modulepar boolean pc_IPv6 := false; // @desc UE supports IPv6 (used IMS PICS as currently not defined in LTE)
// Reference: 34.229-2 A.7/2
modulepar boolean pc_ISR := false; // @desc Support of ISR
// Reference: 36.523-2 A.4.4-1/5
modulepar boolean pc_ImmConnect := false; // @desc Immediate connection supported for all circuit switched basic services
// Reference: 34.123 A.4.4/6
modulepar boolean pc_LocalTimeZone := false; // @desc Support of storage of the local time zone
// Reference: 36.523-2 A.4.4-1/14
modulepar boolean pc_Manual_CSG_Selection := false; // @desc Support of Manual CSG selection
// Reference: 36.523-2 A.4.4-1/49
modulepar boolean pc_Multiple_PDN := false; // @desc Support for multiple PDN connections
// Reference: 36.523-2 A.4.4-1/29
modulepar boolean pc_PS := true; // @desc Packet Switched
// Reference: 34.123-2 A.3/2
modulepar boolean pc_PS_data_centric := false; // @desc Support of configuring the UE to PS data centric
// Reference: 36.523-2 A.4.4-2/8
modulepar boolean pc_PS_voice_centric := false; // @desc Support of configuring the UE to PS voice centric
// Reference: 36.523-2 A.4.4-2/7
modulepar boolean pc_PWS_UpperLayer := false; // @desc Presence of PWS upper layer for functions like duplicate definition
// Reference: 36.523-2 A.4.4-1/6x
modulepar boolean pc_ROHC_profile0x0001 := false; // @desc Support for ROHC profile0x0001
// Reference: 36.523-2 A.4.4-1/aa
modulepar boolean pc_ROHC_profile0x0002 := false; // @desc Support for ROHC profile0x0002
// Reference: 36.523-2 A.4.4-1/bb
modulepar boolean pc_ROHC_profile0x0003 := false; // @desc Support for ROHC profile0x0003
// Reference: 36.523-2 A.4.4-1/cc
modulepar boolean pc_ROHC_profile0x0004 := false; // @desc Support for ROHC profile0x0004
// Reference: 36.523-2 A.4.4-1/dd
modulepar boolean pc_ROHC_profile0x0006 := false; // @desc Support for ROHC profile0x0006
// Reference: 36.523-2 A.4.4-1/ee
modulepar boolean pc_ROHC_profile0x0101 := false; // @desc Support for ROHC profile0x0101
// Reference: 36.523-2 A.4.4-1/ff
modulepar boolean pc_ROHC_profile0x0102 := false; // @desc Support for ROHC profile0x0102
// Reference: 36.523-2 A.4.4-1/gg
modulepar boolean pc_ROHC_profile0x0103 := false; // @desc Support for ROHC profile0x0103
// Reference: 36.523-2 A.4.4-1/hh
modulepar boolean pc_ROHC_profile0x0104 := false; // @desc Support for ROHC profile0x0104
// Reference: 36.523-2 A.4.4-1/ii
modulepar boolean pc_Re_Attach_AfterDetachColl := false; // @desc Support of automatic re-activation of the EPS bearers during network initiated detach, even though UE has initiated a detach procedure with detach type set to EPS detach or combined EPS/IMSI detach
// Reference: 36.523-2 A.4.4-1/55
modulepar boolean pc_RequestIPv4HAAddress_DuringAttach := false; // @desc Support for being configured to request the IPv4 address of the Home Agent during Attach procedure
// Reference: 36.523-2 A.4.4-1/23
modulepar boolean pc_RequestIPv6HAAddress_DuringAttach := false; // @desc Support for being configured to request the IPv6 address of the Home Agent during Attach procedure
// Reference: 36.523-2 A.4.4-1/22
modulepar boolean pc_SMS_SGs := false; // @desc The UE supports SMS over SGs and is configured for SMS over SGs. If true, at least one of pc_SMS_SGs_MT and pc_SMS_SGs_MO is true.
//
// Reference: 36.523-2, A.4.2.1.1-1/2
modulepar boolean pc_SMS_SGs_MO := false; // @desc Support of Short Message Service (SMS) MO over SGs
// Reference: 36.523-2 A.4.4-1/4
modulepar boolean pc_SMS_SGs_MT := false; // @desc Support of Short Message Service (SMS) MT over SGs
// Reference: 36.523-2 A.4.4-1/3
modulepar boolean pc_SRVCC_GERAN_UTRAN := false; // @desc Support for SRVCC from E-UTRAN to GERAN/UTRAN
// Reference: 36.523-2 A.4.4-1/32
modulepar boolean pc_Semi_Persistence_Scheduling := false; // @desc Support of semi persistance scheduling
// Reference: 36.523-2 A.4.4-1/50
modulepar boolean pc_ShortNameNetwork := false; // @desc Support of storage of the network short name
// Reference: 36.523-2 A.4.4-1/13
modulepar boolean pc_Speech := false; // @desc UE supports Speech
// Reference: 34.123-2 A.2/1
modulepar boolean pc_Squal_based_CellReselection_to_E_UTRAN_from_UTRAN := false;
// @desc Support of Squal based cell reselection to E-UTRAN from UTRAN
// Reference: 36.523-2 A.4.4-1/yy
modulepar boolean pc_Squal_based_CellReselection_to_UTRAN_from_E_UTRAN := false;
// @desc Support of Squal based cell reselection to UTRAN from E-UTRAN
// Reference: 36.523-2 A.4.4-1/zz
modulepar boolean pc_SupportOpModeA := false; // @desc UE supports Operation Mode A
// Reference: 34.123-2 A.3/3
modulepar boolean pc_SwitchOnOff := true; // @desc switch on/off supported
// Reference: 36.523-2, A4.4-1/10
modulepar boolean pc_TDD_HCR := false; // @desc UE supports UTRA band as defined in TS 25.102
// Reference: 34.123-2 A.1/2
modulepar boolean pc_TDD_LCR := false; // @desc UE supports UTRA band as defined in TS 25.102
// Reference: 34.123-2 A.1/3
modulepar boolean pc_TDD_VHCR := false; // @desc UE supports UTRA band as defined in TS 25.102
// Reference: 34.123-2 A.1/8
modulepar boolean pc_TTI_Bundling := false; // @desc Support of TTI Bundling
// Reference: 36.523-2 A.4.4-1/51
modulepar boolean pc_UMI_ProcNeeded_DuringCSFB := false; // @desc Requiring UMI proceeding to paging response
// Reference: 36.523-2 A.4.4-2/6
modulepar boolean pc_USIM_Removal := false; // @desc USIM removable without power down supported
// Reference: 36.523-2, A4.4-1/1
modulepar boolean pc_UTRA := false; // @desc UE supports UTRA
// Reference: 36.523-2 A.4.1-1/5
modulepar boolean pc_UTRA_FeatrGrp_1 := false; // @desc Support of UTRA CELL_PCH and URA_PCH to RRC_IDLE cell reselection
// Reference: 36.523-2 A.4.5-2/1
modulepar boolean pc_UTRA_FeatrGrp_2 := false; // @desc Support of EUTRAN measurements and reporting in connected mode
// Reference: 36.523-2 A.4.5-2/2
modulepar boolean pc_UniversalAndLocalTimeZone := false; // @desc Support of storage of the universal time and local time zone
// Reference: 36.523-2 A.4.4-1/15
modulepar boolean pc_VoLTE := false; // @desc Support of VoLTE in GSMA PRD IR.92: "IMS profile for Voice and SMS"
// Reference: 36.523-2 A.4.4-1/yy
modulepar boolean pc_eFDD := false; // @desc UE supports EUTRA FDD
// Reference: 36.523-2 A.4.1-1/1
modulepar boolean pc_eRedirectionUTRA := false; // @desc Support of use of the UTRA system information provided by RRCConnectionRelease upon redirection
// Reference: 36.523-2 A.4.4-1/31
modulepar boolean pc_eTDD := false; // @desc UE supports EUTRA TDD
// Reference: 36.523-2 A.4.1-1/2
modulepar boolean pc_ue_Category_1 := false; // @desc UE Category 1
// Reference: 36.523-2 A.4.3.2-1/1
modulepar boolean pc_ue_Category_2 := false; // @desc UE Category 2
// Reference: 36.523-2 A.4.3.2-1/2
modulepar boolean pc_ue_Category_3 := false; // @desc UE Category 3
// Reference: 36.523-2 A.4.3.2-1/3
modulepar boolean pc_ue_Category_4 := false; // @desc UE Category 4
// Reference: 36.523-2 A.4.3.2-1/4
modulepar boolean pc_ue_Category_5 := false; // @desc UE Category 5
// Reference: 36.523-2 A.4.3.2-1/5
}

@ -11,16 +11,25 @@ gen_links() {
done
}
DIR=$BASEDIR/titan.TestPorts.IPL4asp/src
FILES="IPL4asp_Functions.ttcn IPL4asp_PT.cc IPL4asp_PT.hh IPL4asp_PortType.ttcn IPL4asp_Types.ttcn IPL4asp_discovery.cc IPL4asp_protocol_L234.hh"
DIR=$BASEDIR/titan.Libraries.TCCUsefulFunctions/src
FILES="TCCInterface_Functions.ttcn TCCConversion_Functions.ttcn TCCConversion.cc TCCInterface.cc TCCInterface_ip.h"
gen_links $DIR $FILES
DIR=$BASEDIR/titan.TestPorts.Common_Components.Socket-API/src
FILES="Socket_API_Definitions.ttcn"
DIR=$BASEDIR/titan.core/regression_test/ttcn2json
FILES="General_Types.ttcn"
gen_links $DIR $FILES
DIR=$BASEDIR/titan.