ng_ksocket as divert socket is broken

Gleb Smirnoff glebius at freebsd.org
Tue Nov 9 12:57:06 PST 2004


  Brian,

  doing a serie of tests I have found that this commit
has introduced regression described below:

http://lists.freebsd.org/pipermail/cvs-src/2004-October/032888.html

Now I'm working on this, but I'd be glad if you join.

On Tue, Nov 09, 2004 at 11:29:03AM +0300, Gleb Smirnoff wrote:
T>   I've recently noticed a regression between RELENG_5 and CURRENT.
T> In CURRENT ng_ksocket is unable to work as divert socket. Since
T> you have touched divert code recently I'm asking you. Today I'm
T> going to dig deeply there, but probably you can give some ideas
T> without investigation.
T> 
T> A test for this functionality looks like this:
T> 
T> /usr/sbin/ngctl -f- <<-SEQ
T> 	mkpeer echo dummy dummy
T> 	name .:dummy echo_div
T> 	mkpeer echo_div: ksocket echo inet/raw/divert
T> 	name echo_div:echo div_sock
T> 	rmhook dummy
T> 	msg div_sock: bind inet/0.0.0.0:8888
T> SEQ
T> 
T> ipfw add 1000 divert 8888 all from any to any via fxp0
T> 
T> And packets should flow thru fxp0 in both directions. Do not
T> try lo0, there are some problems in there.
T> 
T> You also need this patch (going to commit it soon), if you are
T> running INVARIANTS:
T> 
T> --- ip_divert.c 25 Oct 2004 20:02:34 -0000      1.106
T> +++ ip_divert.c 9 Nov 2004 08:27:24 -0000
T> @@ -277,7 +277,7 @@
T>         struct divert_tag *dt;
T>         int error = 0;
T>  
T> -       KASSERT(m->m_pkthdr.rcvif == NULL, ("rcvif not null"));
T> +       m->m_pkthdr.rcvif = NULL;
T>  
T>         if (control)
T>                 m_freem(control);               /* XXX */
T> 

-- 
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE


More information about the freebsd-net mailing list