Automatically Create Simple Queues
From MikroTik Wiki
:local hostip
:local list
:local testvalue
:log info "******************** starting - address list queue create ********************"
:foreach i in=[/ip firewall address-list find] do={
:set list ([/ip firewall address-list get $i list] )
:set hostip ([/ip firewall address-list get $i address] )
:set testvalue [/queue simple find name=$hostip]
:if ([:len $testvalue] <= 0) do={
:if ($list = "i was on the internet") do={
/queue simple add name=$hostip comment="$hostip*0" target=$hostip queue=default/default total-queue=default
} else={
}
} else={
}
}
:log info "******************** ending - address lsit queue create ********************"
:local content
:local i
:local megstotal
:local bytestotal
:local bytescurrent
:local bytessaved
:local megssaved
:local bytesdowncurrent
:local megsdowncurrent
:local megsupcurrent
:local bytesupcurrent
:log info "******************** starting - queue usage update ********************"
:foreach i in=[/queue simple find comment !=""] do={
:set content [/queue simple get $i comment]
:if ([:find $content "*"] != "") do={
:local pos1 [:find $content "*"]
:local pos2 [:len $content]
:set bytescurrent [/queue simple get $i bytes]
:local pos3 [:find $bytescurrent "/"]
:local pos4 [:len $bytescurrent]
:set bytessaved ([:pick $content ($pos1+1) $pos2])
:set megssaved ($bytessaved / 1048576)
:set bytesupcurrent ([:pick $bytescurrent 0 ($pos3)])
:set megsupcurrent ($bytesupcurrent / 1048576)
:set bytesdowncurrent ([:pick $bytescurrent ($pos3+1) $pos4])
:set megsdowncurrent ($bytesdowncurrent / 1048576)
:set megstotal ($megsupcurrent + $megsdowncurrent + $megssaved)
:set bytestotal ($bytesupcurrent + $bytesdowncurrent + $bytessaved)
/queue simple set $i comment="$[:pick $content 0 ($pos1)]*$bytestotal"
/queue simple reset-counters $i
}
}
:log info "******************** ending - queue usage update ********************"
:local content
:local i
:log info "******************** starting - queue usage update reset********************"
:foreach i in=[/queue simple find comment !=""] do={
:set content [/queue simple get $i comment]
:if ([:find $content "*"] != "") do={
:local pos1 [:find $content "*"]
:local pos2 [:len $content]
/queue simple set $i comment="$[:pick $content 0 ($pos1)]*0"
/queue simple reset-counters $i
}
}
:log info "******************** ending - queue usage update reset ********************"