:local gw ""
:local js 0
:foreach k in=[/inter pppoe-c find running=false] do={
:set n [/inter pppoe-c get $k name]
:set ipi [/ip addr find interface=$n dynamic=false]
:if ($ipi != "") do={/ip addr remove $ipi}
}
:foreach k in=[/inter pppoe-c find running=true] do={
:set n [/inter pppoe-c get $k name]
:set dip [/ip address get [find interface=$n dynamic=true] address]
:set diip [:pick $dip 0 [:find $dip /]]
:if ($js=0) do={:set gw $diip} else={:set gw ($gw . "," . $diip)}
:set js ($js+1)
:set ipi [/ip addr find interface=$n dynamic=false]
:if ($ipi="") do={/ip addr add address=$diip netmask=255.255.255.255 network=$diip broadcast=$diip interface=$n} else={
:set sip [/ip addr get $ipi address]
:set siip [:pick $sip 0 [:find $sip /]]
:if ($diip != $siip) do={
/ip addr set $ipi addr=$diip netmask=255.255.255.255 network=$diip broadcast=$diip
}
}
}
:set i [/ip route find comm=ecmp]
:if ($gw = "") do={:if ($i != "") do={/ip route remove $i}} else={
:if ($i="") do={/ip route add gateway $gw comment=ecmp} else={
:set ogw [/ip route get $i gateway]
:if ($ogw != $gw) do={/ip route set $i gateway $gw}
}
}