#######################################################################################
#######################################################################################
#NIDD_VER: TNL17_1610_001_00
#TNL: TNL17_1610_001
#Migration from FL17_RADIO_1610_007 to SBTS17 - TNL
#20.02.2017/ v0.1 /first draft /John Villangca
#
#######################################################################################

#######################################################################################
#######################################################################################
#If SCF version == FL17 proceed with migration, else abort this ruleset

if ( objects_count "MRBTS" ) == 0 abort_file
if ( objects_count "MRBTS/LNBTS" ) == 0 abort_file
if ( objects_count "MRBTS/LNBTS/FTM" ) == 0 abort_file

define "version" "none"
for_objects "MRBTS" define "mrbtsRoot" $current_dist_name
for_objects "MRBTS/LNBTS" define "lnbtsRoot" $current_dist_name

define "tempVersion" get_version lnbtsRoot
define "tempVersion2" replace tempVersion "(.*(FL17).*)|^(?!FL17).*" "$2" flags "g"
if tempVersion2 == "FL17" define "version" "TNL17_1610_001"
if tempVersion2 == ""
    begin
        define "tempVersion2" replace tempVersion "(.*(FL18).*)|^(?!FL18).*" "$2" flags "g"
        if ( tempVersion2 ) == "FL18"
            define "version" "TNL17_1610_001"
    end
if tempVersion2 == ""
    begin
        define "tempVersion2" replace tempVersion "(.*(TL17A).*)|^(?!TL17A).*" "$2" flags "g"
        if ( tempVersion2 ) == "TL17A"
            define "version" "TNL17_1610_001"
    end

if ( objects_count "MRBTS/LNBTS/FTM" ) == 0 abort_file

for_objects "MRBTS/LNBTS/FTM"
	begin
		define "LTE_MRBTS" $current_dist_name
		define "mrbtsRoot" "MRBTS-" JOIN $current_MRBTS
	end

if version == "none" abort_file
	
define "SBTS_TNLSVC" mrbtsRoot JOIN "/TNLSVC-1"
define "SBTS_TNL" SBTS_TNLSVC JOIN "/TNL-1"
define "SBTS_ETHSVC" SBTS_TNL JOIN "/ETHSVC-1"

add_object SBTS_TNLSVC
add_object SBTS_TNL
add_object SBTS_ETHSVC

#####L2SWI#####
for_objects "FTM/L2SWI"
begin
	define "FL_L2SWI" $current_dist_name
	define "SBTS_L2SWI" SBTS_ETHSVC JOIN "/L2SWI-" JOIN $current_L2SWI
	add_object SBTS_L2SWI

	add_param SBTS_L2SWI "l2QoSEnabled" "false"
	add_param SBTS_L2SWI "l2SwitchingEnabled" "false"
	add_param SBTS_L2SWI "vlanAwarenessEnabled" "false"
	
	if ( param_exist FL_L2SWI "enableLayer2Switching" )
		begin
			add_param SBTS_L2SWI "l2QoSEnabled" get_param FL_L2SWI "enableLayer2Switching"
			add_param SBTS_L2SWI "l2SwitchingEnabled" get_param FL_L2SWI "enableLayer2Switching"
		end
	if ( param_exist FL_L2SWI "l2PriorityQueueWeight5" ) add_param SBTS_L2SWI "l2WeightAF1" get_param FL_L2SWI "l2PriorityQueueWeight5"
	if ( param_exist FL_L2SWI "l2PriorityQueueWeight4" ) add_param SBTS_L2SWI "l2WeightAF2" get_param FL_L2SWI "l2PriorityQueueWeight4"
	if ( param_exist FL_L2SWI "l2PriorityQueueWeight3" ) add_param SBTS_L2SWI "l2WeightAF3" get_param FL_L2SWI "l2PriorityQueueWeight3"
	if ( param_exist FL_L2SWI "l2PriorityQueueWeight2" ) add_param SBTS_L2SWI "l2WeightAF4" get_param FL_L2SWI "l2PriorityQueueWeight2"
	if ( param_exist FL_L2SWI "l2PriorityQueueWeight6" ) add_param SBTS_L2SWI "l2WeightBE" get_param FL_L2SWI "l2PriorityQueueWeight6"
	if ( param_exist FL_L2SWI "priorityQueueNonIP" )
		begin
			define "value" get_param FL_L2SWI "priorityQueueNonIP"
			if ( value == "1" ) add_param SBTS_L2SWI "priorityQueueNonClassified" "EF"
			if ( value == "2" ) add_param SBTS_L2SWI "priorityQueueNonClassified" "AF4"
			if ( value == "3" ) add_param SBTS_L2SWI "priorityQueueNonClassified" "AF3"
			if ( value == "4" ) add_param SBTS_L2SWI "priorityQueueNonClassified" "AF2"
			if ( value == "5" ) add_param SBTS_L2SWI "priorityQueueNonClassified" "AF1"
			if ( value == "6" ) add_param SBTS_L2SWI "priorityQueueNonClassified" "BE"
		end
	if ( param_exist FL_L2SWI "qosClassification" ) add_param SBTS_L2SWI "qosClassificationCriteria" get_param FL_L2SWI "qosClassification"
	if ( param_exist FL_L2SWI "vlanAwareSwitch" ) add_param SBTS_L2SWI "vlanAwarenessEnabled" get_param FL_L2SWI "vlanAwareSwitch"
	
	#####L2SWI/DSCPTOQMAP#####
	if ( param_exist FL_L2SWI "dscpMap" )
		begin
			define "SBTS_DSCPTOQMAP" SBTS_L2SWI JOIN "/DSCPTOQMAP-1"
			add_object SBTS_DSCPTOQMAP
			
			add_param SBTS_DSCPTOQMAP "queueForDscp0" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp1" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp10" "AF1"
			add_param SBTS_DSCPTOQMAP "queueForDscp11" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp12" "AF1"
			add_param SBTS_DSCPTOQMAP "queueForDscp13" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp14" "AF1"
			add_param SBTS_DSCPTOQMAP "queueForDscp15" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp16" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp17" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp18" "AF2"
			add_param SBTS_DSCPTOQMAP "queueForDscp19" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp2" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp20" "AF2"
			add_param SBTS_DSCPTOQMAP "queueForDscp21" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp22" "AF2"
			add_param SBTS_DSCPTOQMAP "queueForDscp23" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp24" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp25" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp26" "AF3"
			add_param SBTS_DSCPTOQMAP "queueForDscp27" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp28" "AF3"
			add_param SBTS_DSCPTOQMAP "queueForDscp29" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp3" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp30" "AF3"
			add_param SBTS_DSCPTOQMAP "queueForDscp31" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp32" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp33" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp34" "AF4"
			add_param SBTS_DSCPTOQMAP "queueForDscp35" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp36" "AF4"
			add_param SBTS_DSCPTOQMAP "queueForDscp37" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp38" "AF4"
			add_param SBTS_DSCPTOQMAP "queueForDscp39" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp4" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp40" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp41" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp42" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp43" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp44" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp45" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp46" "EF"
			add_param SBTS_DSCPTOQMAP "queueForDscp47" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp48" "EF"
			add_param SBTS_DSCPTOQMAP "queueForDscp49" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp5" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp50" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp51" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp52" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp53" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp54" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp55" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp56" "EF"
			add_param SBTS_DSCPTOQMAP "queueForDscp57" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp58" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp59" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp6" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp60" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp61" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp62" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp63" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp7" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp8" "BE"
			add_param SBTS_DSCPTOQMAP "queueForDscp9" "BE"
			
			for_list FL_L2SWI "dscpMap"
				begin
					define "FL_L2SWI_dscpMap_PREFIX" "dscpMap." JOIN $current_index JOIN "."
					if ( param_exist FL_L2SWI FL_L2SWI_dscpMap_PREFIX JOIN "dscp" ) && ( param_exist FL_L2SWI FL_L2SWI_dscpMap_PREFIX JOIN "priorityQueue" )
					begin
						define "dscp" get_param FL_L2SWI FL_L2SWI_dscpMap_PREFIX JOIN "dscp"
						define "queue" get_param FL_L2SWI FL_L2SWI_dscpMap_PREFIX JOIN "priorityQueue"
						if ( queue == "1" ) define "queue" "EF"
						if ( queue == "2" ) define "queue" "AF4"
						if ( queue == "3" ) define "queue" "AF3"
						if ( queue == "4" ) define "queue" "AF2"
						if ( queue == "5" ) define "queue" "AF1"
						if ( queue == "6" ) define "queue" "BE"
						add_param SBTS_DSCPTOQMAP "queueForDscp" JOIN dscp queue
					end
				end

		end
	#####L2SWI/DSCPTOQMAP#####
	
	#####L2SWI/IBRGPRT#####
	define "SBTS_IBRGPRT" SBTS_L2SWI JOIN "/IBRGPRT-1"
	add_object SBTS_IBRGPRT
	
	if ( param_exist FL_L2SWI "portDefaultVlanId" ) add_param SBTS_IBRGPRT "portDefaultVlanId" get_param FL_L2SWI "portDefaultVlanId"
	if ( param_exist FL_L2SWI "portDefaultPriority" ) add_param SBTS_IBRGPRT "portDefaultVlanPriority" get_param FL_L2SWI "portDefaultPriority"
	#####L2SWI/IBRGPRT#####

	#####L2SWI/PCP2QMAP#####
	define "SBTS_PCP2QMAP" SBTS_L2SWI JOIN "/PCP2QMAP-1"
	add_object SBTS_PCP2QMAP
	
	add_param SBTS_PCP2QMAP "queueForPcp0" "BE"
	add_param SBTS_PCP2QMAP "queueForPcp1" "AF1"
	add_param SBTS_PCP2QMAP "queueForPcp2" "AF2"
	add_param SBTS_PCP2QMAP "queueForPcp3" "AF3"
	add_param SBTS_PCP2QMAP "queueForPcp4" "AF4"
	add_param SBTS_PCP2QMAP "queueForPcp5" "EF"
	add_param SBTS_PCP2QMAP "queueForPcp6" "EF"
	add_param SBTS_PCP2QMAP "queueForPcp7" "EF"

	for_range 0 8
		begin
			if ( param_exist FL_L2SWI "priorityQueuePcp" JOIN $current_index )
				begin
					define "value" get_param FL_L2SWI "priorityQueuePcp" JOIN $current_index
					if ( value == "1" ) define "value" "EF"
					if ( value == "2" ) define "value" "AF4"
					if ( value == "3" ) define "value" "AF3"
					if ( value == "4" ) define "value" "AF2"
					if ( value == "5" ) define "value" "AF1"
					if ( value == "6" ) define "value" "BE"
					add_param SBTS_PCP2QMAP "queueForPcp" JOIN $current_index value
				end
		end
	#####L2SWI/PCP2QMAP#####
end
#####L2SWI#####

#####ETHIF#####
# for IBRGPRT
define "SBTS_ETHIF" SBTS_ETHSVC JOIN "/ETHIF-1"
add_object SBTS_ETHIF

add_param SBTS_ETHIF "linkSelectorDN" SBTS_ETHSVC JOIN "/L2SWI-1/IBRGPRT-1"
for_objects "FTM/IPNO/IEIF"
	begin
		define "FL_IEIF" $current_dist_name
		if ( param_exist FL_IEIF "trafficPathShapingEnable" )
			begin
				define "value" get_param FL_IEIF "trafficPathShapingEnable"
				if ( value == "TPS_OFF" || value == "TPS_PATH" )
					begin
						add_param SBTS_ETHIF "sbsTotal" "4000"
						add_param SBTS_ETHIF "sirTotal" "1000000"
					end
				if ( value == "TPS_WFQ" )
					begin
						if ( param_exist FL_IEIF "sbsTotal" ) add_param SBTS_ETHIF "sbsTotal" get_param FL_IEIF "sbsTotal"
						if ( param_exist FL_IEIF "sirTotal" ) add_param SBTS_ETHIF "sirTotal" get_param FL_IEIF "sirTotal"
					end
			end
		if ( param_exist FL_IEIF "upperLayerShaping" )
			begin
				define "value" get_param FL_IEIF "upperLayerShaping"
				if ( value == "true" ) add_param SBTS_ETHIF "shapingOverhead" "IP packet"
				if ( value == "false" ) add_param SBTS_ETHIF "shapingOverhead" "Ethernet frame"
			end
	end
add_param SBTS_ETHIF "txPriorityTagging" "false"
for_objects "FTM/IPNO/IEIF/IVIF"
	begin
		define "FL_IVIF" $current_dist_name
		define "ivifId" $current_IVIF
		if ( param_exist FL_IVIF "vlanId" )
			begin
				if ( get_param FL_IVIF "vlanId" ) == "0"
					add_param SBTS_ETHIF "txPriorityTagging" "true"
				else
					#####VLANIF#####
					begin
						define "SBTS_VLANIF" SBTS_ETHIF JOIN "/VLANIF-" JOIN ivifId
						add_object SBTS_VLANIF
						
						add_param SBTS_VLANIF "vlanId" get_param FL_IVIF "vlanId"
					end
					#####VLANIF#####
			end
	end

# for BRGPRT
define "ETHLK_COUNT" 1
for_objects "FTM/ETHLK"
begin
	define "FL_ETHLK" $current_dist_name
	define "ethlkId" $current_ETHLK
	define "X" replace ethlkId "(.*)-(.*)" "$1"
	define "Y" replace ethlkId "(.*)-(.*)" "$2"

	if ( param_exist FL_ETHLK "administrativeState" ) 
		if ( get_param FL_ETHLK "administrativeState" ) == "unlocked"
			begin
				define "SBTS_ETHIF" SBTS_ETHSVC JOIN "/ETHIF-" JOIN ( ETHLK_COUNT + 1 )
				add_object SBTS_ETHIF
				
				add_param SBTS_ETHIF "linkSelectorDN" SBTS_ETHSVC JOIN "/L2SWI-1/BRGPRT-" JOIN ETHLK_COUNT
				
				#####ETHLK#####
				define "SBTS_ETHLK" SBTS_ETHSVC JOIN "/ETHLK-" JOIN ETHLK_COUNT
				add_object SBTS_ETHLK
				
				add_param SBTS_ETHLK "administrativeState" "unlocked"
				add_param SBTS_ETHLK "clockMode" "AUTODETECT"
				add_param SBTS_ETHLK "l2IngressRate" "1000000"
				add_param SBTS_ETHLK "speedAndDuplex" "AUTODETECT"
				
				if ( param_exist FL_ETHLK "administrativeState" ) add_param SBTS_ETHLK "administrativeState" get_param FL_ETHLK "administrativeState"
				if ( param_exist FL_ETHLK "syncEAutoNegMode" )
					begin
						define "value" get_param FL_ETHLK "syncEAutoNegMode"
						if ( value == "automatic" ) add_param SBTS_ETHLK "clockMode" "AUTODETECT"
						if ( value == "Master forced" ) add_param SBTS_ETHLK "clockMode" "MANUAL MASTER"
						if ( value == "Slave forced" ) add_param SBTS_ETHLK "clockMode" "MANUAL SLAVE"
					end
				add_param SBTS_ETHLK "connectorLabel" "EIF" JOIN Y
				if ( param_exist FL_ETHLK "l2IngressRate" )
					begin
						define "value" get_param FL_ETHLK "l2IngressRate"
						if ( value == "RT_LINE_RATE" ) add_param SBTS_ETHLK "l2IngressRate" "1000000"
						else
							begin
								define "value" replace value "RT_" ""
								add_param SBTS_ETHLK "l2IngressRate" value * 1000
							end
					end
				if ( X == "0" )
					add_param SBTS_ETHLK "modDN" mrbtsRoot JOIN "/EQM-1/APEQM-1/CABINET-1/SMOD-1"
				else
					add_param SBTS_ETHLK "modDN" mrbtsRoot JOIN "/EQM-1/APEQM-1/CABINET-1/SMOD-1/TRMOD-1"
				if ( param_exist FL_ETHLK "speedAndDuplex" )
					begin
						define "value" get_param FL_ETHLK "speedAndDuplex"
						if ( value == "10MBIT_FULL" ) define "value" "AUTODETECT"
						add_param SBTS_ETHLK "speedAndDuplex" value
					end
				#####ETHLK#####
				
				#####L2SWI/BRGPRT#####
				define "SBTS_BRGPRT" SBTS_L2SWI JOIN "/BRGPRT-" JOIN ETHLK_COUNT
				add_object SBTS_BRGPRT
				
				add_param SBTS_BRGPRT "acceptableFrameTypes" "ADMIT_ALL"
				add_param SBTS_BRGPRT "ethlkDN" SBTS_ETHLK
				add_param SBTS_BRGPRT "flushFdbOnLos" "false"
				add_param SBTS_BRGPRT "l2BurstSize" "4000"
				add_param SBTS_BRGPRT "l2ShaperRate" "1000000"
				add_param SBTS_BRGPRT "portDefaultVlanId" "1"
				
				if ( param_exist FL_ETHLK "acceptableFrameTypes" ) add_param SBTS_BRGPRT "acceptableFrameTypes" get_param FL_ETHLK "acceptableFrameTypes"
				if ( param_exist FL_ETHLK "flushFdbOnLos" ) add_param SBTS_BRGPRT "flushFdbOnLos" get_param FL_ETHLK "flushFdbOnLos"
				if ( param_exist FL_ETHLK "l2ShaperRate" )
					begin
						define "value" get_param FL_ETHLK "l2ShaperRate"
						if ( value == "RT_LINE_RATE" ) add_param SBTS_BRGPRT "l2ShaperRate" "1000000"
						else
							begin
								define "value" replace value "RT_" ""
								add_param SBTS_BRGPRT "l2ShaperRate" value * 1000
							end
					end
				
				if ( param_exist SBTS_BRGPRT "l2ShaperRate" )
					if ( param_exist FL_ETHLK "l2BurstSize" )
						add_param SBTS_BRGPRT "l2BurstSize"  ( ( get_param SBTS_BRGPRT "l2ShaperRate" ) * ( get_param FL_ETHLK "l2BurstSize" ) / 8 )

				if ( param_exist FL_ETHLK "l2VlanIdList" )
					begin
						copy_list FL_ETHLK "l2VlanIdList" SBTS_BRGPRT "l2VlanIdList"
						for_list SBTS_BRGPRT "l2VlanIdList"
							begin
								define "SBTS_BRGPRT_l2VlanIdList_PREFIX" "l2VlanIdList." JOIN $current_index JOIN "."
								if ( param_exist SBTS_BRGPRT SBTS_BRGPRT_l2VlanIdList_PREFIX JOIN "highValue" )
									begin
										define "value" get_param SBTS_BRGPRT SBTS_BRGPRT_l2VlanIdList_PREFIX JOIN "highValue"
										if ( value == "-1" || value == "0" ) add_param SBTS_BRGPRT SBTS_BRGPRT_l2VlanIdList_PREFIX JOIN "highValue" "4094"
									end
							end
					end
				if ( param_exist FL_ETHLK "portDefaultVlanId" ) add_param SBTS_BRGPRT "portDefaultVlanId" get_param FL_ETHLK "portDefaultVlanId"
				if ( param_exist FL_ETHLK "portDefaultPriority" ) add_param SBTS_BRGPRT "portDefaultVlanPriority" get_param FL_ETHLK "portDefaultPriority"
				#####L2SWI/BRGPRT#####
				
				define "ETHLK_COUNT" ETHLK_COUNT + 1
			end
end
#####ETHIF#####

#####IPNO#####
define "SBTS_IPNO" SBTS_TNL JOIN "/IPNO-1"
add_object SBTS_IPNO

add_param SBTS_IPNO "arpCacheValidity" "30"
add_param SBTS_IPNO "icmpDscp" "10"
add_param SBTS_IPNO "icmpResponseEnabled" "true"
add_param SBTS_IPNO "ipReassemblyTimeout" "1000"

for_objects "FTM/IPNO/QOS"
	begin
		define "FL_QOS" $current_dist_name
		if ( param_exist FL_QOS "trafficTypesMap" )
			for_list FL_QOS "trafficTypesMap"
				begin
					define "trafficTypesMap_PREFIX" "trafficTypesMap." JOIN $current_index JOIN "."
					if ( get_param FL_QOS trafficTypesMap_PREFIX JOIN "trafficType" ) == "ICMP"
						if ( param_exist FL_QOS trafficTypesMap_PREFIX JOIN "dscp" )
							add_param SBTS_IPNO "icmpDscp" get_param FL_QOS trafficTypesMap_PREFIX JOIN "dscp"
				end
	end

for_objects "FTM/IPNO"
	begin
		if ( param_exist $current_dist_name "icmpResponseEnabled" ) add_param SBTS_IPNO "icmpResponseEnabled" get_param $current_dist_name "icmpResponseEnabled"
		if ( param_exist $current_dist_name "retransTimer" ) add_param SBTS_IPNO "retransTimer" get_param $current_dist_name "retransTimer"
	end
#####IPNO#####

#####IPNO/QOS#####
define "SBTS_QOS" SBTS_IPNO JOIN "/QOS-1"
add_object SBTS_QOS

add_param SBTS_QOS "arpPcp" "7"
#####IPNO/QOS#####

#####IPNO/QOS/DSCP2PCPMAP#####
define "SBTS_QOS_DSCP2PCPMAP" SBTS_QOS JOIN "/DSCP2PCPMAP-1"
add_object SBTS_QOS_DSCP2PCPMAP

add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp0" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp1" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp2" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp3" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp4" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp5" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp6" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp7" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp8" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp9" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp10" "1"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp11" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp12" "1"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp13" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp14" "1"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp15" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp16" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp17" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp18" "2"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp19" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp20" "2"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp21" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp22" "2"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp23" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp24" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp25" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp26" "3"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp27" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp28" "3"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp29" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp30" "3"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp31" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp32" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp33" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp34" "4"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp35" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp36" "4"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp37" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp38" "4"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp39" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp40" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp41" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp42" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp43" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp44" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp45" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp46" "5"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp47" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp48" "6"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp49" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp50" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp51" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp52" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp53" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp54" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp55" "7"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp56" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp57" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp58" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp59" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp60" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp61" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp62" "0"
add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp63" "0"

for_objects "FTM/IPNO/QOS"
	begin
		define "FL_QOS" $current_dist_name
		if ( param_exist FL_QOS "dscpMap" )
			for_list FL_QOS "dscpMap"
				begin
					define "dscpMap_PREFIX" "dscpMap." JOIN $current_index JOIN "."
					if ( param_exist FL_QOS dscpMap_PREFIX JOIN "dscp" )
						begin
							define "dscp" get_param FL_QOS dscpMap_PREFIX JOIN "dscp"
							
							if ( param_exist FL_QOS dscpMap_PREFIX JOIN "vlanPrio" )
								add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp" JOIN dscp get_param FL_QOS dscpMap_PREFIX JOIN "vlanPrio"
						end
				end
	end
#####IPNO/QOS/DSCP2PCPMAP#####

#####IPNO/QOS/DSCP2QMAP#####
define "SBTS_QOS_DSCP2QMAP" SBTS_QOS JOIN "/DSCP2QMAP-1"
add_object SBTS_QOS_DSCP2QMAP

add_param SBTS_QOS_DSCP2QMAP "queueForDscp0" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp1" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp10" "AF1"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp11" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp12" "AF1"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp13" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp14" "AF1"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp15" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp16" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp17" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp18" "AF2"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp19" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp2" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp20" "AF2"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp21" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp22" "AF2"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp23" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp24" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp25" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp26" "AF3"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp27" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp28" "AF3"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp29" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp3" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp30" "AF3"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp31" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp32" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp33" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp34" "AF4"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp35" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp36" "AF4"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp37" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp38" "AF4"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp39" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp4" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp40" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp41" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp42" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp43" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp44" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp45" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp46" "EF1"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp47" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp48" "EF2"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp49" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp5" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp50" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp51" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp52" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp53" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp54" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp55" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp56" "EF3"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp57" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp58" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp59" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp6" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp60" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp61" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp62" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp63" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp7" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp8" "BE"
add_param SBTS_QOS_DSCP2QMAP "queueForDscp9" "BE"

for_objects "FTM/IPNO/QOS"
	begin
		define "FL_QOS" $current_dist_name
		if ( param_exist FL_QOS "dscpMap" )
			for_list FL_QOS "dscpMap"
				begin
					define "dscpMap_PREFIX" "dscpMap." JOIN $current_index JOIN "."
					if ( param_exist FL_QOS dscpMap_PREFIX JOIN "dscp" )
						begin
							define "dscp" get_param FL_QOS dscpMap_PREFIX JOIN "dscp"
							
							if ( param_exist FL_QOS dscpMap_PREFIX JOIN "pHB" )
								begin
									define "pHB" get_param FL_QOS dscpMap_PREFIX JOIN "pHB"
									define "queue" "BE"
									if ( pHB == "expeditedForwarding" ) define "queue" "EF1"
									if ( pHB == "assuredForwardingClass4" ) define "queue" "AF4"
									if ( pHB == "assuredForwardingClass43" ) define "queue" "AF4"
									if ( pHB == "assuredForwardingClass42" ) define "queue" "AF4"
									if ( pHB == "assuredForwardingClass41" ) define "queue" "AF4"
									if ( pHB == "assuredForwardingClass3" ) define "queue" "AF3"
									if ( pHB == "assuredForwardingClass33" ) define "queue" "AF3"
									if ( pHB == "assuredForwardingClass32" ) define "queue" "AF3"
									if ( pHB == "assuredForwardingClass31" ) define "queue" "AF3"
									if ( pHB == "assuredForwardingClass2" ) define "queue" "AF2"
									if ( pHB == "assuredForwardingClass23" ) define "queue" "AF2"
									if ( pHB == "assuredForwardingClass22" ) define "queue" "AF2"
									if ( pHB == "assuredForwardingClass21" ) define "queue" "AF2"
									if ( pHB == "assuredForwardingClass1" ) define "queue" "AF1"
									if ( pHB == "assuredForwardingClass13" ) define "queue" "AF1"
									if ( pHB == "assuredForwardingClass12" ) define "queue" "AF1"
									if ( pHB == "assuredForwardingClass11" ) define "queue" "AF1"
									if ( pHB == "bestEffort" ) define "queue" "BE"
								
									add_param SBTS_QOS_DSCP2QMAP "queueForDscp" JOIN dscp queue
								end
						end
				end
	end
#####IPNO/QOS/DSCP2QMAP#####

#####IPNO/IPIF + IPIF/IPADDRESSV4 + IPIF/IPADDRESSV6 + IPNO/QOS/FSTSCH#####
define "IPIF_COUNT" 0
define "IPADDRESSV4_COUNT" 0
define "FSTSCH_COUNT" 0

# 1. For an existing IEIF-1 in legacy model, create an IPIF instance with IPIF:: interfacePtr = ETHIF-1
for_objects "FTM/IPNO/IEIF"
	begin
		define "FL_IEIF" $current_dist_name
		
		if ( param_exist FL_IEIF "localIpAddr" ) || ( param_exist FL_IEIF "localIpv6Addr" )
			begin
				define "localIpAddr" "0.0.0.0"
				define "localIpv6Addr" "0:0:0:0:0:0:0:0"
				if ( param_exist FL_IEIF "localIpAddr" ) define "localIpAddr" get_param FL_IEIF "localIpAddr"
				if ( param_exist FL_IEIF "localIpv6Addr" ) define "localIpv6Addr" get_param FL_IEIF "localIpv6Addr"
				
				if localIpAddr != "0.0.0.0" || ( localIpv6Addr != "0:0:0:0:0:0:0:0" && localIpv6Addr != "::" )
					begin
						define "IPIF_COUNT" IPIF_COUNT + 1
						define "SBTS_IPIF" SBTS_IPNO JOIN "/IPIF-" JOIN IPIF_COUNT
						add_object SBTS_IPIF
						
						# delete later. used for MCAPP
						add_param FL_IEIF "sbtsIpifDn" SBTS_IPIF
						
						add_param SBTS_IPIF "interfaceDN" SBTS_ETHSVC JOIN "/ETHIF-1"
						add_param SBTS_IPIF "ipMtu" "1500"
						
						if ( param_exist FL_IEIF "mtu" ) add_param SBTS_IPIF "ipMtu" get_param FL_IEIF "mtu"
						
						if localIpAddr != "0.0.0.0"
							begin
								define "SBTS_IPADDRESS" SBTS_IPIF JOIN "/IPADDRESSV4-1"

								add_object SBTS_IPIF JOIN "/IPADDRESSV4-1"
								
								add_param SBTS_IPADDRESS "ipAddressAllocationMethod" "MANUAL"
								add_param SBTS_IPADDRESS "localIpAddr" localIpAddr
								add_param SBTS_IPADDRESS "localIpPrefixLength" "0"
								if ( param_exist FL_IEIF "netmask" )
									begin
										define "netmask" get_param FL_IEIF "netmask"
										define "prefixLength" "0"
										if ( netmask == "255.255.255.255" ) define "prefixLength" "32"
										if ( netmask == "255.255.255.254" ) define "prefixLength" "31"
										if ( netmask == "255.255.255.252" ) define "prefixLength" "30"
										if ( netmask == "255.255.255.248" ) define "prefixLength" "29"
										if ( netmask == "255.255.255.240" ) define "prefixLength" "28"
										if ( netmask == "255.255.255.224" ) define "prefixLength" "27"
										if ( netmask == "255.255.255.192" ) define "prefixLength" "26"
										if ( netmask == "255.255.255.128" ) define "prefixLength" "25"
										if ( netmask == "255.255.255.0" ) define "prefixLength" "24"
										if ( netmask == "255.255.254.0" ) define "prefixLength" "23"
										if ( netmask == "255.255.252.0" ) define "prefixLength" "22"
										if ( netmask == "255.255.248.0" ) define "prefixLength" "21"
										if ( netmask == "255.255.240.0" ) define "prefixLength" "20"
										if ( netmask == "255.255.224.0" ) define "prefixLength" "19"
										if ( netmask == "255.255.192.0" ) define "prefixLength" "18"
										if ( netmask == "255.255.128.0" ) define "prefixLength" "17"
										if ( netmask == "255.255.0.0" ) define "prefixLength" "16"
										if ( netmask == "255.254.0.0" ) define "prefixLength" "15"
										if ( netmask == "255.252.0.0" ) define "prefixLength" "14"
										if ( netmask == "255.248.0.0" ) define "prefixLength" "13"
										if ( netmask == "255.240.0.0" ) define "prefixLength" "12"
										if ( netmask == "255.224.0.0" ) define "prefixLength" "11"
										if ( netmask == "255.192.0.0" ) define "prefixLength" "10"
										if ( netmask == "255.128.0.0" ) define "prefixLength" "9"
										if ( netmask == "255.0.0.0" ) define "prefixLength" "8"
										if ( netmask == "254.0.0.0" ) define "prefixLength" "7"
										if ( netmask == "252.0.0.0" ) define "prefixLength" "6"
										if ( netmask == "248.0.0.0" ) define "prefixLength" "5"
										if ( netmask == "240.0.0.0" ) define "prefixLength" "4"
										if ( netmask == "224.0.0.0" ) define "prefixLength" "3"
										if ( netmask == "192.0.0.0" ) define "prefixLength" "2"
										if ( netmask == "128.0.0.0" ) define "prefixLength" "1"
										if ( netmask == "0.0.0.0" ) define "prefixLength" "0"
										add_param SBTS_IPADDRESS "localIpPrefixLength" prefixLength
									end
							end

						if localIpv6Addr != "0:0:0:0:0:0:0:0" && localIpv6Addr != "::"
							begin
								define "SBTS_IPADDRESSV6" SBTS_IPIF JOIN "/IPADDRESSV6-1"
								add_object SBTS_IPADDRESSV6 
								add_param SBTS_IPADDRESSV6 "localIpAddr" localIpv6Addr
								if ( param_exist FL_IEIF "localIpv6PrefixLength" ) add_param SBTS_IPADDRESSV6 "localIpPrefixLength" get_param FL_IEIF "localIpv6PrefixLength"
								add_param SBTS_IPADDRESSV6 "ipAddressAllocationMethod" "MANUAL"
							end

						if ( param_exist FL_IEIF "trafficPathShapingEnable" )
							begin
								define "value" get_param FL_IEIF "trafficPathShapingEnable"
								if ( value == "TPS_WFQ" || value == "TPS_PATH" )
									begin
										# FSTSCH
										define "FSTSCH_COUNT" FSTSCH_COUNT + 1
										define "SBTS_FSTSCH" SBTS_QOS JOIN "/FSTSCH-" JOIN FSTSCH_COUNT
										add_object SBTS_FSTSCH
										
										# fill up list later with VLANIF for TPS_PATH
										add_list SBTS_FSTSCH "ipIfDN"
										add_param SBTS_FSTSCH "ipIfDN.0" SBTS_IPIF
										add_param SBTS_FSTSCH "sbs" "4000"
										add_param SBTS_FSTSCH "scdschWfqWeight" "1000"
										add_param SBTS_FSTSCH "sir" "1000000"
										add_param SBTS_FSTSCH "spShapingRate" "1000000"
										
										if ( value == "TPS_WFQ" )
											begin
												if ( param_exist FL_IEIF "sbsTotal" ) add_param SBTS_FSTSCH "sbs" get_param FL_IEIF "sbsTotal"
												if ( param_exist FL_IEIF "sirTotal" ) add_param SBTS_FSTSCH "sir" get_param FL_IEIF "sirTotal"
												if ( param_exist FL_IEIF "sirTotal" ) add_param SBTS_FSTSCH "spShapingRate" get_param FL_IEIF "sirTotal"
												add_param SBTS_FSTSCH "userLabel" "Ethernet"
											end
										
										if ( value == "TPS_PATH" )
											begin
												if ( param_exist FL_IEIF "sbs" ) add_param SBTS_FSTSCH "sbs" get_param FL_IEIF "sbs"
												if ( param_exist FL_IEIF "wfqSchedQueueWeight" ) add_param SBTS_FSTSCH "scdschWfqWeight" get_param FL_IEIF "wfqSchedQueueWeight"
												if ( param_exist FL_IEIF "sbs" ) add_param SBTS_FSTSCH "sir" get_param FL_IEIF "sbs"
												if ( param_exist FL_IEIF "sbs" ) add_param SBTS_FSTSCH "spShapingRate" get_param FL_IEIF "sbs"
												add_param SBTS_FSTSCH "userLabel" "Ethernet of VLAN"
											end
										
										add_list SBTS_FSTSCH "wfqWeightList"
										add_complex_param SBTS_FSTSCH "wfqWeightList.0"
										add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" "10"
										add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" "100"
										add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" "1000"
										add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" "10000"
										add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" "1"
										
										for_objects "FTM/IPNO/QOS"
											begin
												define "FL_QOS" $current_dist_name
												if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1"
												if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2"
												if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3"
												if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4"
												if ( param_exist FL_QOS "perHopBehaviourWeightList.0.bestEffort" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" get_param FL_QOS "perHopBehaviourWeightList.0.bestEffort"
											end
									end
							end
					end
			end
	end

# 1+ For all existing IVIF-* in legacy model, create an IPIF instance with IPIF:: interfacePtr = ETHIF-1/VLANIF
for_objects "FTM/IPNO/IEIF/IVIF"
	begin
		define "FL_IVIF" $current_dist_name
		define "ivifId" $current_IVIF

		if ( param_exist FL_IVIF "vlanId" )
			begin
				if not ( get_param FL_IVIF "vlanId" ) == "0"
					begin
						define "IPIF_COUNT" IPIF_COUNT + 1
						define "SBTS_IPIF" SBTS_IPNO JOIN "/IPIF-" JOIN IPIF_COUNT
						add_object SBTS_IPIF												
						
						# delete later. used for MCAPP
						add_param FL_IVIF "sbtsIpifDn" SBTS_IPIF

						add_param SBTS_IPIF "interfaceDN" SBTS_ETHSVC JOIN "/ETHIF-1/VLANIF-" JOIN ivifId
						add_param SBTS_IPIF "ipMtu" "1500"
						if ( param_exist FL_IEIF "mtu" ) add_param SBTS_IPIF "ipMtu" get_param FL_IEIF "mtu"

						if ( param_exist FL_IVIF "localIpAddr" )
							begin
								define "localIpAddr" get_param FL_IVIF "localIpAddr"

								if localIpAddr != "0.0.0.0"
									begin
										define "SBTS_IPADDRESS" SBTS_IPIF JOIN "/IPADDRESSV4-1"

										add_object SBTS_IPADDRESS
										
										add_param SBTS_IPADDRESS "ipAddressAllocationMethod" "MANUAL"
										add_param SBTS_IPADDRESS "localIpAddr" localIpAddr
										add_param SBTS_IPADDRESS "localIpPrefixLength" "0"
										if ( param_exist FL_IVIF "netmask" )
											begin
												define "netmask" get_param FL_IVIF "netmask"
												define "prefixLength" "0"
												if ( netmask == "255.255.255.255" ) define "prefixLength" "32"
												if ( netmask == "255.255.255.254" ) define "prefixLength" "31"
												if ( netmask == "255.255.255.252" ) define "prefixLength" "30"
												if ( netmask == "255.255.255.248" ) define "prefixLength" "29"
												if ( netmask == "255.255.255.240" ) define "prefixLength" "28"
												if ( netmask == "255.255.255.224" ) define "prefixLength" "27"
												if ( netmask == "255.255.255.192" ) define "prefixLength" "26"
												if ( netmask == "255.255.255.128" ) define "prefixLength" "25"
												if ( netmask == "255.255.255.0" ) define "prefixLength" "24"
												if ( netmask == "255.255.254.0" ) define "prefixLength" "23"
												if ( netmask == "255.255.252.0" ) define "prefixLength" "22"
												if ( netmask == "255.255.248.0" ) define "prefixLength" "21"
												if ( netmask == "255.255.240.0" ) define "prefixLength" "20"
												if ( netmask == "255.255.224.0" ) define "prefixLength" "19"
												if ( netmask == "255.255.192.0" ) define "prefixLength" "18"
												if ( netmask == "255.255.128.0" ) define "prefixLength" "17"
												if ( netmask == "255.255.0.0" ) define "prefixLength" "16"
												if ( netmask == "255.254.0.0" ) define "prefixLength" "15"
												if ( netmask == "255.252.0.0" ) define "prefixLength" "14"
												if ( netmask == "255.248.0.0" ) define "prefixLength" "13"
												if ( netmask == "255.240.0.0" ) define "prefixLength" "12"
												if ( netmask == "255.224.0.0" ) define "prefixLength" "11"
												if ( netmask == "255.192.0.0" ) define "prefixLength" "10"
												if ( netmask == "255.128.0.0" ) define "prefixLength" "9"
												if ( netmask == "255.0.0.0" ) define "prefixLength" "8"
												if ( netmask == "254.0.0.0" ) define "prefixLength" "7"
												if ( netmask == "252.0.0.0" ) define "prefixLength" "6"
												if ( netmask == "248.0.0.0" ) define "prefixLength" "5"
												if ( netmask == "240.0.0.0" ) define "prefixLength" "4"
												if ( netmask == "224.0.0.0" ) define "prefixLength" "3"
												if ( netmask == "192.0.0.0" ) define "prefixLength" "2"
												if ( netmask == "128.0.0.0" ) define "prefixLength" "1"
												if ( netmask == "0.0.0.0" ) define "prefixLength" "0"
												add_param SBTS_IPADDRESS "localIpPrefixLength" prefixLength
											end
									end
							end

						if ( param_exist FL_IVIF "localIpv6Addr" )
							begin
								define "localIpv6Addr" get_param FL_IVIF "localIpv6Addr"

								if localIpv6Addr != "0:0:0:0:0:0:0:0" && localIpv6Addr != "::"
									begin
										define "SBTS_IPADDRESSV6" SBTS_IPIF JOIN "/IPADDRESSV6-1"
										add_object SBTS_IPADDRESSV6 
										add_param SBTS_IPADDRESSV6 "localIpAddr" localIpv6Addr
										if ( param_exist FL_IEIF "localIpv6PrefixLength" ) add_param SBTS_IPADDRESSV6 "localIpPrefixLength" get_param FL_IVIF "localIpv6PrefixLength"
										add_param SBTS_IPADDRESSV6 "ipAddressAllocationMethod" "MANUAL"				
									end
							end

						# FSTSCH
						if ( param_exist FL_IEIF "trafficPathShapingEnable" )
							if ( get_param FL_IEIF "trafficPathShapingEnable" ) == "TPS_PATH"
								begin
									define "FSTSCH_COUNT" FSTSCH_COUNT + 1
									define "SBTS_FSTSCH" SBTS_QOS JOIN "/FSTSCH-" JOIN FSTSCH_COUNT
									add_object SBTS_FSTSCH
									
									add_list SBTS_FSTSCH "ipIfDN"
									add_param SBTS_FSTSCH "ipIfDN.0" SBTS_IPIF
									add_param SBTS_FSTSCH "sbs" "4000"
									add_param SBTS_FSTSCH "scdschWfqWeight" "1000"
									add_param SBTS_FSTSCH "sir" "1000000"
									add_param SBTS_FSTSCH "spShapingRate" "1000000"
									add_param SBTS_FSTSCH "userLabel" "Ethernet of VLAN"
									
									if ( param_exist FL_IVIF "sbs" ) add_param SBTS_FSTSCH "sbs" get_param FL_IVIF "sbs"
									if ( param_exist FL_IVIF "sir" ) add_param SBTS_FSTSCH "sir" get_param FL_IVIF "sir"
									if ( param_exist FL_IVIF "sir" ) add_param SBTS_FSTSCH "spShapingRate" get_param FL_IVIF "sir"
									if ( param_exist FL_IVIF "wfqSchedQueueWeight" ) add_param SBTS_FSTSCH "scdschWfqWeight" get_param FL_IVIF "wfqSchedQueueWeight"
									
									add_list SBTS_FSTSCH "wfqWeightList"
									add_complex_param SBTS_FSTSCH "wfqWeightList.0"
									add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" "10"
									add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" "100"
									add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" "1000"
									add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" "10000"
									add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" "1"
									
									for_objects "FTM/IPNO/QOS"
										begin
											define "FL_QOS" $current_dist_name
											if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1"
											if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2"
											if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3"
											if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4"
											if ( param_exist FL_QOS "perHopBehaviourWeightList.0.bestEffort" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" get_param FL_QOS "perHopBehaviourWeightList.0.bestEffort"
										end
								end

						if ( param_exist FL_IEIF "trafficPathShapingEnable" )
							if ( get_param FL_IEIF "trafficPathShapingEnable" ) == "TPS_WFQ"
								begin
								
									# No IPIF for IEIF
									if ( objects_count SBTS_QOS JOIN "/FSTSCH" ) == 0
										begin
											# FSTSCH
											define "FSTSCH_COUNT" FSTSCH_COUNT + 1
											define "SBTS_FSTSCH" SBTS_QOS JOIN "/FSTSCH-" JOIN FSTSCH_COUNT
											add_object SBTS_FSTSCH
											
											add_list SBTS_FSTSCH "ipIfDN"
											add_param SBTS_FSTSCH "sbs" "4000"
											add_param SBTS_FSTSCH "scdschWfqWeight" "1000"
											add_param SBTS_FSTSCH "sir" "1000000"
											add_param SBTS_FSTSCH "spShapingRate" "1000000"
											
											if ( param_exist FL_IEIF "sbsTotal" ) add_param SBTS_FSTSCH "sbs" get_param FL_IEIF "sbsTotal"
											if ( param_exist FL_IEIF "sirTotal" ) add_param SBTS_FSTSCH "sir" get_param FL_IEIF "sirTotal"
											if ( param_exist FL_IEIF "sirTotal" ) add_param SBTS_FSTSCH "spShapingRate" get_param FL_IEIF "sirTotal"
											add_param SBTS_FSTSCH "userLabel" "Ethernet"
											
											add_list SBTS_FSTSCH "wfqWeightList"
											add_complex_param SBTS_FSTSCH "wfqWeightList.0"
											add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" "10"
											add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" "100"
											add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" "1000"
											add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" "10000"
											add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" "1"
											
											for_objects "FTM/IPNO/QOS"
												begin
													define "FL_QOS" $current_dist_name
													if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1"
													if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2"
													if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3"
													if ( param_exist FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" get_param FL_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4"
													if ( param_exist FL_QOS "perHopBehaviourWeightList.0.bestEffort" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" get_param FL_QOS "perHopBehaviourWeightList.0.bestEffort"
												end
										end
								
									define "index" 0
									for_list SBTS_FSTSCH "ipIfDN"
										begin
											define "index" index + 1
										end
									add_param SBTS_FSTSCH "ipIfDN." JOIN index SBTS_IPIF
								end
					end
			end
	end


#####IPNO/IPIF + IPIF/IPADDRESSV4 + IPIF/IPADDRESSV6 + IPNO/QOS/FSTSCH#####
# 2. Search for all virtual IP address (C/M/U/S plane IP address not matching any interface address
for_objects "FTM/IPNO"
	begin
		define "FL_IPNO" $current_dist_name
		define "IPADDRESSV4_COUNT" 0
		define "IPADDRESSV6_COUNT" 0
		define "IPIF_CREATED" "false"
# Ioan Harangus PR268616
		for_range 0 6
			begin
				if ( $current_index == 0 ) begin define "ipAddress" "cPlaneIpAddress" define "IPADDR_FORMAT" "v4" end
				if ( $current_index == 1 ) begin define "ipAddress" "mPlaneIpAddress" define "IPADDR_FORMAT" "v4" end
				if ( $current_index == 2 ) begin define "ipAddress" "sPlaneIpAddress" define "IPADDR_FORMAT" "v4" end
				if ( $current_index == 3 ) begin define "ipAddress" "uPlaneIpAddress" define "IPADDR_FORMAT" "v4" end
				if ( $current_index == 4 ) begin define "ipAddress" "cPlaneIpv6Address" define "IPADDR_FORMAT" "v6" end
				if ( $current_index == 5 ) begin define "ipAddress" "uPlaneIpv6Address" define "IPADDR_FORMAT" "v6" end
				define "UNIQUE" "true"
# Ioan Harangus PR268616				
				if param_exist FL_IPNO ipAddress
					begin
						define "localIpAddr" get_param FL_IPNO ipAddress
						
						if localIpAddr != "0.0.0.0" && localIpAddr != "0:0:0:0:0:0:0:0" && localIpAddr != "::"
							begin
								for_objects "IPADDRESSV4"
									begin
										if ( get_param $current_dist_name "localIpAddr" ) == localIpAddr define "UNIQUE" "false"
										
									end
							
								for_objects "IPADDRESSV6"
									begin
										define "localIpAddr" replace localIpAddr "a" "A" flags "g"
										define "localIpAddr" replace localIpAddr "b" "B" flags "g"
										define "localIpAddr" replace localIpAddr "c" "C" flags "g"
										define "localIpAddr" replace localIpAddr "d" "D" flags "g"
										define "localIpAddr" replace localIpAddr "e" "E" flags "g"
										define "localIpAddr" replace localIpAddr "f" "F" flags "g"
										define "localIpAddr1" get_param $current_dist_name "localIpAddr"
										define "localIpAddr1" replace localIpAddr1 "a" "A" flags "g"
										define "localIpAddr1" replace localIpAddr1 "b" "B" flags "g"
										define "localIpAddr1" replace localIpAddr1 "c" "C" flags "g"
										define "localIpAddr1" replace localIpAddr1 "d" "D" flags "g"
										define "localIpAddr1" replace localIpAddr1 "e" "E" flags "g"
										define "localIpAddr1" replace localIpAddr1 "f" "F" flags "g"
										if localIpAddr1 == localIpAddr define "UNIQUE" "false"
										
									end
							
								if ( UNIQUE == "true" )
									begin
										if ( IPIF_CREATED == "false" )
											begin
												define "IPIF_CREATED" "true"
												
												define "IPIF_COUNT" IPIF_COUNT + 1
												define "SBTS_IPIF" SBTS_IPNO JOIN "/IPIF-" JOIN IPIF_COUNT
												add_object SBTS_IPIF
												add_param SBTS_IPIF "interfaceDN" "virtual"
											end
																			
		# Ioan Harangus PR268616
										define "SBTS_IPADDRESS" ""
										if IPADDR_FORMAT == "v4"
											begin
												define "IPADDRESSV4_COUNT" IPADDRESSV4_COUNT + 1
												define "SBTS_IPADDRESS" SBTS_IPIF JOIN "/IPADDRESSV4-" JOIN IPADDRESSV4_COUNT
											end
										if IPADDR_FORMAT == "v6"
											begin
												define "IPADDRESSV6_COUNT" IPADDRESSV6_COUNT + 1
												define "SBTS_IPADDRESS" SBTS_IPIF JOIN "/IPADDRESSV6-" JOIN IPADDRESSV6_COUNT
											end
										add_object SBTS_IPADDRESS
										
										add_param SBTS_IPADDRESS "ipAddressAllocationMethod" "MANUAL"
										add_param SBTS_IPADDRESS "localIpAddr" localIpAddr
										add_param SBTS_IPADDRESS "localIpPrefixLength" "32"
									end
							end
					end
			end		
	end


#####IPAPP#####
define "SBTS_IPAPP" SBTS_TNL JOIN "/IPAPP-1"
add_object SBTS_IPAPP

for_objects "FTM/IPNO"
	begin
		define "FL_IPNO" $current_dist_name
		if ( param_exist FL_IPNO "twampFlag" )
			begin
				copy_list FL_IPNO "twampFlag" SBTS_IPAPP "twampReflectorConfig"
				for_list SBTS_IPAPP "twampReflectorConfig"
					begin
						define "twampReflectorConfig_PREFIX" "twampReflectorConfig." JOIN $current_index JOIN "."
						if ( param_exist SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "twampReflFlag" )
							begin
								add_param SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "twampReflectorEnabled" get_param SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "twampReflFlag"
								del_param SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "twampReflFlag"
							end
						if ( param_exist SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "twampIpAddress" )
							begin
								define "targetIpAddr" get_param SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "twampIpAddress"
								for_objects "IPADDRESSV4"
									begin
										define "currentIpAddr" get_param $current_dist_name "localIpAddr"
										if ( currentIpAddr == targetIpAddr ) add_param SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "twampReflectorLocalIpAddressDN" $current_dist_name
									end
								del_param SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "twampIpAddress"
							end
						if ( param_exist SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "udpEchoFlag" )
							begin
								add_param SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "twampReflectorUdpEchoEnabled" get_param SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "udpEchoFlag"
								del_param SBTS_IPAPP twampReflectorConfig_PREFIX JOIN "udpEchoFlag"
							end
					end
				if ( param_exist FL_IPNO "twampMessageRate" ) add_param SBTS_IPAPP "twampSenderMessageRate" get_param FL_IPNO "twampMessageRate"
			end
	end

#####IPAPP/BFD#####
define "BFDGRP_COUNT" 1
for_objects "FTM/IPNO/BFD"
	begin
		define "FL_BFD" $current_dist_name

		if ( param_exist FL_BFD "bfdSourceIpAddr" ) && not ( ( get_param FL_BFD "bfdSourceIpAddr" ) == "0.0.0.0" )
			if ( param_exist FL_BFD "bfdDestAddress" ) && not ( ( get_param FL_BFD "bfdDestAddress" ) == "0.0.0.0" )
				begin
					define "SBTS_BFD" SBTS_IPAPP JOIN "/BFD-" JOIN $current_BFD
					define "bfdId" $current_BFD
					add_object SBTS_BFD
					
					add_param SBTS_BFD "bfdActivation" "false"
					add_param SBTS_BFD "bfdAdminUp" "true"
					add_param SBTS_BFD "bfdDetectMult" "3"
					add_param SBTS_BFD "bfdDscp" "48"
					add_param SBTS_BFD "bfdType" "singleHopBFD"
					add_param SBTS_BFD "desMinTxInt" "500"
					add_param SBTS_BFD "reqMinRxInt" "500"
					
					if ( param_exist FL_BFD "bfdActivation" ) add_param SBTS_BFD "bfdActivation" get_param FL_BFD "bfdActivation"
					if ( param_exist FL_BFD "bfdAdminUp" ) add_param SBTS_BFD "bfdAdminUp" get_param FL_BFD "bfdAdminUp"
					if ( param_exist FL_BFD "bfdDestAddress" ) add_param SBTS_BFD "bfdDestIpAddr" get_param FL_BFD "bfdDestAddress"
					if ( param_exist FL_BFD "bfdDetectMult" ) add_param SBTS_BFD "bfdDetectMult" get_param FL_BFD "bfdDetectMult"
					if ( param_exist FL_BFD "bfdType" ) add_param SBTS_BFD "bfdType" get_param FL_BFD "bfdType"
					if ( param_exist FL_BFD "desMinTxInt" ) add_param SBTS_BFD "desMinTxInt" get_param FL_BFD "desMinTxInt"
					if ( param_exist FL_BFD "reqMinRxInt" ) add_param SBTS_BFD "reqMinRxInt" get_param FL_BFD "reqMinRxInt"
					
					define "value" get_param SBTS_BFD "bfdType"
					if ( value == "singleHopBFD" ) add_param SBTS_BFD "bfdSrcUdpPort" "3784"
					if ( value == "multiHopBFD" ) add_param SBTS_BFD "bfdSrcUdpPort" "4784"
					if ( param_exist FL_BFD "bfdSourceUdpPort" ) add_param SBTS_BFD "bfdSrcUdpPort" get_param FL_BFD "bfdSourceUdpPort"
					
					for_objects "FTM/IPNO/QOS"
						begin
							define "FL_QOS" $current_dist_name
							if ( param_exist FL_QOS "trafficTypesMap" )
								for_list FL_QOS "trafficTypesMap"
									begin
										define "trafficTypesMap_PREFIX" "trafficTypesMap." JOIN $current_index JOIN "."
										define "bfdToSearch" "BFD" JOIN bfdId
										if ( get_param FL_QOS trafficTypesMap_PREFIX JOIN "trafficType" ) == bfdToSearch
											if ( param_exist FL_QOS trafficTypesMap_PREFIX JOIN "dscp" ) add_param SBTS_BFD "bfdDscp" get_param FL_QOS trafficTypesMap_PREFIX JOIN "dscp"
									end
						end
					
					if ( param_exist FL_BFD "bfdSourceIpAddr" )
						begin
							define "targetIpAddr" get_param FL_BFD "bfdSourceIpAddr"
							for_objects "IPADDRESSV4"
								begin
									define "currentIpAddr" get_param $current_dist_name "localIpAddr"
									if ( currentIpAddr == targetIpAddr ) add_param SBTS_BFD "bfdSrcIpAddrDN" $current_dist_name
								end
						end
					
					#####IPAPP/BFDGRP#####
					if ( param_exist FL_BFD "bfdGrp" )
						if not ( param_exist FL_BFD "tempGrouped" )
							begin
								define "SBTS_BFDGRP" SBTS_IPAPP JOIN "/BFDGRP-" JOIN BFDGRP_COUNT
								add_object SBTS_BFDGRP
								define "BFDGRP_COUNT" BFDGRP_COUNT + 1
								
								define "bfd_COUNT" 0
								add_list SBTS_BFDGRP "bfdDN"
								add_param SBTS_BFDGRP "bfdDN." JOIN bfd_COUNT SBTS_BFD
								add_param FL_BFD "tempGrouped" "true"
								
								define "bfdGrp" get_param FL_BFD "bfdGrp"
								
								for_objects "FTM/IPNO/BFD"
									begin
										define "FL_BFD_INNER_LOOP" $current_dist_name
										if not ( param_exist FL_BFD_INNER_LOOP "tempGrouped" )
											if ( param_exist FL_BFD_INNER_LOOP "bfdGrp" )
												if ( get_param FL_BFD_INNER_LOOP "bfdGrp" ) == bfdGrp
													if ( param_exist FL_BFD_INNER_LOOP "bfdSourceIpAddr" ) && not ( ( get_param FL_BFD_INNER_LOOP "bfdSourceIpAddr" ) == "0.0.0.0" )
														if ( param_exist FL_BFD_INNER_LOOP "bfdDestAddress" ) && not ( ( get_param FL_BFD_INNER_LOOP "bfdDestAddress" ) == "0.0.0.0" )
															begin
																define "bfd_COUNT" bfd_COUNT + 1
																add_param SBTS_BFDGRP "bfdDN." JOIN bfd_COUNT SBTS_IPAPP JOIN "/BFD-" JOIN $current_BFD
																add_param FL_BFD_INNER_LOOP "tempGrouped" "true"
															end
									end
							end
					#####IPAPP/BFDGRP#####
				end
	end
#####IPAPP/BFD#####

#####IPAPP/IPSECC#####
for_objects "FTM/IPSECC"
	begin
		define "FL_IPSECC" $current_dist_name
		define "SBTS_IPSECC" SBTS_IPAPP JOIN "/IPSECC-1"
		add_object SBTS_IPSECC
		
		add_param SBTS_IPSECC "ikeDscp" "46"
		add_param SBTS_IPSECC "ipFragmentationAlgorithm" "Pre-fragmentation"
		add_param SBTS_IPSECC "ipSecEnabled" "false"
		
		if ( param_exist FL_IPSECC "ipSecEnabled" ) add_param SBTS_IPSECC "ipSecEnabled" get_param FL_IPSECC "ipSecEnabled"

        if ( param_exist FL_IPSECC "ipSecEmBypassCtrlIpAddr" )
            begin
                define "ipSecEmBypassCtrlIpAddr" get_param FL_IPSECC "ipSecEmBypassCtrlIpAddr"
                if ( ipSecEmBypassCtrlIpAddr ) != "0.0.0.0"
                    add_param SBTS_IPSECC "ipSecEmBypassCtrlIpAddr" get_param FL_IPSECC "ipSecEmBypassCtrlIpAddr"
            end

		if ( param_exist FL_IPSECC "ipSecEmBypassPingTimer" ) add_param SBTS_IPSECC "ipSecEmBypassPingTimer" get_param FL_IPSECC "ipSecEmBypassPingTimer"
	
		for_objects "FTM/IPNO/QOS"
			begin
				define "FL_QOS" $current_dist_name
				if ( param_exist FL_QOS "trafficTypesMap" )
					for_list FL_QOS "trafficTypesMap"
						begin
							define "trafficTypesMap_PREFIX" "trafficTypesMap." JOIN $current_index JOIN "."
							if ( get_param FL_QOS trafficTypesMap_PREFIX JOIN "trafficType" ) == "IKE"
								if ( param_exist FL_QOS trafficTypesMap_PREFIX JOIN "dscp" )
									add_param SBTS_IPSECC "ikeDscp" get_param FL_QOS trafficTypesMap_PREFIX JOIN "dscp"
						end
			end
		define "index" 0


		#####IPAPP/IPSECC/SECPOL + IPAPP/IPSECC/IKEP + IPAPP/IPSECC/IKEPROTGRP + IPAPP/IPSECC/IPSECP#####
		if ( param_exist FL_IPSECC "securityPolicies" )
			begin
				define "IKEP_COUNT" 1
				define "IKEPROTGRP_COUNT" 1
				define "IPSECP_COUNT" 1

				for_list FL_IPSECC "securityPolicies"
					begin
						define "securityPolicies_PREFIX" "securityPolicies." JOIN index JOIN "."
						
						define "SBTS_SECPOL" SBTS_IPSECC JOIN "/SECPOL-" JOIN ( $current_index + 1 )
                        add_object SBTS_SECPOL

                        if not ( param_exist SBTS_SECPOL "trafficSelectorList" )
                            begin
                                add_list SBTS_SECPOL "trafficSelectorList" 
                                add_complex_param SBTS_SECPOL "trafficSelectorList.0"
                            end

                        if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "localIpAddress" )
                            begin
                                add_param SBTS_SECPOL "trafficSelectorList.0.localIpAddress" get_param FL_IPSECC securityPolicies_PREFIX JOIN "localIpAddress"
                            end

                        if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "localIpPort" )
                            add_param SBTS_SECPOL "trafficSelectorList.0.localIpPort" get_param FL_IPSECC securityPolicies_PREFIX JOIN "localIpPort"

                        if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "protocol" )
                            add_param SBTS_SECPOL "trafficSelectorList.0.protocol" get_param FL_IPSECC securityPolicies_PREFIX JOIN "protocol"

                        if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "remoteIpAddress" )
                            add_param SBTS_SECPOL "trafficSelectorList.0.remoteIpAddress" get_param FL_IPSECC securityPolicies_PREFIX JOIN "remoteIpAddress"

                        if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "remoteIpPort" )
                            add_param SBTS_SECPOL "trafficSelectorList.0.remoteIpPort" get_param FL_IPSECC securityPolicies_PREFIX JOIN "remoteIpPort"

                        if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "localIpPrefixLength" )
                            add_param SBTS_SECPOL "trafficSelectorList.0.localIpPrefixLength" get_param FL_IPSECC securityPolicies_PREFIX JOIN "localIpPrefixLength"

                        if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "remoteIpPrefixLength" )
                            add_param SBTS_SECPOL "trafficSelectorList.0.remoteIpPrefixLength" get_param FL_IPSECC securityPolicies_PREFIX JOIN "remoteIpPrefixLength"

                        if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "ipSecStatus" )
                            begin
                                add_param SBTS_SECPOL "ipSecAction" get_param FL_IPSECC securityPolicies_PREFIX JOIN "ipSecStatus"
                            end
                        else
                            begin
                                add_param SBTS_SECPOL "ipSecAction" "PROTECT"
                            end

                        if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "policyNumber" )
                            begin
                                add_param SBTS_SECPOL "policyOrderNumber" ( ( get_param FL_IPSECC securityPolicies_PREFIX JOIN "policyNumber" ) + 1 )
                            end
                        else
                            add_param SBTS_SECPOL "policyOrderNumber" 0

                        if ( ( get_param SBTS_SECPOL "policyOrderNumber" ) > 65535 )
                            add_param SBTS_SECPOL "policyOrderNumber" "65535"	

                        define "index" index + 1

						# IKEP + IKEPROTGRP
						for_range 0 2
							begin
								if ( $current_index == 0 ) define "REMOTE" "remoteTunnelEndpoint"
								if ( $current_index == 1 ) define "REMOTE" "ipSecBkupTunRemoteEndpoint"
						
								if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "localTunnelEndpoint" ) && ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN REMOTE )
									begin
										define "localTunnelEndpoint" get_param FL_IPSECC securityPolicies_PREFIX JOIN "localTunnelEndpoint"
										define "remoteTunnelEndpoint" get_param FL_IPSECC securityPolicies_PREFIX JOIN REMOTE
										if not ( localTunnelEndpoint == "0.0.0.0" || remoteTunnelEndpoint == "0.0.0.0" )
											begin
												# check uniqueness of remoteTunnelEndpoint and localTunnelEndpoint
												define "unique" "true"
												define "targetIpAddr" localTunnelEndpoint
												define "IPADDRESSV4" ""
												for_objects "IPADDRESSV4"
													begin
														define "currentIpAddr" get_param $current_dist_name "localIpAddr"
														if ( currentIpAddr == targetIpAddr ) define "IPADDRESSV4" $current_dist_name
													end
												for_objects "TNL/IPAPP/IPSECC/IKEP"
													begin
														if ( param_exist $current_dist_name "localTunnelEndpointDN" )
															if ( get_param $current_dist_name "localTunnelEndpointDN" ) == IPADDRESSV4
																if ( get_param $current_dist_name "remoteTunnelEndpoint" ) == remoteTunnelEndpoint
																	begin
																		add_param SBTS_SECPOL "ikePDN" $current_dist_name
																		define "unique" "false"
																		define "SBTS_IKEP" $current_dist_name
																	end
													end
												
												if ( unique == "true" )
													begin
														# IKEP
														define "SBTS_IKEP" SBTS_IPSECC JOIN "/IKEP-" JOIN IKEP_COUNT
														add_object SBTS_IKEP
														add_param SBTS_SECPOL "ikePDN" SBTS_IKEP
														
														if not ( IPADDRESSV4 == "" )
                                                             add_param SBTS_IKEP "localTunnelEndpointDN" IPADDRESSV4

														add_param SBTS_IKEP "remoteTunnelEndpoint" remoteTunnelEndpoint

														if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "connectionEstablishmentMode" )
															add_param SBTS_IKEP "connectionEstablishmentMode" get_param FL_IPSECC securityPolicies_PREFIX JOIN "connectionEstablishmentMode"
														else
															add_param SBTS_IKEP "connectionEstablishmentMode" "INITIATOR_AND_RESPONDER"

														add_param SBTS_IKEP "dpdDelay" "10"
														add_param SBTS_IKEP "ikeDiffHellGrp" "DH2"
														add_param SBTS_IKEP "ikeEncryptionMethod" "ENC_AES_128_CBC_OR_3DES_192_CBC"

														if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "ikeMaxLifeTime" )
															add_param SBTS_IKEP "ikeMaxLifeTime" get_param FL_IPSECC securityPolicies_PREFIX JOIN "ikeMaxLifeTime"
														else
															add_param SBTS_IKEP "ikeMaxLifeTime" "86400"
														if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "ipsecPerfForwSecEnabled" )
															add_param SBTS_IKEP "ipsecPerfForwSecEnabled" get_param FL_IPSECC securityPolicies_PREFIX JOIN "ipsecPerfForwSecEnabled"
														else
															add_param SBTS_IKEP "ipsecPerfForwSecEnabled" "false"
														
														if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "dpddelay" )
                                                            add_param SBTS_IKEP "dpdDelay" get_param FL_IPSECC securityPolicies_PREFIX JOIN "dpddelay"

														if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "ikeDiffHellGrp" )
                                                            add_param SBTS_IKEP "ikeDiffHellGrp" get_param FL_IPSECC securityPolicies_PREFIX JOIN "ikeDiffHellGrp"

														if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "ikeEncryptionMethod" )
                                                            add_param SBTS_IKEP "ikeEncryptionMethod" get_param FL_IPSECC securityPolicies_PREFIX JOIN "ikeEncryptionMethod"

														define "IKEP_COUNT" IKEP_COUNT + 1
													end
													
												# IKEPROTGRP - assumption: bkup cannot exist without primary
												define "sameLocal" 0
												define "sameRemote" 0
												define "sameBkupRemote" 0

												for_objects "TNL/IPAPP/IPSECC/IKEPROTGRP"
													begin
														for_list $current_dist_name "ikePList"
															begin
																define "ikePList_PREFIX" "ikePList." JOIN $current_index JOIN "."
																if ( get_param $current_dist_name ikePList_PREFIX JOIN "role" ) == "PRIMARY"
																	begin
																		define "IKEP_REF" get_param $current_dist_name ikePList_PREFIX JOIN "ikePDN"
																		if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "remoteTunnelEndpoint" )
																			begin
																				define "value" get_param FL_IPSECC securityPolicies_PREFIX JOIN "remoteTunnelEndpoint"
																				if ( get_param IKEP_REF "localTunnelEndpointDN" ) == IPADDRESSV4 define "sameLocal" 1
																				if ( get_param IKEP_REF "remoteTunnelEndpoint" ) == value define "sameRemote" 1
																			end
																	end
																if ( get_param $current_dist_name ikePList_PREFIX JOIN "role" ) == "SECONDARY"
																	begin
																		define "IKEP_REF" get_param $current_dist_name ikePList_PREFIX JOIN "ikePDN"
																		if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "ipSecBkupTunRemoteEndpoint" )
																			begin
																				define "value" get_param FL_IPSECC securityPolicies_PREFIX JOIN "ipSecBkupTunRemoteEndpoint"
																				if ( get_param IKEP_REF "remoteTunnelEndpoint" ) == value define "sameBkupRemote" 1
																			end
																	end
															end
													end
												
												if not ( sameLocal * sameRemote * sameBkupRemote == 1 )
													begin
														
														if ( REMOTE == "remoteTunnelEndpoint" )
															begin
																define "SBTS_IKEPROTGRP" SBTS_IPSECC JOIN "/IKEPROTGRP-" JOIN IKEPROTGRP_COUNT
																define "IKEPROTGRP_COUNT" IKEPROTGRP_COUNT + 1
																add_object SBTS_IKEPROTGRP
																
																add_list SBTS_IKEPROTGRP "ikePList"
																add_complex_param SBTS_IKEPROTGRP "ikePList.0"
																add_param SBTS_IKEPROTGRP "ikePList.0.ikePDN" SBTS_IKEP
																add_param SBTS_IKEPROTGRP "ikePList.0.role" "PRIMARY"
																
																add_param SBTS_IKEPROTGRP "switchBackMode" "AUTO"
																add_param SBTS_IKEPROTGRP "switchTimeMax" "300"
																add_param SBTS_IKEPROTGRP "switchTimeMin" "300"
															end
														if ( REMOTE == "ipSecBkupTunRemoteEndpoint" )
															begin
																add_complex_param SBTS_IKEPROTGRP "ikePList.1"
																add_param SBTS_IKEPROTGRP "ikePList.1.ikePDN" SBTS_IKEP
																add_param SBTS_IKEPROTGRP "ikePList.1.role" "SECONDARY"
															end
													end

											end
									end
							end
						
						# IPSECP
						if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "antiReplayEnabled" ) && ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "antiReplayWindowSize" )
							if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "encryptionMethod" ) && ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "saMaxLifeTime" )
								begin
									# check uniqueness of antiReplayEnabled, antiReplayWindowSize, encryptionMethod, saMaxLifeTime
									define "unique" "true"
									define "antiReplayEnabled" get_param FL_IPSECC securityPolicies_PREFIX JOIN "antiReplayEnabled"
									define "antiReplayWindowSize" get_param FL_IPSECC securityPolicies_PREFIX JOIN "antiReplayWindowSize"
									define "encryptionMethod" get_param FL_IPSECC securityPolicies_PREFIX JOIN "encryptionMethod"
									define "saMaxLifeTime" get_param FL_IPSECC securityPolicies_PREFIX JOIN "saMaxLifeTime"
									
									for_objects "TNLSVC/TNL/IPAPP/IPSECC/IPSECP"
										begin
											if ( param_exist $current_dist_name "antiReplayWindowSize" )
												if ( get_param $current_dist_name "antiReplayWindowSize" ) == antiReplayWindowSize
													if ( get_param $current_dist_name "antiReplayEnabled" ) == antiReplayEnabled
														if ( get_param $current_dist_name "encryptionMethod" ) == encryptionMethod
															if ( get_param $current_dist_name "saMaxLifeTime" ) == saMaxLifeTime
																begin
																	add_param SBTS_SECPOL "ipSecPDN" $current_dist_name
																	define "unique" "false"
																end
										end
										
									if ( unique == "true" )
										begin
											define "SBTS_IPSECP" SBTS_IPSECC JOIN "/IPSECP-" JOIN IPSECP_COUNT
											add_object SBTS_IPSECP
											add_param SBTS_SECPOL "ipSecPDN" SBTS_IPSECP
											
											add_param SBTS_IPSECP "antiReplayEnabled" antiReplayEnabled
											add_param SBTS_IPSECP "antiReplayWindowSize" antiReplayWindowSize
											add_param SBTS_IPSECP "encryptionMethod" encryptionMethod
											add_param SBTS_IPSECP "saMaxLifeTime" saMaxLifeTime
											
											if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "extendedSequenceNumberMode" )
												add_param SBTS_IPSECP "extendedSequenceNumberMode" get_param FL_IPSECC securityPolicies_PREFIX JOIN "extendedSequenceNumberMode"
											else
												add_param SBTS_IPSECP "extendedSequenceNumberMode" "NORMAL_SEQUENCE"

											if ( param_exist FL_IPSECC securityPolicies_PREFIX JOIN "pfsDiffHellGrp" )
												begin
													define "value" get_param FL_IPSECC securityPolicies_PREFIX JOIN "pfsDiffHellGrp"
													if ( ( value == "DH2" ) || ( value == "DH14" ) )
													# PR265144 replace extendedSequenceNumberMode by pfsDiffHellGrp
														add_param SBTS_IPSECP "pfsDiffHellGrp" value
													else
														add_param SBTS_IPSECP "pfsDiffHellGrp" "Priority list: 1st DH14, 2nd DH2"
												end
											else
												add_param SBTS_IPSECP "pfsDiffHellGrp" "Priority list: 1st DH14, 2nd DH2"
											
											define "IPSECP_COUNT" IPSECP_COUNT + 1
										end
								end
					end
			end
		#####IPAPP/IPSECC/SECPOL + IPAPP/IPSECC/IKEP + IPAPP/IPSECC/IKEPROTGRP + IPAPP/IPSECC/IPSECP#####
	end
#####IPAPP/IPSECC#####

#####IPAPP/TWAMP#####
for_objects "FTM/IPNO/TWAMP"
	begin
		define "FL_TWAMP" $current_dist_name
		
		if ( param_exist FL_TWAMP "destIpAddress" ) && ( param_exist FL_TWAMP "sourceIpAddress" )
			begin
				define "destIpAddress" get_param FL_TWAMP "destIpAddress"
				define "sourceIpAddress" get_param FL_TWAMP "sourceIpAddress"
				
				if not ( destIpAddress == "" || sourceIpAddress == "" )
					if not ( destIpAddress == "0.0.0.0" || sourceIpAddress == "0.0.0.0" )
						begin
							define "SBTS_TWAMP" SBTS_IPAPP JOIN "/TWAMP-" JOIN $current_TWAMP
							add_object SBTS_TWAMP
							
							add_param SBTS_TWAMP "destIpAddress" destIpAddress
							add_param SBTS_TWAMP "sourceIpAddress" sourceIpAddress
							define "targetIpAddr" sourceIpAddress
							for_objects "IPADDRESSV4"
								begin
									define "currentIpAddr" get_param $current_dist_name "localIpAddr"
									if ( currentIpAddr == targetIpAddr ) add_param SBTS_TWAMP "sourceIpAddressDN" $current_dist_name
								end
							
							add_param SBTS_TWAMP "administrativeState" "locked"
							add_param SBTS_TWAMP "destPort" "5018"
							add_param SBTS_TWAMP "messageSize" "100"
							add_param SBTS_TWAMP "plrAlarmThreshold" "10000"
							add_param SBTS_TWAMP "rttAlarmThreshold" "1000000"
							add_param SBTS_TWAMP "twampDscp" "34"
							
							if ( param_exist FL_TWAMP "administrativeState" ) add_param SBTS_TWAMP "administrativeState" get_param FL_TWAMP "administrativeState"
							if ( param_exist FL_TWAMP "destPort" ) add_param SBTS_TWAMP "destPort" get_param FL_TWAMP "destPort"
							if ( param_exist FL_TWAMP "messageSize" ) add_param SBTS_TWAMP "messageSize" get_param FL_TWAMP "messageSize"
							if ( param_exist FL_TWAMP "plrAlarmThreshold" ) add_param SBTS_TWAMP "plrAlarmThreshold" get_param FL_TWAMP "plrAlarmThreshold"
							if ( param_exist FL_TWAMP "rttAlarmThreshold" ) add_param SBTS_TWAMP "rttAlarmThreshold" get_param FL_TWAMP "rttAlarmThreshold"
							if ( param_exist FL_TWAMP "dscp" ) add_param SBTS_TWAMP "twampDscp" get_param FL_TWAMP "dscp"
						end
			end
	end
#####IPAPP/TWAMP#####
#####IPAPP#####

#####PPTT#####
for_objects "FTM/PPTT"
	begin
		define "FL_PPTT" $current_dist_name
		define "ppttId" $current_PPTT
		define "X" replace ppttId "(.*)-(.*)" "$1"
		define "Y" replace ppttId "(.*)-(.*)" "$2"
		
		define "SBTS_PPTT" SBTS_TNL JOIN "/PPTT-" JOIN Y
		add_object SBTS_PPTT
		
		add_param SBTS_PPTT "administrativeState" "unlocked"
		add_param SBTS_PPTT "pdhLineType" "PDH_LINE_TYPE_MULTI_FRAME_G704"
		if ( Y > 8 ) define "Y" 8
		add_param SBTS_PPTT "interface" "FTIF_IF" JOIN Y
		
		if ( param_exist FL_PPTT "administrativeState" ) add_param SBTS_PPTT "administrativeState" get_param FL_PPTT "administrativeState"
		if ( param_exist FL_PPTT "pdhLineType" )
			begin
				define "value" get_param FL_PPTT "pdhLineType"
				if not ( value == "PDH_LINE_TYPE_DOUBLE_FRAME_G704" || value == "PDH_LINE_TYPE_MULTI_FRAME_G704" ) define "value" "PDH_LINE_TYPE_MULTI_FRAME_G704"
				add_param SBTS_PPTT "pdhLineType" value
			end
	end
#####PPTT#####

#####TRIGGER#####
for_objects "FTM/IPNO/BFD"
	begin
		define "FL_BFD" $current_dist_name

		if ( param_exist FL_BFD "bfdSourceIpAddr" ) && not ( ( get_param FL_BFD "bfdSourceIpAddr" ) == "0.0.0.0" )
			if ( param_exist FL_BFD "bfdDestAddress" ) && not ( ( get_param FL_BFD "bfdDestAddress" ) == "0.0.0.0" )
				begin
					define "SBTS_TRIGGER" SBTS_TNL JOIN "/TRIGGER-" JOIN $current_BFD
					add_object SBTS_TRIGGER
					
					add_param SBTS_TRIGGER "false2TrueDelay" "0"
					add_list SBTS_TRIGGER "itemList"
					add_complex_param SBTS_TRIGGER "itemList.0"
					add_param SBTS_TRIGGER "itemList.0.itemDN" SBTS_IPAPP JOIN "/BFD-" JOIN $current_BFD
					add_param SBTS_TRIGGER "logic" "OR"
					add_param SBTS_TRIGGER "true2FalseDelay" "0"
					
					if ( param_exist FL_IPNO "bfdHoldUpTime" ) add_param SBTS_TRIGGER "false2TrueDelay" get_param FL_IPNO "bfdHoldUpTime"
				end
	end
#####TRIGGER#####

for_objects "MRBTS/TNLSVC/TNL/IPAPP/IPSECC/SECPOL"
    begin
        define "secPolDn" $current_dist_name

        for_list secPolDn "trafficSelectorList"
            begin
                if ( param_exist secPolDn "trafficSelectorList." JOIN $current_index JOIN ".trafficSelectorListId" )
                    begin
						
					
                        define "trafficSelectorListIdValue" get_param  secPolDn "trafficSelectorList." JOIN $current_index JOIN ".trafficSelectorListId"

                        if ( trafficSelectorListIdValue != $current_SECPOL )
                            begin
								
                                del_param secPolDn "trafficSelectorList." JOIN $current_index
                            end
                    end
            
    

			if ( param_exist secPolDn "trafficSelectorList." JOIN $current_index JOIN ".trafficSelectorListId"   ) del_param secPolDn "trafficSelectorList." JOIN $current_index JOIN ".trafficSelectorListId"
			
			end
			
			if ( not param_exist $current_dist_name "trafficSelectorList" )
				begin
						add_list $current_dist_name "trafficSelectorList"
						add_complex_param $current_dist_name "trafficSelectorList.0"
						add_param $current_dist_name "trafficSelectorList.0.localIpPort" "-1"
						add_param $current_dist_name "trafficSelectorList.0.localIpPrefixLength" "0"
						add_param $current_dist_name "trafficSelectorList.0.protocol" "-1"
						add_param $current_dist_name "trafficSelectorList.0.remoteIpAddress" "0.0.0.0"
						add_param $current_dist_name "trafficSelectorList.0.remoteIpPort" "-1"
						add_param $current_dist_name "trafficSelectorList.0.remoteIpPrefixLength" "0"	
						add_param $current_dist_name "trafficSelectorList.0.localIpAddress" "0.0.0.0"
				end
			
	
	end					
	
#####IPRT#####
for_objects "FTM/IPNO/IPRT"
	begin
		define "FL_IPRT" $current_dist_name
		# Ioan Harangus PR268616 add && ( param_exist FL_IPRT "staticRoutes.0" )
		if ( param_exist FL_IPRT "staticRoutes" ) && ( param_exist FL_IPRT "staticRoutes.0" )
			begin
				define "SBTS_IPRT" SBTS_IPNO JOIN "/IPRT-" JOIN $current_IPRT
				add_object SBTS_IPRT
				
				copy_list FL_IPRT "staticRoutes" SBTS_IPRT "staticRoutes"
				
				for_list SBTS_IPRT "staticRoutes"
					begin
						define "staticRoutes_PREFIX" "staticRoutes." JOIN $current_index JOIN "."
						
						if ( param_exist SBTS_IPRT staticRoutes_PREFIX JOIN "netmask" )
							begin
								define "netmask" get_param SBTS_IPRT staticRoutes_PREFIX JOIN "netmask"
								define "prefixLength" "0"
								if ( netmask == "255.255.255.255" ) define "prefixLength" "32"
								if ( netmask == "255.255.255.254" ) define "prefixLength" "31"
								if ( netmask == "255.255.255.252" ) define "prefixLength" "30"
								if ( netmask == "255.255.255.248" ) define "prefixLength" "29"
								if ( netmask == "255.255.255.240" ) define "prefixLength" "28"
								if ( netmask == "255.255.255.224" ) define "prefixLength" "27"
								if ( netmask == "255.255.255.192" ) define "prefixLength" "26"
								if ( netmask == "255.255.255.128" ) define "prefixLength" "25"
								if ( netmask == "255.255.255.0" ) define "prefixLength" "24"
								if ( netmask == "255.255.254.0" ) define "prefixLength" "23"
								if ( netmask == "255.255.252.0" ) define "prefixLength" "22"
								if ( netmask == "255.255.248.0" ) define "prefixLength" "21"
								if ( netmask == "255.255.240.0" ) define "prefixLength" "20"
								if ( netmask == "255.255.224.0" ) define "prefixLength" "19"
								if ( netmask == "255.255.192.0" ) define "prefixLength" "18"
								if ( netmask == "255.255.128.0" ) define "prefixLength" "17"
								if ( netmask == "255.255.0.0" ) define "prefixLength" "16"
								if ( netmask == "255.254.0.0" ) define "prefixLength" "15"
								if ( netmask == "255.252.0.0" ) define "prefixLength" "14"
								if ( netmask == "255.248.0.0" ) define "prefixLength" "13"
								if ( netmask == "255.240.0.0" ) define "prefixLength" "12"
								if ( netmask == "255.224.0.0" ) define "prefixLength" "11"
								if ( netmask == "255.192.0.0" ) define "prefixLength" "10"
								if ( netmask == "255.128.0.0" ) define "prefixLength" "9"
								if ( netmask == "255.0.0.0" ) define "prefixLength" "8"
								if ( netmask == "254.0.0.0" ) define "prefixLength" "7"
								if ( netmask == "252.0.0.0" ) define "prefixLength" "6"
								if ( netmask == "248.0.0.0" ) define "prefixLength" "5"
								if ( netmask == "240.0.0.0" ) define "prefixLength" "4"
								if ( netmask == "224.0.0.0" ) define "prefixLength" "3"
								if ( netmask == "192.0.0.0" ) define "prefixLength" "2"
								if ( netmask == "128.0.0.0" ) define "prefixLength" "1"
								if ( netmask == "0.0.0.0" ) define "prefixLength" "0"
								add_param SBTS_IPRT staticRoutes_PREFIX JOIN "destinationIpPrefixLength" prefixLength
								del_param SBTS_IPRT staticRoutes_PREFIX JOIN "netmask"
							end
							
						if ( param_exist SBTS_IPRT staticRoutes_PREFIX JOIN "bfdId" )
							begin
								define "bfdId" get_param SBTS_IPRT staticRoutes_PREFIX JOIN "bfdId"
								if not ( bfdId == "0" )
									if ( objects_count SBTS_TNL JOIN "/TRIGGER-" JOIN bfdId ) == 1
										add_param SBTS_IPRT staticRoutes_PREFIX JOIN "triggerDN" SBTS_TNL JOIN "/TRIGGER-" JOIN bfdId
							
								del_param SBTS_IPRT staticRoutes_PREFIX JOIN "bfdId"
							end
					end
			end
		
		
		
	end
#####IPRT#####

#####IPRTV6#####
for_objects "FTM/IPNO/IPRTV6"
	begin
		define "FL_IPRTV6" $current_dist_name
		
		define "staticIpv6Routes_notEmpty" "false"
		for_list FL_IPRTV6 "staticIpv6Routes"
			begin
				define "staticIpv6Routes_notEmpty" "true"
			end

		if ( staticIpv6Routes_notEmpty == "true" )
			begin
				define "SBTS_IPRTV6" SBTS_IPNO JOIN "/IPRTV6-" JOIN $current_IPRTV6
				add_object SBTS_IPRTV6
				
				copy_list FL_IPRTV6 "staticIpv6Routes" SBTS_IPRTV6 "staticIpv6Routes"
				
				for_list SBTS_IPRTV6 "staticIpv6Routes"
					begin
						define "staticIpv6Routes_PREFIX" "staticIpv6Routes." JOIN $current_index JOIN "."
						
						if ( param_exist SBTS_IPRTV6 staticIpv6Routes_PREFIX JOIN "bfdId" )
							begin
								define "bfdId" get_param SBTS_IPRTV6 staticIpv6Routes_PREFIX JOIN "bfdId"
								if not ( bfdId == "0" )
									if ( objects_count SBTS_TNL JOIN "/TRIGGER-" JOIN bfdId ) == 1
										add_param SBTS_IPRTV6 staticIpv6Routes_PREFIX JOIN "triggerDN" SBTS_TNL JOIN "/TRIGGER-" JOIN bfdId
							
								del_param SBTS_IPRTV6 staticIpv6Routes_PREFIX JOIN "bfdId"
							end
					end
			end
		
		
		
	end
#####IPRT#####

#####RTPOL#####
for_objects "FTM/IPNO/RTPOL"
	begin
		define "FL_RTPOL" $current_dist_name
		define "SBTS_RTPOL" SBTS_IPNO JOIN "/RTPOL-" JOIN $current_RTPOL
		add_object SBTS_RTPOL
		
		copy_list FL_RTPOL "routingPolicies" SBTS_RTPOL "routingPolicies"
		for_list SBTS_RTPOL "routingPolicies"
			begin
				define "routingPolicies_PREFIX" "routingPolicies." JOIN $current_index JOIN "."
				if not ( param_exist SBTS_RTPOL routingPolicies_PREFIX JOIN "srcIpPrefixLength" ) add_param SBTS_RTPOL routingPolicies_PREFIX JOIN "srcIpPrefixLength" 0
				if ( param_exist SBTS_RTPOL routingPolicies_PREFIX JOIN "routingTablePtr" )
					begin
						define "value" get_param SBTS_RTPOL routingPolicies_PREFIX JOIN "routingTablePtr"
						define "value" replace value "(.*)/(.*)" "$2" flags "g"
						add_param SBTS_RTPOL routingPolicies_PREFIX JOIN "routingTableDN" SBTS_IPNO JOIN "/" JOIN value
						del_param SBTS_RTPOL routingPolicies_PREFIX JOIN "routingTablePtr"
					end
			end
		for_list SBTS_RTPOL "routingPolicies"
			begin
				define "routingPolicies_PREFIX" "routingPolicies." JOIN $current_index JOIN "."
				if ( param_exist SBTS_RTPOL routingPolicies_PREFIX JOIN "srcIPAddress" )
					begin	
						add_param SBTS_RTPOL routingPolicies_PREFIX JOIN "srcIpAddress" get_param SBTS_RTPOL routingPolicies_PREFIX JOIN "srcIPAddress"
						del_param SBTS_RTPOL routingPolicies_PREFIX JOIN "srcIPAddress"
					end
			end
	end
#####RTPOL#####

#####IPNO/MCAPP#####
for_objects "FTM/IPNO/MCAPP"
	begin
		define "FL_MCAPP" $current_dist_name
		define "SBTS_MCAPP" SBTS_IPNO JOIN "/MCAPP-1"
		
		# Derive SBTS IPIF from FTM/IPNO/MCAPP/usedLinkLayerIf
		if ( param_exist FL_MCAPP "usedLinkLayerIf" )
			begin
				define "FL_IF_RDN" get_param FL_MCAPP "usedLinkLayerIf"
				for_objects FL_IF_RDN
					begin
						define "FL_IF_DN" $current_dist_name
						if ( param_exist FL_IF_DN "sbtsIpifDn" )
							begin
								add_object SBTS_MCAPP
								add_param SBTS_MCAPP "ipIfDN" get_param FL_IF_DN "sbtsIpifDn"
							end
					end
			end
	end
#####IPNO/MCAPP#####

#####PMTNL#####
for_objects "FTM/PMTNL"
	begin
		define "FL_PMTNL" $current_dist_name
		define "SBTS_PMTNL" SBTS_TNL JOIN "/PMTNL-1"
		# assume there is at least 1 FL parameter to be migrated. no problem with empty PMTNL MO if ever.
		add_object SBTS_PMTNL
		
		if ( param_exist FL_PMTNL "lte_ETHIF_Stats_Interval" ) add_param SBTS_PMTNL "ethernetInterfaceStatisticsInterval" get_param FL_PMTNL "lte_ETHIF_Stats_Interval"
		if ( param_exist FL_PMTNL "lte_Ethernet_Link_Interval" ) add_param SBTS_PMTNL "ethernetLinkInterval" get_param FL_PMTNL "lte_Ethernet_Link_Interval"
		if ( param_exist FL_PMTNL "lte_IP_Filtering_Interval" ) add_param SBTS_PMTNL "ipFilteringInterval" get_param FL_PMTNL "lte_IP_Filtering_Interval"
		if ( param_exist FL_PMTNL "lte_VLAN_IP_Stats_Interval" ) add_param SBTS_PMTNL "ipInterfaceStatisticsInterval" get_param FL_PMTNL "lte_VLAN_IP_Stats_Interval"
		
		define "value" ""
		if ( param_exist FL_PMTNL "lte_PHB_Stats_Interval" )
			begin
				define "value" get_param FL_PMTNL "lte_PHB_Stats_Interval"
				add_param SBTS_PMTNL "ipPerHopBehaviourStatisticsInterval" value
			end
		if ( param_exist FL_PMTNL "lte_VLAN_PHB_Stats_Interval" )
			begin
				define "value2" get_param FL_PMTNL "lte_VLAN_PHB_Stats_Interval"
				if ( value == "" ) add_param SBTS_PMTNL "ipPerHopBehaviourStatisticsInterval" value2
				else
					begin
						if ( ( value == "disabled" ) || ( value2 == "disabled" ) )
							begin
								if ( value == "disabled" ) add_param SBTS_PMTNL "ipPerHopBehaviourStatisticsInterval" value2
								if ( value2 == "disabled" ) add_param SBTS_PMTNL "ipPerHopBehaviourStatisticsInterval" value
							end
						else
							begin
								define "numValue" replace value "min" ""
								define "numValue" convert_to_int numValue 10
								define "numValue2" replace value2 "min" ""
								define "numValue2" convert_to_int numValue2 10
								if ( numValue2 < numValue ) add_param SBTS_PMTNL "ipPerHopBehaviourStatisticsInterval" value2
							end
					end
			end
		
		if ( param_exist FL_PMTNL "lte_IPSec_Interval" ) add_param SBTS_PMTNL "ipSecStatisticsInterval" get_param FL_PMTNL "lte_IPSec_Interval"

		define "value" ""
		if ( param_exist FL_PMTNL "lte_IPv4_Stats_Interval" ) 
			begin
				define "value" get_param FL_PMTNL "lte_IPv4_Stats_Interval"
				add_param SBTS_PMTNL "ipV4InterfaceStatisticsInterval" value
			end
		if ( param_exist FL_PMTNL "lte_VLAN_IPv4_Stats_Interval" ) 
			begin
				define "value2" get_param FL_PMTNL "lte_VLAN_IPv4_Stats_Interval"
				if ( value == "" ) add_param SBTS_PMTNL "ipV4InterfaceStatisticsInterval" value2
				else
					begin
						if ( ( value == "disabled" ) || ( value2 == "disabled" ) )
							begin
								if ( value == "disabled" ) add_param SBTS_PMTNL "ipV4InterfaceStatisticsInterval" value2
								if ( value2 == "disabled" ) add_param SBTS_PMTNL "ipV4InterfaceStatisticsInterval" value
							end
						else
							begin
								define "numValue" replace value "min" ""
								define "numValue" convert_to_int numValue 10
								define "numValue2" replace value2 "min" ""
								define "numValue2" convert_to_int numValue2 10
								if ( numValue2 < numValue ) add_param SBTS_PMTNL "ipV4InterfaceStatisticsInterval" value2
							end
					end
			end

		define "value" ""
		if ( param_exist FL_PMTNL "lte_IPv6_Stats_Interval" )
			begin
				define "value" get_param FL_PMTNL "lte_IPv6_Stats_Interval"
				add_param SBTS_PMTNL "ipV6InterfaceStatisticsInterval" value
			end
		if ( param_exist FL_PMTNL "lte_VLAN_IPv6_Stats_Interval" )
			begin
				define "value2" get_param FL_PMTNL "lte_VLAN_IPv6_Stats_Interval"
				if ( value == "" ) add_param SBTS_PMTNL "ipV6InterfaceStatisticsInterval" value2
				else
					begin
						if ( ( value == "disabled" ) || ( value2 == "disabled" ) )
							begin
								if ( value == "disabled" ) add_param SBTS_PMTNL "ipV6InterfaceStatisticsInterval" value2
								if ( value2 == "disabled" ) add_param SBTS_PMTNL "ipV6InterfaceStatisticsInterval" value
							end
						else
							begin
								define "numValue" replace value "min" ""
								define "numValue" convert_to_int numValue 10
								define "numValue2" replace value2 "min" ""
								define "numValue2" convert_to_int numValue2 10
								if ( numValue2 < numValue ) add_param SBTS_PMTNL "ipV6InterfaceStatisticsInterval" value2
							end
					end
			end
		

		define "value" ""
		if ( param_exist FL_PMTNL "lte_IPv6_PHB_Stats_Interval" )
			begin
				define "value" get_param FL_PMTNL "lte_IPv6_PHB_Stats_Interval"
				add_param SBTS_PMTNL "ipV6PerHopBehaviourStatisticsInterval" value
			end
		if ( param_exist FL_PMTNL "lte_VLAN_IPv6_PHB_Stats_Interval" )
			begin
				define "value2" get_param FL_PMTNL "lte_VLAN_IPv6_PHB_Stats_Interval"
				if ( value == "" ) add_param SBTS_PMTNL "ipV6PerHopBehaviourStatisticsInterval" value2
				else
					begin
						if ( ( value == "disabled" ) || ( value2 == "disabled" ) )
							begin
								if ( value == "disabled" ) add_param SBTS_PMTNL "ipV6PerHopBehaviourStatisticsInterval" value2
								if ( value2 == "disabled" ) add_param SBTS_PMTNL "ipV6PerHopBehaviourStatisticsInterval" value
							end
						else
							begin
								define "numValue" replace value "min" ""
								define "numValue" convert_to_int numValue 10
								define "numValue2" replace value2 "min" ""
								define "numValue2" convert_to_int numValue2 10
								if ( numValue2 < numValue ) add_param SBTS_PMTNL "ipV6PerHopBehaviourStatisticsInterval" value2
							end
					end
			end
		
		if ( param_exist FL_PMTNL "lte_TWAMP_Stats_Interval" ) add_param SBTS_PMTNL "twampStatisticsInterval" get_param FL_PMTNL "lte_TWAMP_Stats_Interval"
		if ( param_exist FL_PMTNL "lte_VLAN_Stats_Interval" ) add_param SBTS_PMTNL "vlanStatisticsInterval" get_param FL_PMTNL "lte_VLAN_Stats_Interval"

		if ( param_exist FL_PMTNL "lte_IPSec_SA_Stats_interval" ) add_param SBTS_PMTNL "ipSecSaStatisticsInterval" get_param FL_PMTNL "lte_IPSec_SA_Stats_interval"
	end

#####PMTNL#####

for_branch SBTS_TNLSVC
	begin
		set_operation $current_dist_name "create"
		set_version $current_dist_name "TNL17_1610_001"
		set_adaptation $current_dist_name "com.nokia.srbts.tnl"
	end

#for_branch LTE_MRBTS
#	del_object $current_dist_name
	
#######################################################################################
