'struct ifnet' question!
Artis Caune
artis at fbsd.lv
Thu Apr 29 03:12:22 PDT 2004
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
More information about the freebsd-net
mailing list