Pavlin Radoslavov wrote: >> Looks like at least one problem is that we do a linear >> lookup when searching for an interface by if-index. >> > > Absolutely correct. I am well aware of this issue > and my intention was indeed to add an internal map to IfTree > similar to what you suggest below. > FYI, this method (and few other related methods) were added during a > recent FEA refactoring and the initial emphasis was on correctness. > Obviously, with the much smaller number of interfaces the rest of us > we have to deal with, the performance optimization wasn't an urgent > priority. > > In your implementation you need to be very careful that you capture > all places inside IfTree that are related to the new pif_index to > vif mapping. > I was thinking on the way home: Maybe just map if-index to if-name. If the mapping lookup fails, do a long slow linear lookup and if the object is found, add it to the if-index -> map. If it succeeds, then lookup the vif by way of the existing hash, double-check the if-index is correct (if not, do a slow lookup).
I'll also update the if-index -> if-name hash when a vif is added so at least most of the time we shouldn't have to do a slow lookup. This should keep us from having to worry about stale memory references to vifs that might have been deleted, while giving good scaling lookups. Sound legit? Ben -- Ben Greear <[EMAIL PROTECTED]> Candela Technologies Inc http://www.candelatech.com _______________________________________________ Xorp-hackers mailing list [email protected] http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers
