Changeset 5039

Show
Ignore:
Timestamp:
07/09/09 16:53:08 (4 years ago)
Author:
jow
Message:

libs/sys: improve efficiency of sys.net.defaultroute(), can save hundreds of KB memory usage

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • luci/trunk/libs/sys/luasrc/sys.lua

    r4889 r5039  
    297297--            "flags", "device" } 
    298298function net.defaultroute() 
    299     local route = nil 
    300     for _, r in pairs(net.routes()) do 
    301         if r.dest:prefix() == 0 and (not route or route.metric > r.metric) then 
    302             route = r 
    303         end 
    304     end 
     299    local route 
     300 
     301    net.routes(function(rt) 
     302        if rt.dest:prefix() == 0 and (not route or route.metric > rt.metric) then 
     303            route = rt 
     304        end 
     305    end) 
     306 
    305307    return route 
    306308end 
     
    372374--          { "dest", "gateway", "metric", "refcount", "usecount", "irtt", 
    373375--            "flags", "device" } 
    374 function net.routes() 
     376function net.routes(callback) 
    375377    local routes = { } 
    376378 
     
    390392            ) 
    391393 
    392             routes[#routes+1] = { 
     394            local rt = { 
    393395                dest     = dst_ip, 
    394396                gateway  = gateway, 
     
    402404                device   = dev 
    403405            } 
     406 
     407            if callback then 
     408                callback(rt) 
     409            else 
     410                routes[#routes+1] = rt 
     411            end 
    404412        end 
    405413    end