Jerry,

draw a picture :) it really helps :) for example

        right2left     left2right
                  \   /
[ksocket] ------- [tee] -------- [hole]
            left          right

# ngctl

+ mkpeer hole hook hook -- create ng_hole node
+ name hook hole -- name ng_hole node


+ mkpeer hole: tee right right -- create ng_tee node and connect to hole + name hole:right tee -- name ng_tee node


+ mkpeer tee: ksocket left local/stream/0 -- create ksocket node and connect to tee
+ name tee:left ksocket -- name ksocket node
+ msg ksocket: bind local/"/tmp/foo" -- bind ksocket



+ show tee:
Name: tee Type: tee ID: 00000011 Num hooks: 2
Local hook Peer name Peer type Peer ID Peer hook
---------- --------- --------- ------- ---------
left ksocket ksocket 00000012 local/stream/0
right hole hole 00000010 right




+ show ksocket:
Name: ksocket Type: ksocket ID: 00000012 Num hooks: 1
Local hook Peer name Peer type Peer ID Peer hook
---------- --------- --------- ------- ---------
local/stream/0 tee tee 00000011 left




+ show hole:
Name: hole Type: hole ID: 00000010 Num hooks: 2
Local hook Peer name Peer type Peer ID Peer hook
---------- --------- --------- ------- ---------
right tee tee 00000011 right


hook ngctl8529 socket 0000000f hook



now connect nghook(8) to "tee:left2right" (or you could connect ng_tty node there), then connect to the unix socket at "/tmp/foo" and send something to the socket. you should see output. since we have ng_hole on the "right" then "right2left" will never get any data. if you need to capture traffic from from "right2left" then you will need to connect "one2many" node to both "right2left" (to "one2many:many0") and "right2left" (to "one2name:many1") and then connect your tty node to the "one2many:one" hook

like so

+ mkpeer tee: one2many left2right many0
+ connect tee: tee:left2right right2left many1
+ show one2many:
Name: one2many Type: one2many ID: 00000014 Num hooks: 2
Local hook Peer name Peer type Peer ID Peer hook
---------- --------- --------- ------- ---------
many1 tee tee 00000011 right2left
many0 tee tee 00000011 left2right



+ show tee:
Name: tee Type: tee ID: 00000011 Num hooks: 4
Local hook Peer name Peer type Peer ID Peer hook
---------- --------- --------- ------- ---------
right2left one2many one2many 00000014 many1


left2right one2many one2many 00000014 many0

left ksocket ksocket 00000012 local/stream/0
right hole hole 00000010 right




hope this helps :)

max


Jerry Toung wrote:
Good afternoon list,
I am still trying to build a simple netgraph using ng_tty. Ultimately I would like to go from inet->tee->ng_tty(/dev/cuaa0).


Please advise what I am doing wrong as I still see an error message (see bottom of email). Excuse me for the slighty long thread.

Here is my very simple line discipline code:

        int d;
        int ldisc;
        ldisc = NETGRAPHDISC;

if ((d = open("/dev/cuaa0", O_RDWR)) == -1) {
perror("open");
} else {
printf("descripto # %d\n", d);
if ((ioctl(d, TIOCSETD, &ldisc)) == -1) {
perror("ioctl");
}
}
printf("Netgraph TTY node initialized successfully\nPress any key to destroy it");
getc(stdin);
close(d);
exit;



mrcrab# gcc -g netgraph.c -o test mrcrab# ./test descripto # 3 Netgraph TTY node initialized successfully Press any key to destroy it

+ list
There are 2 total nodes:
  Name: ngctl27022      Type: socket          ID: 0000000a   Num hooks: 0
  Name: tty1            Type: tty             ID: 00000008   Num hooks: 0
+ mpeer . tee myhook right
ngctl: "mpeer": unknown command
+ mkpeer . tee myhook right
+ name .:myhook mytee
+ mkpeer mytee: tty left hook
ngctl: send msg: Operation not permitted
+


_______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"

_______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to