A netgraph question.

Bryant Eadon bryant.eadon at gmail.com
Sat Nov 1 16:21:07 PDT 2008

Joe Pellegrino wrote:
  OK so here it goes. I actually have two seperate questions involving
> netgraph, I am new to this subject so please bare with me. If there is a 
> better way to achieve these goals too, please suggest them but I think 
> netgraph is the way to go.
> The first part involves allowing a userland program to communicate with 
> a kernel module, similar to how netlink works in Linux. The second part 
> involves intercepting network packets and possibly manipulating them 
> before they are allowed to proceed, similar to how netfilter works. I 
> believe I can do both of these with the netgraph (ng_socket and possibly 
> ng_ether). I haven't looked closely at ng_ether yet so I'll focus on 
> ng_socket.
> I have been able to create a ng_socket (Control and Data) using the 
> socket call as described in "All About NetGraphs" and the man page. I've 
> also been able to 'name' the node using bind. I was able to verify this 
> using ngctl. I know (from the man page) I should eventually be able to 
> send/receive using the sendto/recvfrom functions once the connection is 
> established. But beyond this I don't know how to proceed. So the 
> question is what are the next steps. For example:
> Although I see a named netgraph node there are no hooks. ng_socket says 
> it supports an arbitrary number of hooks so how do I create the hooks? 
> Then of course how do I connect them.
> Of course I realize that I proabably need to create a node on the kernel 
> side so which type of netgraph node would be suggested? How is it 
> created and then hooked to the ng_socket?
> Again I am looking to allow some IPC between a userland program and a 
> kernel module similar to the Linux netlink. I've been through most man 
> pages and can't seem to find a lot of good documentation or example code 
> so I am hoping to get some pointers here. BTW If this is the wrong list 
> please directly to the right place to ask. Thanks in advance.
> ---jdp

Have you looked into how "systat -ifstat" works ?

More information about the freebsd-questions mailing list