I'm writing kld module for traffic shaping (5.x only). It use PFIL hooks.
There will be seperate decision trees for every interface + IN/OUT pair.
Let's say we have rules:
shape in on fxp0 ...
shape out on fxp0 ...
shape in on vlan0 ...
in this example we have 3 decision trees:
- rules with 'fxp0 in'
- rules with 'fxp0 out'
- rules with 'vlan0 in'When PFIL pass packet, I need find pointer
to right decision tree:
tree = find_decision_tree(ifp->if_xname, direction);Yeh, this works as expected, but I wonder if I can use ifp->index instead of ifp->if_xname. Using 'index + array pointer feature' I can find decision tree in just one? memory access step, compared to if_xname where I should make expensive strcmp() calls. ;)
I'm worried about 'dynamic' interfaces. e.x: # ifconfig vlan0 create; ... # load rules with 'shape in on vlan0' # ifconfig vlan0 destroy # ifconfig vlan0 create; ...
I belive at this point if_index is not the same when rules was loaded. How safe is to use if_index instead of if_xname? How safe is to use if_xname with interface renaming feature (-current)?
Is there some way to track interface changes events?
thanks,
-- Artis _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[EMAIL PROTECTED]"
