netgraph TTY
Jerry Toung
jtoung at arc.nasa.gov
Wed Mar 30 19:05:33 PST 2005
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 at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> > To unsubscribe, send any mail to
> > "freebsd-hackers-unsubscribe at freebsd.org"
More information about the freebsd-hackers
mailing list