Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 03 Jul 2007 11:18:12 -0700
From:      Julian Elischer <julian@elischer.org>
To:        Martha Pasikatan <magpasikat@yahoo.com>
Cc:        freebsd-net@freebsd.org, Alexander Motin <mav@freebsd.org>
Subject:   Re: Sample Netgraph code that unhooks and rehooks without losing connection
Message-ID:  <468A92E4.8040201@elischer.org>
In-Reply-To: <862996.32073.qm@web44908.mail.sp1.yahoo.com>
References:  <862996.32073.qm@web44908.mail.sp1.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
your mail was ZVERY hard to read becosue you mixed you comments in with my mail 
without distinguishing them in any way.. I missed two of them on first reading.


Martha Pasikatan wrote:
> Julian Elischer <julian@elischer.org> wrote: Alexander Motin wrote:
>> Martha Pasikatan wrote:
>>> I would like to be able to unhook a pppoe node hooked to link0 and 
>>> rehook it to a tee node.  Can anyone give me a sample on how to do this?  
>> That's impossible. As soon as pppoe node hook is disconnected all 
>> related info will be destroyed and session will be terminated. You 
>> should put there some other node like ng_tee to prevent session 
>> termination.
>>

> That means I need to create another hook through make peer, right? 
> Is that at the same path as link0? or inside link0?  

I believe he means you need to add the tee at creation time. "just in case".


> Are some programs dependent on this behavior, because that might cause 
> side-effects on them.  Is netgraph already widely-used by the way? 

yes. it is used by a lot of people for all kinds of strange things.

> 
> Would connecting it to a tee node allow me to forward the packets to 
> another node, without disconnecting the session and at the same time, 
> not have the session processed anymore by the previous node?  Is there already 
> a functionality in netgraph that does this?  I might just not know about it 
> but it already exist.   I could really use something like a divert function 
> not just a copy.

probably another kind of node would be better for that.

maybe you could use a bpf node, or possibly one of the one2many  
modes may be good for you.

Possibly you could write a new note type. "switchpoint" which can be 
switched from one connection to another using a command message.

New netgraph types are very easy to write. The ng_sample.c file 
is a good starting point. take some of the logic from tee
and some of the message handling from one2many (mode setting messages)
and grapfdt them together into a node that does what you want exactly.



(but first look at all the nodes that already exist to see if one 
doesn't already do what you want).




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?468A92E4.8040201>