Hi Jian-Wei, Thursday, May 6, 2004, 6:46:16 PM, you wrote:
JWW> Hi, I spent times to figure out the packet flow with ng_ether, like this: JWW> upper layer JWW> | JWW> ^ JWW> [ether_demux] JWW> ^ JWW> | JWW> +---<---[ng_ether_rcvdata]--<-- 'upper' --<--, JWW> ^ \ JWW> <--[bdg_forward]--<--+ ng_tee JWW> | / JWW> +--->---[ng_ether_input]---->-- 'lower' -->--` JWW> ^ JWW> [ether_input] JWW> ^ JWW> | JWW> device JWW> Why the [ng_ether_rcvdata] won't check if packets should travel to JWW> the [bdg_forward] when they are bridged packets? This is how it should work, you get entrance to low level network (lower hook) and upper level (upper). To bridge or not to bridge figuring out with ng_bridge or other ng_* modules is up to you to decide. And what is a strange direct link between [ether_demux] and [ether_input]? When connecting anything to upper or lower hooks of ng_ether this link no longer exists. Or you have changed code of ng_ether and/or if_ethersubr.c then probably you should ask yourself why it's not working, is it? :) JWW> i.e. Should the packet flow be changed to this one? JWW> upper layer JWW> | JWW> ^ JWW> [ether_demux] JWW> ^ JWW> <--[bdg_forward]--<--+ JWW> | JWW> +---<---[ng_ether_rcvdata]--<-- 'upper' --<--, JWW> ^ \ JWW> | ng_tee JWW> | / JWW> +--->---[ng_ether_input]---->-- 'lower' -->--` JWW> ^ JWW> [ether_input] JWW> ^ JWW> | JWW> device JWW> Sincerely Yours, JWW> Jian-Wei Wang JWW> _______________________________________________ JWW> [EMAIL PROTECTED] mailing list JWW> http://lists.freebsd.org/mailman/listinfo/freebsd-net JWW> To unsubscribe, send any mail to "[EMAIL PROTECTED]" -- Andrew mailto:[EMAIL PROTECTED] _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[EMAIL PROTECTED]"