From owner-freebsd-hackers@FreeBSD.ORG Thu Mar 31 03:05:33 2005 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3CCDF16A4CE for ; Thu, 31 Mar 2005 03:05:33 +0000 (GMT) Received: from pop-a065d23.pas.sa.earthlink.net (pop-a065d23.pas.sa.earthlink.net [207.217.121.254]) by mx1.FreeBSD.org (Postfix) with ESMTP id 04A0043D49 for ; Thu, 31 Mar 2005 03:05:33 +0000 (GMT) (envelope-from jtoung@arc.nasa.gov) Received: from h-68-164-242-172.snvacaid.dynamic.covad.net ([68.164.242.172]) by pop-a065d23.pas.sa.earthlink.net with esmtp (Exim 3.36 #10) id 1DGpzv-0007UY-00; Wed, 30 Mar 2005 19:05:31 -0800 From: Jerry Toung To: Maksim Yevmenkin Date: Wed, 30 Mar 2005 19:07:15 -0800 User-Agent: KMail/1.5.4 References: <200503301620.24086.jtoung@arc.nasa.gov> <424B50EC.1020502@savvis.net> In-Reply-To: <424B50EC.1020502@savvis.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200503301907.15654.jtoung@arc.nasa.gov> cc: hackers cc: Julian Elischer Subject: Re: netgraph TTY X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Mar 2005 03:05:33 -0000 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"