#######################################################################################
#######################################################################################
#NIDD_VER: TNL18_1711_002_00
# TNL: TNL18_1711_002
# delta from TNL18_1711_001 to TNL18_1711_002
# 9.11.2017 Sebastian Kulikowski
#######################################################################################

#######################################################################################
#######################################################################################
# Check if ruleset should be executed

for_objects "MRBTS/TNLSVC"
    begin
        if not ( get_version $current_dist_name ) == "TNL18_1711_001"
            abort_file
    end

if ( objects_count "SBTS/BTSSCW" ) == 1
    begin
        for_objects "MRBTS/TNLSVC/TNL/IPAPP"
            begin
                define "ipappDn" $current_dist_name
                define "fpmuxDn" ipappDn JOIN "/FPMUX-1"
                if ( objects_count fpmuxDn ) == 0
                    begin
                        add_object fpmuxDn
                        set_operation fpmuxDn "create"
                        set_adaptation fpmuxDn "com.nokia.srbts.tnl"
                        set_version fpmuxDn "TNL18_1711_002"

                        add_param fpmuxDn "udpMuxAmount" 30
                        add_param fpmuxDn "udpMuxDelay" 2
                        add_param fpmuxDn "udpPortLocal" 65534
                        add_param fpmuxDn "udpPortRemote" 65535
                    end
            end
    end

for_objects "MRBTS/TNLSVC/TNL/ETHSVC/L2SWI/BRGPRT"
    begin
        define "brgPrtDn" $current_dist_name

        if ( param_exist brgPrtDn "ethlkId" )
            del_param brgPrtDn "ethlkId"
    end

for_objects "MRBTS/TNLSVC/TNL/IPNO/IPIF"
    begin
        define "ipIfDn" $current_dist_name

        if ( param_exist ipIfDn "interfaceDN" )
            begin
                define "interfaceDN" get_param ipIfDn "interfaceDN"

				if ( replace interfaceDN "(.*(VLANIF).*)" "$2" flags "g" ) == "VLANIF"
                    begin
                        if ( param_exist ipIfDn "ipMtu" )
                            begin
                                define "ipMtu_VLANIF" get_param ipIfDn "ipMtu"
                                define "ipMtu_VLANIF_Value" convert_to_int ipMtu_VLANIF 10

                                define "ethIfDn" replace interfaceDN "/VLANIF-\d+" "" flags "g"

                                if ( objects_count ethIfDn ) == 1
                                    begin
                                        for_objects "MRBTS/TNLSVC/TNL/IPNO/IPIF"
                                            begin
                                                define "ipIfDn_ETHIF" $current_dist_name

                                                if ( param_exist ipIfDn_ETHIF "interfaceDN" )
                                                    begin
                                                        define "interfaceDN_ETHIF" get_param ipIfDn_ETHIF "interfaceDN"

                                                        if ( interfaceDN_ETHIF ) == ethIfDn
                                                            begin
                                                                if ( param_exist ipIfDn_ETHIF "ipMtu" )
                                                                    begin
                                                                        define "ipMtu_ETHIF" get_param ipIfDn_ETHIF "ipMtu"
                                                                        define "ipMtu_ETHIF_Value" convert_to_int ipMtu_ETHIF 10

# For VLAN interfaces (interfaceDN which references a VLANIF instance), the IpMtu must be minimum four octets smaller than the configured MTU of the underlying Ethernet interface.

                                                                        if not ( ipMtu_ETHIF_Value - ipMtu_VLANIF_Value ) >= 4
                                                                            begin
                                                                                define "correctedIpMtu_Value" ipMtu_ETHIF_Value - 4

                                                                                # must be in range
                                                                                if ( correctedIpMtu_Value ) >= 200
                                                                                    add_param ipIfDn "ipMtu" correctedIpMtu_Value
                                                                            end
                                                                    end
                                                            end
                                                    end
                                            end
                                    end
                            end
                    end
            end
    end
	
	
for_objects "MRBTS/TNLSVC/TNL/IPNO/QOS/FLOWCL"
    begin
        define "flowClDn" $current_dist_name
        if ( param_exist flowClDn "ruleSet.0.fstSchDN" )
            begin
                define "fstSchDN" get_param flowClDn "ruleSet.0.fstSchDN"
                if ( objects_count fstSchDN ) == 1
                    begin
                        if ( param_exist fstSchDN "ipIfDN" )
                            begin
                                del_param fstSchDN "ipIfDN"
                            end
                    end
            end
    end

for_objects "MRBTS/TNLSVC/TNL/IPAPP/IPSECC"
    begin
        define "ipseccDn" $current_dist_name
        if ( param_exist ipseccDn "ipSecEmBypassCtrlIpAddr" )
            begin
                define "ipSecEmBypassCtrlIpAddr" get_param ipseccDn "ipSecEmBypassCtrlIpAddr"
                if ( ipSecEmBypassCtrlIpAddr ) == "0.0.0.0"
                    del_param ipseccDn "ipSecEmBypassCtrlIpAddr"
            end
    end

#######################################################################################	
# update version

for_objects "VLANID2QMAP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "TWAMPREFLECT"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "TNL"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "TNLSVC"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "ETHSVC"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "ETHIF"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "VLANIF"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "ETHLK"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "L2SWI"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "BRGPRT"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IBRGPRT"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "DSCPTOQMAP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "PCP2QMAP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "FRLI"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IPAPP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "BFD"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "BFDGRP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IPSECC"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IKEP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IKEPROTGRP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IKEPSWITCHREQ"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IPSECP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "SECPOL"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "TWAMP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IPNO"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IPIF"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IPADDRESSV4"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IPADDRESSV6"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IPRT"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "IPRTV6"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "MCAPP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "QOS"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "DSCP2PCPMAP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "DSCP2QMAP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "FLOWCL"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "FSTSCH"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "RTPOL"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "P3LP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "P3ML"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "DSCP2MC2MAP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "DSCP2MC4MAP"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "P3SL"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "PMTNL"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "PPTT"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "TRIGGER"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "FPMUX"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end

for_objects "MRBTS/TNLSVC/TNL/PMTNL"
    begin
        set_version $current_dist_name "TNL18_1711_002"
    end
