Date: Thu, 29 Apr 2004 13:12:17 +0300 From: Artis Caune <artis@fbsd.lv> To: net@freebsd.org Subject: 'struct ifnet' question! Message-ID: <opr67qmrz8k7ts4q@127.0.0.1>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?opr67qmrz8k7ts4q>