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

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

if ( objects_count "WBTS/MRBTS" ) == 0 abort_file


for_objects "WBTS/MRBTS"
	begin
		define "WBTS_MRBTS" $current_dist_name
		define "newMrbtsRoot" "MRBTS-" JOIN $current_MRBTS
		for_objects "MRBTS/BTSSCW"
			if ( param_exist $current_dist_name "btsConfiguration" )
				if ( get_param $current_dist_name "btsConfiguration" ) >= 0 && ( get_param $current_dist_name "btsConfiguration" ) <= 1048575
					define "newMrbtsRoot" "MRBTS-" JOIN get_param $current_dist_name "btsConfiguration"
	end
	
if not ( ( get_version WBTS_MRBTS ) == "WBTS17" || ( get_version WBTS_MRBTS ) == "WBTS18" )
	begin
		abort_file
	end

define "SBTS_TNLSVC" newMrbtsRoot 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 "WBTS_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 WBTS_L2SWI "enableLayer2Switching" )
		begin
			add_param SBTS_L2SWI "l2QoSEnabled" get_param WBTS_L2SWI "enableLayer2Switching"
			add_param SBTS_L2SWI "l2SwitchingEnabled" get_param WBTS_L2SWI "enableLayer2Switching"
		end
	if ( param_exist WBTS_L2SWI "l2PriorityQueueWeight5" ) add_param SBTS_L2SWI "l2WeightAF1" get_param WBTS_L2SWI "l2PriorityQueueWeight5"
	if ( param_exist WBTS_L2SWI "l2PriorityQueueWeight4" ) add_param SBTS_L2SWI "l2WeightAF2" get_param WBTS_L2SWI "l2PriorityQueueWeight4"
	if ( param_exist WBTS_L2SWI "l2PriorityQueueWeight3" ) add_param SBTS_L2SWI "l2WeightAF3" get_param WBTS_L2SWI "l2PriorityQueueWeight3"
	if ( param_exist WBTS_L2SWI "l2PriorityQueueWeight2" ) add_param SBTS_L2SWI "l2WeightAF4" get_param WBTS_L2SWI "l2PriorityQueueWeight2"
	if ( param_exist WBTS_L2SWI "l2PriorityQueueWeight6" ) add_param SBTS_L2SWI "l2WeightBE" get_param WBTS_L2SWI "l2PriorityQueueWeight6"
	if ( param_exist WBTS_L2SWI "priorityQueueNonIP" )
		begin
			define "value" get_param WBTS_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 WBTS_L2SWI "qosClassification" ) add_param SBTS_L2SWI "qosClassificationCriteria" get_param WBTS_L2SWI "qosClassification"
	if ( param_exist WBTS_L2SWI "vlanAwareSwitch" ) add_param SBTS_L2SWI "vlanAwarenessEnabled" get_param WBTS_L2SWI "vlanAwareSwitch"
	
	#####L2SWI/DSCPTOQMAP#####
	if ( param_exist WBTS_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 WBTS_L2SWI "dscpMap"
				begin
					define "WBTS_L2SWI_dscpMap_PREFIX" "dscpMap." JOIN $current_index JOIN "."
					if ( param_exist WBTS_L2SWI WBTS_L2SWI_dscpMap_PREFIX JOIN "dscp" ) && ( param_exist WBTS_L2SWI WBTS_L2SWI_dscpMap_PREFIX JOIN "priorityQueue" )
					begin
						define "dscp" get_param WBTS_L2SWI WBTS_L2SWI_dscpMap_PREFIX JOIN "dscp"
						define "queue" get_param WBTS_L2SWI WBTS_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 WBTS_L2SWI "portDefaultVlanId" ) add_param SBTS_IBRGPRT "portDefaultVlanId" get_param WBTS_L2SWI "portDefaultVlanId"
	if ( param_exist WBTS_L2SWI "portDefaultPriority" ) add_param SBTS_IBRGPRT "portDefaultVlanPriority" get_param WBTS_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 WBTS_L2SWI "priorityQueuePcp" JOIN $current_index )
				begin
					define "value" get_param WBTS_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 "WBTS_IEIF" $current_dist_name
		if ( param_exist WBTS_IEIF "trafficPathShapingEnable" )
			begin
				define "value" get_param WBTS_IEIF "trafficPathShapingEnable"
				if ( value == "TPS_OFF" || value == "TPS_PATH" )
					begin
						add_param SBTS_ETHIF "sbsTotal" "4000"
						if ( param_exist WBTS_IEIF "shapedBandwidth" ) add_param SBTS_ETHIF "sirTotal" get_param WBTS_IEIF "shapedBandwidth"
					end
				if ( value == "TPS_WFQ" )
					begin
						if ( param_exist WBTS_IEIF "sbsTotal" ) add_param SBTS_ETHIF "sbsTotal" get_param WBTS_IEIF "sbsTotal"
						if ( param_exist WBTS_IEIF "sirTotal" ) add_param SBTS_ETHIF "sirTotal" get_param WBTS_IEIF "sirTotal"
					end
			end
		if ( param_exist WBTS_IEIF "upperLayerShaping" )
			begin
				define "value" get_param WBTS_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 "WBTS_IVIF" $current_dist_name
		define "ivifId" $current_IVIF
		if ( param_exist WBTS_IVIF "vlanId" )
			begin
				if ( get_param WBTS_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 WBTS_IVIF "vlanId"
					end
					#####VLANIF#####
			end
	end

# for BRGPRT (only for ETHLK with administrativeState with value unlocked)
define "ETHLK_COUNT" 1
for_objects "FTM/ETHLK"
begin
	define "WBTS_ETHLK" $current_dist_name
	define "ethlkId" $current_ETHLK
	define "X" replace ethlkId "(.*)-(.*)" "$1"
	define "Y" replace ethlkId "(.*)-(.*)" "$2"

	if ( param_exist WBTS_ETHLK "administrativeState" ) 
		if ( get_param WBTS_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 WBTS_ETHLK "administrativeState" ) add_param SBTS_ETHLK "administrativeState" get_param WBTS_ETHLK "administrativeState"
				if ( param_exist WBTS_ETHLK "synchEMode" )
					begin
						define "value" get_param WBTS_ETHLK "synchEMode"
						if ( value == "SEM_AUTO" ) add_param SBTS_ETHLK "clockMode" "AUTODETECT"
						if ( value == "SEM_MASTER" ) add_param SBTS_ETHLK "clockMode" "MANUAL MASTER"
						if ( value == "SEM_SLAVE" ) add_param SBTS_ETHLK "clockMode" "MANUAL SLAVE"
					end
				add_param SBTS_ETHLK "connectorLabel" "EIF" JOIN Y
				if ( param_exist WBTS_ETHLK "l2IngressRate" )
					begin
						define "value" get_param WBTS_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" newMrbtsRoot JOIN "/EQM-1/APEQM-1/CABINET-1/SMOD-1"
				else
					add_param SBTS_ETHLK "modDN" newMrbtsRoot JOIN "/EQM-1/APEQM-1/CABINET-1/SMOD-1/TRMOD-1"
				if ( param_exist WBTS_ETHLK "speedAndDuplex" )
					begin
						define "value" get_param WBTS_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 WBTS_ETHLK "acceptableFrameTypes" ) add_param SBTS_BRGPRT "acceptableFrameTypes" get_param WBTS_ETHLK "acceptableFrameTypes"
				if ( param_exist WBTS_ETHLK "flushFdbOnLos" ) add_param SBTS_BRGPRT "flushFdbOnLos" get_param WBTS_ETHLK "flushFdbOnLos"
				if ( param_exist WBTS_ETHLK "l2ShaperRate" )
					begin
						define "value" get_param WBTS_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 WBTS_ETHLK "l2BurstSize" )
						add_param SBTS_BRGPRT "l2BurstSize" ( ( get_param SBTS_BRGPRT "l2ShaperRate" ) * ( get_param WBTS_ETHLK "l2BurstSize" ) / 8 )
				if ( param_exist WBTS_ETHLK "l2VlanIdList" )
					begin
						copy_list WBTS_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 WBTS_ETHLK "portDefaultVlanId" ) add_param SBTS_BRGPRT "portDefaultVlanId" get_param WBTS_ETHLK "portDefaultVlanId"
				if ( param_exist WBTS_ETHLK "portDefaultPriority" ) add_param SBTS_BRGPRT "portDefaultVlanPriority" get_param WBTS_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 "WBTS_QOS" $current_dist_name
		if ( param_exist WBTS_QOS "trafficTypesMap" )
			for_list WBTS_QOS "trafficTypesMap"
				begin
					define "trafficTypesMap_PREFIX" "trafficTypesMap." JOIN $current_index JOIN "."
					if ( get_param WBTS_QOS trafficTypesMap_PREFIX JOIN "trafficType" ) == "ICMP"
						if ( param_exist WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList" )
							begin
								define "value" get_param WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList"
								define "value" "" JOIN value
								define "value" replace value "^([0-9A-Za-z]*),{0,1}(.*)" "$1" flags "g"
								add_param SBTS_IPNO "icmpDscp" value
							end
				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"
	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 "WBTS_QOS" $current_dist_name
		if ( param_exist WBTS_QOS "trafficTypesMap" )
			for_list WBTS_QOS "trafficTypesMap"
				begin
					define "trafficTypesMap_PREFIX" "trafficTypesMap." JOIN $current_index JOIN "."
					if ( param_exist WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList" )
						begin
							# get first element from list
							define "dscp" get_param WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList"
							define "dscp" "" JOIN dscp
							define "dscp" replace dscp "^([0-9A-Za-z]*),{0,1}(.*)" "$1" flags "g"
							
							if ( param_exist WBTS_QOS trafficTypesMap_PREFIX JOIN "vlanPrio" )
								add_param SBTS_QOS_DSCP2PCPMAP "vLanPrioForDscp" JOIN dscp get_param WBTS_QOS trafficTypesMap_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 "WBTS_QOS" $current_dist_name
		if ( param_exist WBTS_QOS "trafficTypesMap" )
			for_list WBTS_QOS "trafficTypesMap"
				begin
					define "trafficTypesMap_PREFIX" "trafficTypesMap." JOIN $current_index JOIN "."
					if ( param_exist WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList" )
						begin
							# get first element from list
							define "dscp" get_param WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList"
							define "dscp" "" JOIN dscp
							define "dscp" replace dscp "^([0-9A-Za-z]*),{0,1}(.*)" "$1" flags "g"
							
							if ( param_exist WBTS_QOS trafficTypesMap_PREFIX JOIN "pHB" )
								begin
									define "pHB" get_param WBTS_QOS trafficTypesMap_PREFIX JOIN "pHB"
									define "queue" "BE"
									if ( pHB == "expeditedForwarding" ) define "queue" "EF1"
									if ( pHB == "assuredForwardingClass4" ) define "queue" "AF4"
									if ( pHB == "assuredForwardingClass3" ) define "queue" "AF3"
									if ( pHB == "assuredForwardingClass2" ) define "queue" "AF2"
									if ( pHB == "assuredForwardingClass1" ) 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

for_objects "FTM/IPNO"
	define "WBTS_IPNO" $current_dist_name

# 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 "WBTS_IEIF" $current_dist_name
		
		if ( param_exist WBTS_IEIF "ipAddr.0.localIpAddr" )
			begin
				define "localIpAddr" get_param WBTS_IEIF "ipAddr.0.localIpAddr"
				if not ( localIpAddr == "0.0.0.0" )
					begin
						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" SBTS_ETHSVC JOIN "/ETHIF-1"
						add_param SBTS_IPIF "ipMtu" "1500"
						if ( param_exist WBTS_IPNO "mtu" ) add_param SBTS_IPIF "ipMtu" get_param WBTS_IPNO "mtu"
						
						define "SBTS_IPADDRESSV4" SBTS_IPIF JOIN "/IPADDRESSV4-1"
						add_object SBTS_IPADDRESSV4
						
						add_param SBTS_IPADDRESSV4 "ipAddressAllocationMethod" "MANUAL"
						add_param SBTS_IPADDRESSV4 "localIpAddr" localIpAddr
						add_param SBTS_IPADDRESSV4 "localIpPrefixLength" "0"
						if ( param_exist WBTS_IEIF "ipAddr.0.netmask" )
							begin
								define "netmask" get_param WBTS_IEIF "ipAddr.0.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_IPADDRESSV4 "localIpPrefixLength" prefixLength
							end
						
						if ( param_exist WBTS_IEIF "trafficPathShapingEnable" )
							begin
								define "value" get_param WBTS_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_WFQ
										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 WBTS_IEIF "sbsTotal" ) add_param SBTS_FSTSCH "sbs" get_param WBTS_IEIF "sbsTotal"
												if ( param_exist WBTS_IEIF "sirTotal" ) add_param SBTS_FSTSCH "sir" get_param WBTS_IEIF "sirTotal"
												if ( param_exist WBTS_IEIF "sirTotal" ) add_param SBTS_FSTSCH "spShapingRate" get_param WBTS_IEIF "sirTotal"
												add_param SBTS_FSTSCH "userLabel" "Ethernet"
											end
										
										if ( value == "TPS_PATH" )
											begin
												if ( param_exist WBTS_IEIF "sbs" ) add_param SBTS_FSTSCH "sbs" get_param WBTS_IEIF "sbs"
												if ( param_exist WBTS_IEIF "cir" ) add_param SBTS_FSTSCH "scdschWfqWeight" ( ( get_param WBTS_IEIF "cir" ) / 100 )
												if ( param_exist WBTS_IEIF "sir" ) add_param SBTS_FSTSCH "sir" get_param WBTS_IEIF "sir"
												if ( param_exist WBTS_IEIF "sir" ) add_param SBTS_FSTSCH "spShapingRate" get_param WBTS_IEIF "sir"
												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 "WBTS_QOS" $current_dist_name
												if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1"
												if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2"
												if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3"
												if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4"
												if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.bestEffort" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" get_param WBTS_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 "WBTS_IVIF" $current_dist_name
		define "ivifId" $current_IVIF
		if ( param_exist WBTS_IVIF "vlanId" )
			begin
				if not ( get_param WBTS_IVIF "vlanId" ) == "0"
					begin
						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" SBTS_ETHSVC JOIN "/ETHIF-1/VLANIF-" JOIN ivifId
						add_param SBTS_IPIF "ipMtu" "1500"
						if ( param_exist WBTS_IPNO "mtu" ) add_param SBTS_IPIF "ipMtu" get_param WBTS_IPNO "mtu"

						if ( param_exist WBTS_IVIF "localIpAddr" )
							begin
								define "SBTS_IPADDRESSV4" SBTS_IPIF JOIN "/IPADDRESSV4-1"
								add_object SBTS_IPADDRESSV4
								
								add_param SBTS_IPADDRESSV4 "ipAddressAllocationMethod" "MANUAL"
								add_param SBTS_IPADDRESSV4 "localIpAddr" get_param WBTS_IVIF "localIpAddr"
								add_param SBTS_IPADDRESSV4 "localIpPrefixLength" "0"
								if ( param_exist WBTS_IVIF "netmask" )
									begin
										define "netmask" get_param WBTS_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_IPADDRESSV4 "localIpPrefixLength" prefixLength
									end
								
							end

						# FSTSCH
						if ( param_exist WBTS_IEIF "trafficPathShapingEnable" )
							if ( get_param WBTS_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 WBTS_IVIF "sbs" ) add_param SBTS_FSTSCH "sbs" get_param WBTS_IVIF "sbs"
									if ( param_exist WBTS_IVIF "sir" ) add_param SBTS_FSTSCH "sir" get_param WBTS_IVIF "sir"
									if ( param_exist WBTS_IVIF "sir" ) add_param SBTS_FSTSCH "spShapingRate" get_param WBTS_IVIF "sir"
									if ( param_exist WBTS_IVIF "cir" ) add_param SBTS_FSTSCH "scdschWfqWeight" ( ( get_param WBTS_IVIF "cir" ) / 100 )
									
									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 "WBTS_QOS" $current_dist_name
											if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1"
											if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2"
											if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3"
											if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4"
											if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.bestEffort" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" get_param WBTS_QOS "perHopBehaviourWeightList.0.bestEffort"
										end
								end

						if ( param_exist WBTS_IEIF "trafficPathShapingEnable" )
							if ( get_param WBTS_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 WBTS_IEIF "sbsTotal" ) add_param SBTS_FSTSCH "sbs" get_param WBTS_IEIF "sbsTotal"
											if ( param_exist WBTS_IEIF "sirTotal" ) add_param SBTS_FSTSCH "sir" get_param WBTS_IEIF "sirTotal"
											if ( param_exist WBTS_IEIF "sirTotal" ) add_param SBTS_FSTSCH "spShapingRate" get_param WBTS_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 "WBTS_QOS" $current_dist_name
													if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1"
													if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2"
													if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3"
													if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4"
													if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.bestEffort" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" get_param WBTS_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

# 3. For an existing P3SL-1 in legacy model, create an IPIF instance with IPIF:: interfacePtr = P3SL-1
for_objects "FTM/P3SL"
	begin
		define "WBTS_P3SL" $current_dist_name
		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" SBTS_TNL JOIN "/P3SL-1"
		add_param SBTS_IPIF "ipMtu" "1500"
		
		if ( param_exist WBTS_P3SL "p3pIpAddr" )
			begin
				define "SBTS_IPADDRESSV4" SBTS_IPIF JOIN "/IPADDRESSV4-1"
				add_object SBTS_IPADDRESSV4
				
				add_param SBTS_IPADDRESSV4 "ipAddressAllocationMethod" "PPP"
				add_param SBTS_IPADDRESSV4 "localIpAddr" get_param WBTS_P3SL "p3pIpAddr"
				add_param SBTS_IPADDRESSV4 "localIpPrefixLength" "0"

				if ( param_exist WBTS_P3SL "netmask" )
					begin
						define "netmask" get_param WBTS_P3SL "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_IPADDRESSV4 "localIpPrefixLength" prefixLength
					end
			end
	end

# 4. For an existing P3ML-1 in legacy model, create an IPIF instance with IPIF:: interfacePtr = P3ML-1
for_objects "FTM/P3ML"
	begin
		define "WBTS_P3ML" $current_dist_name
		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" SBTS_TNL JOIN "/P3ML-1"
		add_param SBTS_IPIF "ipMtu" "1500"
		
		if ( param_exist WBTS_P3ML "p3pIpAddr" )
			begin
				define "SBTS_IPADDRESSV4" SBTS_IPIF JOIN "/IPADDRESSV4-1"
				add_object SBTS_IPADDRESSV4
				
				add_param SBTS_IPADDRESSV4 "ipAddressAllocationMethod" "PPP"
				add_param SBTS_IPADDRESSV4 "localIpAddr" get_param WBTS_P3ML "p3pIpAddr"
				add_param SBTS_IPADDRESSV4 "localIpPrefixLength" "0"

				if ( param_exist WBTS_P3ML "netmask" )
					begin
						define "netmask" get_param WBTS_P3ML "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_IPADDRESSV4 "localIpPrefixLength" prefixLength
					end
			end
			
		# 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 "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" "PPP"
		
		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 "WBTS_QOS" $current_dist_name
				if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF1" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass1"
				if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF2" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass2"
				if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF3" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass3"
				if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightAF4" get_param WBTS_QOS "perHopBehaviourWeightList.0.assuredForwardingClass4"
				if ( param_exist WBTS_QOS "perHopBehaviourWeightList.0.bestEffort" ) add_param SBTS_FSTSCH "wfqWeightList.0.weightBE" get_param WBTS_QOS "perHopBehaviourWeightList.0.bestEffort"
			end
	end

# 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 "WBTS_IPNO" $current_dist_name
		define "IPADDRESSV4_COUNT" 0
		define "IPIF_CREATED" "false"
		
		for_range 0 5
			begin
				if ( $current_index == 0 ) define "ipAddress" "cPlaneIpAddress"
				if ( $current_index == 1 ) define "ipAddress" "mPlaneIpAddress"
				if ( $current_index == 2 ) define "ipAddress" "sPlaneIpAddress"
				if ( $current_index == 3 ) define "ipAddress" "uPlaneIpAddress"
				if ( $current_index == 4 ) define "ipAddress" "uPlane2IpAddress"
				define "UNIQUE" "true"
				
				if ( param_exist WBTS_IPNO ipAddress )
					if not ( get_param WBTS_IPNO ipAddress ) == "0.0.0.0"
						begin
							define "localIpAddr" get_param WBTS_IPNO ipAddress
							
							for_objects "IPADDRESSV4"
								begin
									if ( get_param $current_dist_name "localIpAddr" ) == 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
								
									define "IPADDRESSV4_COUNT" IPADDRESSV4_COUNT + 1
									define "SBTS_IPADDRESSV4" SBTS_IPIF JOIN "/IPADDRESSV4-" JOIN IPADDRESSV4_COUNT
									add_object SBTS_IPADDRESSV4
									
									add_param SBTS_IPADDRESSV4 "ipAddressAllocationMethod" "MANUAL"
									add_param SBTS_IPADDRESSV4 "localIpAddr" localIpAddr
									add_param SBTS_IPADDRESSV4 "localIpPrefixLength" "32"
								end
						end
			end
		

		
	end

#####IPNO/IPIF + IPIF/IPADDRESSV4 + IPIF/IPADDRESSV6 + IPNO/QOS/FSTSCH#####

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

for_objects "FTM/IPNO"
	begin
		define "WBTS_IPNO" $current_dist_name
		if ( param_exist WBTS_IPNO "twampFlag" )
			begin
				copy_list WBTS_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 WBTS_IPNO "twampMessageRate" ) add_param SBTS_IPAPP "twampSenderMessageRate" get_param WBTS_IPNO "twampMessageRate"
			end
	end

#####IPAPP/BFD#####
define "BFDGRP_COUNT" 1
for_objects "FTM/IPNO/BFD"
	begin
		define "WBTS_BFD" $current_dist_name
		
		if ( param_exist WBTS_BFD "bfdSourceIpAddr" ) && not ( ( get_param WBTS_BFD "bfdSourceIpAddr" ) == "0.0.0.0" )
			if ( param_exist WBTS_BFD "bfdDestAddress" ) && not ( ( get_param WBTS_BFD "bfdDestAddress" ) == "0.0.0.0" )
				if ( not ( param_exist WBTS_BFD "function" ) ) || ( ( get_param WBTS_BFD "function" ) == "MANUAL_BFD_SESSION" )
					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 WBTS_BFD "bfdActivation" ) add_param SBTS_BFD "bfdActivation" get_param WBTS_BFD "bfdActivation"
						if ( param_exist WBTS_BFD "bfdAdminUp" ) add_param SBTS_BFD "bfdAdminUp" get_param WBTS_BFD "bfdAdminUp"
						if ( param_exist WBTS_BFD "bfdDestAddress" ) add_param SBTS_BFD "bfdDestIpAddr" get_param WBTS_BFD "bfdDestAddress"
						if ( param_exist WBTS_BFD "bfdDetectMult" ) add_param SBTS_BFD "bfdDetectMult" get_param WBTS_BFD "bfdDetectMult"
						if ( param_exist WBTS_BFD "bfdType" ) add_param SBTS_BFD "bfdType" get_param WBTS_BFD "bfdType"
						if ( param_exist WBTS_BFD "desMinTxInt" ) add_param SBTS_BFD "desMinTxInt" get_param WBTS_BFD "desMinTxInt"
						if ( param_exist WBTS_BFD "reqMinRxInt" ) add_param SBTS_BFD "reqMinRxInt" get_param WBTS_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 WBTS_BFD "bfdSourceUdpPort" ) add_param SBTS_BFD "bfdSrcUdpPort" get_param WBTS_BFD "bfdSourceUdpPort"
						
						for_objects "FTM/IPNO/QOS"
							begin
								define "WBTS_QOS" $current_dist_name
								if ( param_exist WBTS_QOS "trafficTypesMap" )
									for_list WBTS_QOS "trafficTypesMap"
										begin
											define "trafficTypesMap_PREFIX" "trafficTypesMap." JOIN $current_index JOIN "."
											define "bfdToSearch" "BFD" JOIN bfdId
											if ( get_param WBTS_QOS trafficTypesMap_PREFIX JOIN "trafficType" ) == bfdToSearch
												if ( param_exist WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList" )
													begin
														define "value" get_param WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList"
														define "value" "" JOIN value
														define "value" replace value "^([0-9A-Za-z]*),{0,1}(.*)" "$1" flags "g"
														add_param SBTS_BFD "bfdDscp" value
													end
										end
							end
						
						if ( param_exist WBTS_BFD "bfdSourceIpAddr" )
							begin
								define "targetIpAddr" get_param WBTS_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 WBTS_BFD "bfdGrp" )
							if not ( param_exist WBTS_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 WBTS_BFD "tempGrouped" "true"
									
									define "bfdGrp" get_param WBTS_BFD "bfdGrp"
									
									for_objects "FTM/IPNO/BFD"
										begin
											define "WBTS_BFD_INNER_LOOP" $current_dist_name
											if not ( param_exist WBTS_BFD_INNER_LOOP "tempGrouped" )
												if ( param_exist WBTS_BFD_INNER_LOOP "bfdGrp" )
													if ( get_param WBTS_BFD_INNER_LOOP "bfdGrp" ) == bfdGrp
														if ( param_exist WBTS_BFD_INNER_LOOP "bfdSourceIpAddr" ) && not ( ( get_param WBTS_BFD_INNER_LOOP "bfdSourceIpAddr" ) == "0.0.0.0" )
															if ( param_exist WBTS_BFD_INNER_LOOP "bfdDestAddress" ) && not ( ( get_param WBTS_BFD_INNER_LOOP "bfdDestAddress" ) == "0.0.0.0" )
																if ( not ( param_exist WBTS_BFD_INNER_LOOP "function" ) ) || ( ( get_param WBTS_BFD_INNER_LOOP "function" ) == "MANUAL_BFD_SESSION" )
																	begin
																		define "bfd_COUNT" bfd_COUNT + 1
																		add_param SBTS_BFDGRP "bfdDN." JOIN bfd_COUNT SBTS_IPAPP JOIN "/BFD-" JOIN $current_BFD
																		add_param WBTS_BFD_INNER_LOOP "tempGrouped" "true"
																	end
										end
								end
						#####IPAPP/BFDGRP#####
					end
	end
#####IPAPP/BFD#####

#####IPAPP/IPSECC#####
for_objects "FTM/IPSECC"
	begin
		define "WBTS_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 WBTS_IPSECC "ipSecEnabled" ) add_param SBTS_IPSECC "ipSecEnabled" get_param WBTS_IPSECC "ipSecEnabled"
	
		for_objects "FTM/IPNO/QOS"
			begin
				define "WBTS_QOS" $current_dist_name
				if ( param_exist WBTS_QOS "trafficTypesMap" )
					for_list WBTS_QOS "trafficTypesMap"
						begin
							define "trafficTypesMap_PREFIX" "trafficTypesMap." JOIN $current_index JOIN "."
							if ( get_param WBTS_QOS trafficTypesMap_PREFIX JOIN "trafficType" ) == "IKE"
								if ( param_exist WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList" )
									begin
										define "value" get_param WBTS_QOS trafficTypesMap_PREFIX JOIN "dscpList"
										define "value" "" JOIN value
										define "value" replace value "^([0-9A-Za-z]*),{0,1}(.*)" "$1" flags "g"
										add_param SBTS_IPSECC "ikeDscp" value
									end
						end
			end
		
		#####IPAPP/IPSECC/SECPOL + IPAPP/IPSECC/IKEP + IPAPP/IPSECC/IKEPROTGRP + IPAPP/IPSECC/IPSECP#####
		if ( param_exist WBTS_IPSECC "securityPolicies" )
			begin
				define "IKEP_COUNT" 1
				define "IPSECP_COUNT" 1
				for_list WBTS_IPSECC "securityPolicies"
					begin
						define "securityPolicies_PREFIX" "securityPolicies." JOIN $current_index JOIN "."
						
						define "SBTS_SECPOL" SBTS_IPSECC JOIN "/SECPOL-" JOIN ( $current_index + 1 )
						add_object SBTS_SECPOL
						
						add_param SBTS_SECPOL "ipSecAction" "PROTECT"
						add_param SBTS_SECPOL "policyOrderNumber" "PROTECT"
						add_list SBTS_SECPOL "trafficSelectorList"
						add_complex_param SBTS_SECPOL "trafficSelectorList.0"
						add_param SBTS_SECPOL "trafficSelectorList.0.localIpPort" "-1"
						add_param SBTS_SECPOL "trafficSelectorList.0.localIpPrefixLength" "0"
						add_param SBTS_SECPOL "trafficSelectorList.0.protocol" "-1"
						add_param SBTS_SECPOL "trafficSelectorList.0.remoteIpAddress" "0.0.0.0"
						add_param SBTS_SECPOL "trafficSelectorList.0.remoteIpPort" "-1"
						add_param SBTS_SECPOL "trafficSelectorList.0.remoteIpPrefixLength" "0"
						
						if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "ipSecStatus" ) add_param SBTS_SECPOL "ipSecAction" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "ipSecStatus"
						if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "policyNumber" ) add_param SBTS_SECPOL "policyOrderNumber" ( ( get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "policyNumber" ) + 1 )
						if ( ( get_param SBTS_SECPOL "policyOrderNumber" ) > 65535 ) add_param SBTS_SECPOL "policyOrderNumber" "65535"
						if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "localIpAddress" ) add_param SBTS_SECPOL "trafficSelectorList.0.localIpAddress" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "localIpAddress"
						if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "localIpPort" ) add_param SBTS_SECPOL "trafficSelectorList.0.localIpPort" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "localIpPort"
						if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "protocol" ) add_param SBTS_SECPOL "trafficSelectorList.0.protocol" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "protocol"
						if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "remoteIpAddress" ) add_param SBTS_SECPOL "trafficSelectorList.0.remoteIpAddress" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "remoteIpAddress"
						if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "remoteIpPort" ) add_param SBTS_SECPOL "trafficSelectorList.0.remoteIpPort" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "remoteIpPort"
						
						for_range 0 2
							begin
								if ( $current_index == 0 ) define "PARAM" "local"
								else define "PARAM" "remote"
								
								if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN PARAM JOIN "Netmask" )
									begin
										define "netmask" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN PARAM 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_SECPOL "trafficSelectorList.0." JOIN PARAM JOIN "IpPrefixLength" prefixLength
									end
							end
						
						if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "localTunnelEndpoint" ) && ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "remoteTunnelEndpoint" )
							begin
								define "localTunnelEndpoint" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "localTunnelEndpoint"
								define "remoteTunnelEndpoint" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "remoteTunnelEndpoint"
								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"
															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
												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"
												add_param SBTS_IKEP "ikeMaxLifeTime" "86400"
												add_param SBTS_IKEP "ipsecPerfForwSecEnabled" "false"
												
												if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "dpddelay" ) add_param SBTS_IKEP "dpdDelay" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "dpddelay"
												if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "ikeDiffHellGrp" ) add_param SBTS_IKEP "ikeDiffHellGrp" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "ikeDiffHellGrp"
												if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "ikeEncryptionMethod" ) add_param SBTS_IKEP "ikeEncryptionMethod" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "ikeEncryptionMethod"
												
												# IKEPROTGRP - same number with IKEP since no "bkup" parameters in WBTS
												define "SBTS_IKEPROTGRP" SBTS_IPSECC JOIN "/IKEPROTGRP-" JOIN IKEP_COUNT
												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"

												define "IKEP_COUNT" IKEP_COUNT + 1
											end
									end
							end
						
						# IPSECP
						if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "antiReplayEnabled" ) && ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "antiReplayWindowSize" )
							if ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "encryptionMethod" ) && ( param_exist WBTS_IPSECC securityPolicies_PREFIX JOIN "saMaxLifeTime" )
								begin
									# check uniqueness of antiReplayEnabled, antiReplayWindowSize, encryptionMethod, saMaxLifeTime
									define "unique" "true"
									define "antiReplayEnabled" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "antiReplayEnabled"
									define "antiReplayWindowSize" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "antiReplayWindowSize"
									define "encryptionMethod" get_param WBTS_IPSECC securityPolicies_PREFIX JOIN "encryptionMethod"
									define "saMaxLifeTime" get_param WBTS_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
											
											add_param SBTS_IPSECP "extendedSequenceNumberMode" "NORMAL_SEQUENCE"
											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 "WBTS_TWAMP" $current_dist_name
		
		if ( param_exist WBTS_TWAMP "destIpAddress" ) && ( param_exist WBTS_TWAMP "sourceIpAddress" )
			begin
				define "destIpAddress" get_param WBTS_TWAMP "destIpAddress"
				define "sourceIpAddress" get_param WBTS_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 WBTS_TWAMP "administrativeState" ) add_param SBTS_TWAMP "administrativeState" get_param WBTS_TWAMP "administrativeState"
							if ( param_exist WBTS_TWAMP "destPort" ) add_param SBTS_TWAMP "destPort" get_param WBTS_TWAMP "destPort"
							if ( param_exist WBTS_TWAMP "messageSize" ) add_param SBTS_TWAMP "messageSize" get_param WBTS_TWAMP "messageSize"
							if ( param_exist WBTS_TWAMP "plrAlarmThreshold" ) add_param SBTS_TWAMP "plrAlarmThreshold" get_param WBTS_TWAMP "plrAlarmThreshold"
							if ( param_exist WBTS_TWAMP "rttAlarmThreshold" ) add_param SBTS_TWAMP "rttAlarmThreshold" get_param WBTS_TWAMP "rttAlarmThreshold"
							if ( param_exist WBTS_TWAMP "dscp" ) add_param SBTS_TWAMP "twampDscp" get_param WBTS_TWAMP "dscp"
						end
			end
	end
#####IPAPP/TWAMP#####

#####IPAPP/FPMUX#####
for_objects "FTM/IPNO"
	begin
		define "WBTS_IPNO" $current_dist_name
		if ( ( param_exist WBTS_IPNO "fpLocalUdpPort" ) || ( param_exist WBTS_IPNO "fpMuxAmount" ) || ( param_exist WBTS_IPNO "fpMuxDelay" ) || ( param_exist WBTS_IPNO "fpRemoteUdpPort" ) )
			begin
				define "SBTS_FPMUX" SBTS_IPAPP JOIN "/FPMUX-1"
				add_object SBTS_FPMUX
				
				add_param SBTS_FPMUX "udpMuxAmount" "30"
				add_param SBTS_FPMUX "udpMuxDelay" "2"
				# PR225597 changed default value to 65534 (TNL17A_1704_003)
				add_param SBTS_FPMUX "udpPortLocal" "65534"
				add_param SBTS_FPMUX "udpPortRemote" "65535"
				
				if ( param_exist WBTS_IPNO "fpMuxAmount" ) add_param SBTS_FPMUX "udpMuxAmount" get_param WBTS_IPNO "fpMuxAmount"
				if ( param_exist WBTS_IPNO "fpMuxDelay" ) add_param SBTS_FPMUX "udpMuxDelay" get_param WBTS_IPNO "fpMuxDelay"
				if ( param_exist WBTS_IPNO "fpLocalUdpPort" ) add_param SBTS_FPMUX "udpPortLocal" get_param WBTS_IPNO "fpLocalUdpPort"
				if ( param_exist WBTS_IPNO "fpRemoteUdpPort" ) add_param SBTS_FPMUX "udpPortRemote" get_param WBTS_IPNO "fpRemoteUdpPort"
			end
	end
#####IPAPP/FPMUX#####
#####IPAPP#####

#####FRLI#####
for_objects "FTM/P3SL"
	begin
		define "WBTS_P3SL" $current_dist_name
		
		if ( param_exist WBTS_P3SL "interface" )
			begin
				define "p3slId" get_param WBTS_P3SL "interface"
				define "SBTS_FRLI" SBTS_TNL JOIN "/FRLI-" JOIN p3slId
				add_object SBTS_FRLI
				
				add_param SBTS_FRLI "ppttDN" SBTS_TNL JOIN "/PPTT-" JOIN p3slId
				add_list SBTS_FRLI "timeSlotSequence"
				if ( param_exist WBTS_P3SL "ts16Excluded" )
					begin
						if ( get_param WBTS_P3SL "ts16Excluded" ) == "false" add_param SBTS_FRLI "timeSlotSequence.0" "TS_ALL"
						else add_param SBTS_FRLI "timeSlotSequence.0" "TS_ALL_EXCLUDE_TS16"
					end
				else add_param SBTS_FRLI "timeSlotSequence.0" "TS_ALL"
			end
	end

for_objects "FTM/P3ML"
	begin
		define "WBTS_P3ML" $current_dist_name
		
		if ( param_exist WBTS_P3ML "interfaces" )
			begin
				for_list WBTS_P3ML "interfaces"
					begin
						define "interface" get_param WBTS_P3ML "interfaces." JOIN $current_index
						define "SBTS_FRLI" SBTS_TNL JOIN "/FRLI-" JOIN interface
						add_object SBTS_FRLI
						
						add_param SBTS_FRLI "ppttDN" SBTS_TNL JOIN "/PPTT-" JOIN interface
						add_list SBTS_FRLI "timeSlotSequence"
						if ( param_exist WBTS_P3ML "ts16Excluded" )
							begin
								if ( get_param WBTS_P3ML "ts16Excluded" ) == "false" add_param SBTS_FRLI "timeSlotSequence.0" "TS_ALL"
								else add_param SBTS_FRLI "timeSlotSequence.0" "TS_ALL_EXCLUDE_TS16"
							end
						else add_param SBTS_FRLI "timeSlotSequence.0" "TS_ALL"
					end
			end
	end
#####FRLI#####

#####P3LP#####
for_objects "FTM/P3LP"
	begin
		define "WBTS_P3LP" $current_dist_name
		define "p3lpId" $current_P3LP
		define "X" replace p3lpId "(.*)-(.*)" "$1"
		define "Y" replace p3lpId "(.*)-(.*)" "$2"
		
		define "SBTS_P3LP" SBTS_TNL JOIN "/P3LP-" JOIN Y
		add_object SBTS_P3LP
		
		add_param SBTS_P3LP "acfcTarget" "IN_USE"
		add_param SBTS_P3LP "frliDN" SBTS_TNL JOIN "/FRLI-" JOIN Y
		add_param SBTS_P3LP "lcpEchoEnabled" "true"
		add_param SBTS_P3LP "lcpEchoInterval" "20"
		add_param SBTS_P3LP "localMruTarget" "1500"
		add_param SBTS_P3LP "magicNumberUsage" "IN_USE"
		add_param SBTS_P3LP "pfcTarget" "IN_USE"
		
		if ( param_exist WBTS_P3LP "acFieldCompressionOn" )
			begin
				define "value" get_param WBTS_P3LP "acFieldCompressionOn"
				if ( value == "false" ) add_param SBTS_P3LP "acfcTarget" "NOT_IN_USE"
				if ( value == "true" ) add_param SBTS_P3LP "acfcTarget" "IN_USE"
			end
		
		if ( param_exist WBTS_P3LP "mruSize" )
			begin
				define "value" get_param WBTS_P3LP "mruSize"
				define "value" replace value "PACKET_SIZE_(.*)" "$1"
				if ( value > 1606 ) define "value" "1600"
				add_param SBTS_P3LP "localMruTarget" value
			end
		
		if ( param_exist WBTS_P3LP "magicNumberOn" )
			begin
				define "value" get_param WBTS_P3LP "magicNumberOn"
				if ( value == "false" ) add_param SBTS_P3LP "magicNumberUsage" "NOT_IN_USE"
				if ( value == "true" ) add_param SBTS_P3LP "magicNumberUsage" "IN_USE"
			end
		
		if ( param_exist WBTS_P3LP "protocolFieldCompressionOn" )
			begin
				define "value" get_param WBTS_P3LP "protocolFieldCompressionOn"
				if ( value == "false" ) add_param SBTS_P3LP "pfcTarget" "NOT_IN_USE"
				if ( value == "true" ) add_param SBTS_P3LP "pfcTarget" "IN_USE"
			end
	end
#####P3LP#####

#####P3ML#####
for_objects "FTM/P3ML"
	begin
		define "WBTS_P3ML" $current_dist_name
		define "SBTS_P3ML" SBTS_TNL JOIN "/P3ML-1"
		add_object SBTS_P3ML
		
		add_param SBTS_P3ML "administrativeState" "locked"
		add_param SBTS_P3ML "endPointDiscriminatorUsageEnabled" "false"
		add_param SBTS_P3ML "ipcpEncapsulation" "WITH_MLPPP_HEADERS"
		add_param SBTS_P3ML "ipHeaderCompressionUsage" "NOT_IN_USE"
		add_param SBTS_P3ML "mpFragmentSize" "FRAGMENT_SIZE_AUTOMATIC"
		add_param SBTS_P3ML "multiClassTarget" "MC0"
		add_param SBTS_P3ML "shortSeqNbrFormatUsageEnabled" "false"
		
		if ( param_exist WBTS_P3ML "administrativeState" ) add_param SBTS_P3ML "administrativeState" get_param WBTS_P3ML "administrativeState"
		if ( param_exist WBTS_P3ML "mpFragmentSize" ) add_param SBTS_P3ML "mpFragmentSize" get_param WBTS_P3ML "mpFragmentSize"
		if ( param_exist WBTS_P3ML "shortSeqNrOn" ) add_param SBTS_P3ML "shortSeqNbrFormatUsageEnabled" get_param WBTS_P3ML "shortSeqNrOn"

		if ( param_exist WBTS_P3ML "endPointDiscriminatorType" )
			begin
				define "value" get_param WBTS_P3ML "endPointDiscriminatorType"
				if ( value == "NORMAL" ) add_param SBTS_P3ML "endPointDiscriminatorUsageEnabled" "false"
				if ( value == "EDGE" ) add_param SBTS_P3ML "endPointDiscriminatorUsageEnabled" "true"
			end
		
		if ( param_exist WBTS_P3ML "mrruSize" )
			begin
				define "value" get_param WBTS_P3ML "mrruSize"
				define "value" replace value "PACKET_SIZE_(.*)" "$1"
				if ( value > 1606 ) define "value" "1600"
				add_param SBTS_P3ML "localMrruTarget" value
			end
		
		if ( param_exist WBTS_P3ML "interfaces" )
			begin
				add_list SBTS_P3ML "p3LpDN"
				for_list WBTS_P3ML "interfaces"
					begin
						add_param SBTS_P3ML "p3LpDN." JOIN $current_index SBTS_TNL JOIN "/P3LP-" JOIN get_param WBTS_P3ML "interfaces." JOIN $current_index
					end
			end
	end
#####P3ML#####

#####P3SL#####
for_objects "FTM/P3SL"
	begin
		define "WBTS_P3SL" $current_dist_name
		define "SBTS_P3SL" SBTS_TNL JOIN "/P3SL-1"
		add_object SBTS_P3SL
		
		add_param SBTS_P3SL "administrativeState" "locked"
		add_param SBTS_P3SL "ipHeaderCompressionUsage" "NOT_IN_USE"
		if ( param_exist WBTS_P3SL "interface" ) add_param SBTS_P3SL "p3LpDN" SBTS_TNL JOIN "/P3LP-" JOIN get_param WBTS_P3SL "interface"
		if ( param_exist WBTS_P3SL "administrativeState" ) add_param SBTS_P3SL "administrativeState" get_param WBTS_P3SL "administrativeState"
	end
#####P3SL#####

#####PPTT#####
for_objects "FTM/PPTT"
	begin
		define "WBTS_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 WBTS_PPTT "administrativeState" ) add_param SBTS_PPTT "administrativeState" get_param WBTS_PPTT "administrativeState"
		if ( param_exist WBTS_PPTT "pdhLineType" )
			begin
				define "value" get_param WBTS_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 "WBTS_BFD" $current_dist_name

		if ( param_exist WBTS_BFD "bfdSourceIpAddr" ) && not ( ( get_param WBTS_BFD "bfdSourceIpAddr" ) == "0.0.0.0" )
			if ( param_exist WBTS_BFD "bfdDestAddress" ) && not ( ( get_param WBTS_BFD "bfdDestAddress" ) == "0.0.0.0" )
				if ( not ( param_exist WBTS_BFD "function" ) ) || ( ( get_param WBTS_BFD "function" ) == "MANUAL_BFD_SESSION" )
					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 WBTS_IPNO "bfdHoldUpTime" ) add_param SBTS_TRIGGER "false2TrueDelay" get_param WBTS_IPNO "bfdHoldUpTime"
					end
	end
#####TRIGGER#####

#####IPRT#####
for_objects "FTM/IPNO/IPRT"
	begin
		define "WBTS_IPRT" $current_dist_name
		
		if ( param_exist WBTS_IPRT "staticRoutes" )
			begin
				define "SBTS_IPRT" SBTS_IPNO JOIN "/IPRT-1"
				add_object SBTS_IPRT
				
				copy_list WBTS_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#####

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

#######################################################################################
