[TEST/REVIEW #2] ng_ipfw: node to glue together ipfw(4) and
netgraph(4)
Gleb Smirnoff
glebius at freebsd.org
Tue Jan 25 00:37:37 PST 2005
On Tue, Jan 25, 2005 at 09:29:50AM +0100, Andre Oppermann wrote:
A> > On Tue, Jan 25, 2005 at 09:09:53AM +0100, Andre Oppermann wrote:
A> > A> I don't like the arbitrary back-passing of errors from ng_ipfw. I'm
A> > A> fine with EACCES, ENOMEM and ESRCH (if hook not connected) but nothing
A> > A> else. Getting back any other error is very confusing and non-intuitive
A> > A> when looking at the error of an application having packets sunk there.
A> >
A> > So you want "return (0)" at end of ng_ipfw_input()? My vote is against.
A> > Julian, Brooks?
A>
A> No, I want only get EACCES, ENOMEM or ESRCH back and nothing else.
A> I didn't I want only "return (0)".
ENOMEM and ESRCH can be returned by ng_ipfw_input() itself. EACCES can be returned
by ipfw_check_{in,out}. All other errors can be returned indirectly by other
nodes, via NG_SEND_DATA_ONLY() macro. These errors are out of our control.
Do you want this construction at end of ng_ipfw_input()?
NG_SEND_DATA_ONLY(error, hook, m);
if (error == EACCES ||
error == ENOMEM ||
error == ESRCH)
return (error);
else
return (0);
A> > A> Why don't you prepend the m_tag within ip_fw2.c as altq and divert are
A> > A> doing it? Dummynet should do the same to get it consistent again.
A> >
A> > Not sure that this is good. These tags are foreign to ipfw, they belong
A> > to other facilities.
A>
A> I guess ng_ipfw is pretty much specific to ipfw, no?
Yes. I thought it is better to allocate tag only after a sending hook was found.
I will accept after I hear more opinions.
A> > A> Just to confirm it, NG_SEND_DATA_ONLY() queues the packet unconditionally
A> > A> to unwind the stack?
A> >
A> > No. The stack will be unwinded when packet travels thru netgraph and returned
A> > back to ng_ipfw node. A new ISR will start with ng_ipfw_rcvdata(). This mode
A> > is configured in ng_ipfw_connect().
A>
A> What if the packet doesn't make its way back to ng_ipfw? I can imagine a
A> lot of configurations where this may happen (intential). The problem comes
A> back again and is much less obvious if the stack breaks.
If the packet does not come back to ng_ipfw, then we do not have any recursion
and stack problems.
--
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
More information about the freebsd-net
mailing list