'struct ifnet' question!
Artis Caune
artis-ml at fbsd.lv
Fri May 14 02:38:19 PDT 2004
Thanks,
event handlers looks very trivial to implement.
My thoughts was:
userland read rules and check if interface exist with:
'if_nametoindex(interface)' call.
kernel stores rules without any knowledge about
interface name or direction, because I use seperate
decision tree for every interface + direction pair.
When module got departure event, all rules are flushed
from in/out decision tree:
flush_rules(decision_tree[ifp->if_index]->out);
flush_rules(decision_tree[ifp->if_index]->in);
because if interface is gone, rules are not valid:
# ifconfig vlan0 create
if_findindex() returns index 6
# load rules with '... in on vlan0 ...'
kernel store rules in 'decision_tree[6]->in'
# ifconfig vlan0 destory
here we must flush all vlan0 rules
# ifconfig gif0 create
gif0 got index 6
if we don't flush old rules, gif0 will use vlan0 rules
because index is reused...
And here is the problem:
If i watch departure events, interface renaming feature will
flush walid rules:
case SIOCSIFNAME:
...
EVENTHANDLER_INVOKE(ifnet_departure_event, ifp);
... change if_xname ...
EVENTHANDLER_INVOKE(ifnet_arrival_event, ifp);
how about another event? ;)
EVENTHANDLER_INVOKE(ifnet_rename_event, ifp->ifx_name, new_name);
strlcpy(ifp->if_xname, new_name, sizeof(ifp->if_xname));
> The other (big) problem in this field is, how to handle yet unknown interfaces
> (e.g. USB/Cardbus/ppp/tun/...).
What is about usb/cardbus/... interfaces? Don't they also call
ether_ifattach()/if_attach()?
--
Artis
On Thu, Apr 29, 2004 at 02:22:47PM +0200, Max Laier wrote:
> Yes there is, in -current you will find some eventhandlers (in if_var.h and
> if_clone.h) which allow you to get a notification when an interface arrives
> or leaves. Pf (from OpenBSD 3.5) will use them to do exactly what you are
> planning, to have O(1) interface look-ups.
>
> Attached is my WIP version of the pf interface handling, which might be a bit
> too complex for your purpose, but should give you the idea.
>
> --
> Best regards, | mlaier at freebsd.org
> Max Laier | ICQ #67774661
> http://pf4freebsd.love2party.net/ | mlaier at EFnet
More information about the freebsd-net
mailing list