Date: Wed, 30 Mar 2005 19:07:15 -0800 From: Jerry Toung <jtoung@arc.nasa.gov> To: Maksim Yevmenkin <maksim.yevmenkin@savvis.net> Cc: Julian Elischer <julian@elischer.org> Subject: Re: netgraph TTY Message-ID: <200503301907.15654.jtoung@arc.nasa.gov> In-Reply-To: <424B50EC.1020502@savvis.net> References: <200503301620.24086.jtoung@arc.nasa.gov> <424B50EC.1020502@savvis.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Hey Max, all I can say is thank you. That's a very nice tutorial. I am sure other people will benefit. Take care my friend. Jerry On Wednesday 30 March 2005 05:22 pm, Maksim Yevmenkin wrote: > 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 > > "freebsd-hackers-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503301907.15654.jtoung>