Netgraph question
Nathanael M Van Vorst
vanvorst at ieee.org
Wed Aug 10 16:34:24 GMT 2005
I sent this is Julian a bit ago. I guess he has been too busy to look into
it, so I hope someone else in the community can help! Somehow I lost the
screen shot I refer to in the message below (but its trival to reproduce).
In brief, the code below is supposed to create a KLD/psuedo-device that I
can pass netgraph items to, then later on have a netgraph node get them
back.
Thanks!
--Nate
---------------------------- Original Message ----------------------------
Subject: Re: netgraph question
From: "Nathanael M Van Vorst" <vanvorst at ieee.org>
Date: Wed, July 27, 2005 11:55 am
To: "Julian Elischer" <julian at elischer.org>
--------------------------------------------------------------------------
Sorry my reply has taken so long. I just got back from vacation.
Thank you for taking the time to help!
I am attaching a bit of code I put together. Its attached as a tar
(test.tar).
Please note, this is just a hack I have put together to see if I can get
this concept working before I integrate this into my larger, rather
complicated, project. The tar should extract into a directory named
"test". "test" will have the folling structure:
test
|-echodev.c
|-Makefile
|-wireMe
|-nateNode
|-nate.h
|-nate.c
|-Makefile
|-registerNode
|-reg.c
|-reg.h
|-Makfile
The tar consits of three things: 1) <nateNode>a node to receive packets,
print a message to the long then drop the message, 2) <registerNode> a
node that calls system module functions and passes all its items to the
system module, 3) <echodev> a system module or more acturatly a
psuedo-device that takes items from a node and puts them on a queue.
"wireMe" just loads the correctly KLDs for me and wires up a very simple
netgraph graph (which follows). <lnc0> is my ethernet device, <reg> is a
registerNode and <nate> is a nateNode.
<lncO> --> <reg> --> <nate>
When <reg> receives the first message, it calls "setMyHook" with the
destination hook to <nate>. "setMyHook" is in the echoDev and simple
stores the pointer if its current pointer is NULL. After <reg> calls
"setMyHook" is calls "addItem". "addItem" is also in echoDev and simply
places the item at the end of the queue. Also in <reg> I have tried alot
of stuff trying to see what is wrong. All the other crap is just that,
crap.
First, I cat echo dev. Them I cause packets to be sent to <reg> and in
turn handed over to the echoDev. After I see echoDev print the syslog that
it has 5 or more items, I "cat /dev/echo". cat'ing /dev/echo should case
echoDev to call NG_FWD with hook that was passed in and first item that
was passed in. This is where it dies.
Below are the set of commands I type in the 'test' as root
cd test
make clean
make
cd nateNode
make clean
make
cd ../registerNode
make clean
make
cd ..
./wireme
cat /dev/echo
<casue packets to be send to lnc0>
cat /dev/echo
--then the kernel panics. The kernel core is trash so it doesnt help. I
am attaching a screen shot of the panic.
Thank you for all your efforts (and for netgraph)!
--Nate
---------------------------------------
Nathanael Van Vorst
Home:
vanvorst at ieee.org
303-274-6396
It is intuitively obvious to even the
most casual of observers!
More information about the freebsd-net
mailing list