summaryrefslogtreecommitdiffstats
path: root/usr.sbin/nghook
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/nghook')
-rw-r--r--usr.sbin/nghook/Makefile11
-rw-r--r--usr.sbin/nghook/main.c309
-rw-r--r--usr.sbin/nghook/nghook.8145
3 files changed, 0 insertions, 465 deletions
diff --git a/usr.sbin/nghook/Makefile b/usr.sbin/nghook/Makefile
deleted file mode 100644
index e427f26..0000000
--- a/usr.sbin/nghook/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# $FreeBSD$
-# $Whistle: Makefile,v 1.4 1999/01/16 04:44:33 archie Exp $
-
-PROG= nghook
-MAN= nghook.8
-SRCS= main.c
-
-DPADD= ${LIBNETGRAPH}
-LDADD= -lnetgraph
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/nghook/main.c b/usr.sbin/nghook/main.c
deleted file mode 100644
index 700ca5e..0000000
--- a/usr.sbin/nghook/main.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * main.c
- *
- * Copyright (c) 1996-1999 Whistle Communications, Inc.
- * All rights reserved.
- *
- * Subject to the following obligations and disclaimer of warranty, use and
- * redistribution of this software, in source or object code forms, with or
- * without modifications are expressly permitted by Whistle Communications;
- * provided, however, that:
- * 1. Any and all reproductions of the source or object code must include the
- * copyright notice above and the following disclaimer of warranties; and
- * 2. No rights are granted, in any manner or form, to use Whistle
- * Communications, Inc. trademarks, including the mark "WHISTLE
- * COMMUNICATIONS" on advertising, endorsements, or otherwise except as
- * such appears in the above copyright notice or in the software.
- *
- * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
- * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
- * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
- * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
- * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
- * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
- * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
- * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
- * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
- * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * $Whistle: main.c,v 1.9 1999/01/20 00:26:26 archie Exp $
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <sysexits.h>
-#include <errno.h>
-#include <err.h>
-#include <stringlist.h>
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/select.h>
-
-#include <netgraph.h>
-
-#define DEFAULT_HOOKNAME "debug"
-#define NG_SOCK_HOOK_NAME "hook"
-
-#define BUF_SIZE (64 * 1024)
-
-static void WriteAscii(u_char * buf, int len);
-static void Usage(void);
-static void send_msgs(int, const char *);
-
-static int outfd = STDOUT_FILENO;
-static int infd = STDIN_FILENO;
-
-static StringList *msgs;
-
-/*
- * main()
- */
-int
-main(int ac, char *av[])
-{
- struct ngm_connect ngc;
- const char *path = NULL;
- const char *hook = DEFAULT_HOOKNAME;
- int csock, dsock;
- int asciiFlag = 0;
- int loopFlag = 0;
- int noInput = 0;
- int execFlag = 0;
- int ch;
-
- if ((msgs = sl_init()) == NULL)
- err(EX_OSERR, NULL);
-
- /* Parse flags */
- while ((ch = getopt(ac, av, "aedlm:nsS")) != -1) {
- switch (ch) {
- case 'a':
- asciiFlag = 1;
- break;
- case 'd':
- NgSetDebug(NgSetDebug(-1) + 1);
- break;
- case 'e':
- execFlag = 1;
- break;
- case 'l':
- loopFlag = 1;
- break;
- case 'n':
- noInput = 1;
- break;
- case 'm':
- if (sl_add(msgs, optarg) == -1)
- err(EX_OSERR, NULL);
- break;
- case 's':
- outfd = STDIN_FILENO;
- break;
- case 'S':
- infd = STDOUT_FILENO;
- break;
- case '?':
- default:
- Usage();
- }
- }
- ac -= optind;
- av += optind;
-
- if (execFlag) {
- if (asciiFlag || loopFlag) {
- fprintf(stderr, "conflicting options\n");
- Usage();
- }
- if (ac < 3)
- Usage();
- path = av[0];
- hook = av[1];
- av += 2;
- ac -= 2;
- } else {
- /* Get params */
- switch (ac) {
- case 2:
- hook = av[1];
- /* FALLTHROUGH */
- case 1:
- path = av[0];
- break;
- default:
- Usage();
- }
- }
-
- /* Get sockets */
- if (NgMkSockNode(NULL, &csock, &dsock) < 0)
- errx(EX_OSERR, "can't get sockets");
-
- /* Connect socket node to specified node */
- snprintf(ngc.path, sizeof(ngc.path), "%s", path);
- snprintf(ngc.ourhook, sizeof(ngc.ourhook), NG_SOCK_HOOK_NAME);
- snprintf(ngc.peerhook, sizeof(ngc.peerhook), "%s", hook);
-
- if (NgSendMsg(csock, ".",
- NGM_GENERIC_COOKIE, NGM_CONNECT, &ngc, sizeof(ngc)) < 0)
- errx(EX_OSERR, "can't connect to node");
-
- if (execFlag) {
- /* move dsock to fd 0 and 1 */
- (void)close(0);
- (void)close(1);
- if (!noInput)
- (void)dup2(dsock, 0);
- (void)dup2(dsock, 1);
-
- send_msgs(csock, path);
-
- /* try executing the program */
- (void)execv(av[0], av);
- err(EX_OSERR, "%s", av[0]);
-
- } else
- send_msgs(csock, path);
-
- /* Close standard input if not reading from it */
- if (noInput)
- fclose(stdin);
-
- /* Relay data */
- while (1) {
- fd_set rfds;
-
- /* Setup bits */
- FD_ZERO(&rfds);
- if (!noInput)
- FD_SET(infd, &rfds);
- FD_SET(dsock, &rfds);
-
- /* Wait for something to happen */
- if (select(FD_SETSIZE, &rfds, NULL, NULL, NULL) < 0)
- err(EX_OSERR, "select");
-
- /* Check data from socket */
- if (FD_ISSET(dsock, &rfds)) {
- char buf[BUF_SIZE];
- int rl, wl;
-
- /* Read packet from socket */
- if ((rl = NgRecvData(dsock,
- buf, sizeof(buf), NULL)) < 0)
- err(EX_OSERR, "read(hook)");
- if (rl == 0)
- errx(EX_OSERR, "read EOF from hook?!");
-
- /* Write packet to stdout */
- if (asciiFlag)
- WriteAscii((u_char *) buf, rl);
- else if ((wl = write(outfd, buf, rl)) != rl) {
- if (wl < 0) {
- err(EX_OSERR, "write(stdout)");
- } else {
- errx(EX_OSERR,
- "stdout: read %d, wrote %d",
- rl, wl);
- }
- }
- /* Loopback */
- if (loopFlag) {
- if (NgSendData(dsock, NG_SOCK_HOOK_NAME, buf, rl) < 0)
- err(EX_OSERR, "write(hook)");
- }
- }
-
- /* Check data from stdin */
- if (FD_ISSET(infd, &rfds)) {
- char buf[BUF_SIZE];
- int rl;
-
- /* Read packet from stdin */
- if ((rl = read(infd, buf, sizeof(buf))) < 0)
- err(EX_OSERR, "read(stdin)");
- if (rl == 0)
- errx(EX_OSERR, "EOF(stdin)");
-
- /* Write packet to socket */
- if (NgSendData(dsock, NG_SOCK_HOOK_NAME, buf, rl) < 0)
- err(EX_OSERR, "write(hook)");
- }
- }
-}
-
-/*
- * Dump data in hex and ASCII form
- */
-static void
-WriteAscii(u_char *buf, int len)
-{
- char ch, sbuf[100];
- int k, count;
-
- for (count = 0; count < len; count += 16) {
- snprintf(sbuf, sizeof(sbuf), "%04x: ", count);
- for (k = 0; k < 16; k++)
- if (count + k < len)
- snprintf(sbuf + strlen(sbuf),
- sizeof(sbuf) - strlen(sbuf),
- "%02x ", buf[count + k]);
- else
- snprintf(sbuf + strlen(sbuf),
- sizeof(sbuf) - strlen(sbuf), " ");
- snprintf(sbuf + strlen(sbuf), sizeof(sbuf) - strlen(sbuf), " ");
- for (k = 0; k < 16; k++)
- if (count + k < len) {
- ch = isprint(buf[count + k]) ?
- buf[count + k] : '.';
- snprintf(sbuf + strlen(sbuf),
- sizeof(sbuf) - strlen(sbuf), "%c", ch);
- } else
- snprintf(sbuf + strlen(sbuf),
- sizeof(sbuf) - strlen(sbuf), " ");
- snprintf(sbuf + strlen(sbuf),
- sizeof(sbuf) - strlen(sbuf), "\n");
- (void) write(outfd, sbuf, strlen(sbuf));
- }
- ch = '\n';
- write(outfd, &ch, 1);
-}
-
-/*
- * Display usage and exit
- */
-static void
-Usage(void)
-{
- fprintf(stderr, "usage: nghook [-adlnsS] path [hookname]\n");
- fprintf(stderr, " or: nghook -e [-n] [-m msg]* path hookname prog "
- "[args...]\n");
- exit(EX_USAGE);
-}
-
-/*
- * Send the messages to the node
- */
-static void
-send_msgs(int cs, const char *path)
-{
- u_int i;
-
- for (i = 0; i < msgs->sl_cur; i++)
- if (NgSendAsciiMsg(cs, path, "%s", msgs->sl_str[i]) == -1)
- err(EX_OSERR, "sending message '%s'", msgs->sl_str[i]);
-}
diff --git a/usr.sbin/nghook/nghook.8 b/usr.sbin/nghook/nghook.8
deleted file mode 100644
index 7d2c7fa..0000000
--- a/usr.sbin/nghook/nghook.8
+++ /dev/null
@@ -1,145 +0,0 @@
-.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
-.\" All rights reserved.
-.\"
-.\" Subject to the following obligations and disclaimer of warranty, use and
-.\" redistribution of this software, in source or object code forms, with or
-.\" without modifications are expressly permitted by Whistle Communications;
-.\" provided, however, that:
-.\" 1. Any and all reproductions of the source or object code must include the
-.\" copyright notice above and the following disclaimer of warranties; and
-.\" 2. No rights are granted, in any manner or form, to use Whistle
-.\" Communications, Inc. trademarks, including the mark "WHISTLE
-.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
-.\" such appears in the above copyright notice or in the software.
-.\"
-.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
-.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
-.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
-.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
-.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
-.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
-.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
-.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
-.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
-.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
-.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
-.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY
-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-.\" THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
-.\" OF SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\" $Whistle: nghook.8,v 1.4 1999/01/20 03:19:45 archie Exp $
-.\"
-.Dd October 24, 2003
-.Dt NGHOOK 8
-.Os
-.Sh NAME
-.Nm nghook
-.Nd connect to a
-.Xr netgraph 4
-node
-.Sh SYNOPSIS
-.Nm
-.Op Fl adlnSs
-.Op Fl m Ar msg
-.Ar path
-.Op Ar hookname
-.Nm
-.Fl e
-.Op Fl n
-.Op Fl m Ar msg
-.Ar path
-.Ar hookname
-.Ar program
-.Op Ar args ...
-.Sh DESCRIPTION
-The
-.Nm
-utility creates a
-.Xr ng_socket 4
-socket type node and connects it to hook
-.Ar hookname
-of the node found at
-.Ar path .
-If
-.Ar hookname
-is omitted,
-.Dq Li debug
-is assumed.
-.Pp
-If the
-.Fl e
-option is given, the third argument is interpreted as the path to a program,
-and this program is executed with the remaining arguments as its arguments.
-Before executing, the program Netgraph messages (specified by the
-.Fl m
-option) are sent to the node.
-The program is executed with its standard input (unless closed by
-.Fl n )
-and output connected to the hook.
-.Pp
-If the
-.Fl e
-option is not given, all data written to standard input is sent
-to the node, and all data received from the node is relayed
-to standard output.
-Messages specified with
-.Fl m
-are sent to the node before the loop is entered.
-The
-.Nm
-utility exits when
-.Dv EOF
-is detected on standard input in this case.
-.Pp
-The options are as follows:
-.Bl -tag -width indent
-.It Fl a
-Output each packet read in human-readable decoded
-.Tn ASCII
-form instead of raw binary.
-.It Fl d
-Increase the debugging verbosity level.
-.It Fl e
-Execute the program specified by the third argument.
-.It Fl l
-Loops all received data back to the hook in addition to writing it
-to standard output.
-.It Fl m Ar msg
-Before executing the program (in
-.Fl e
-mode) send the given ASCII control message to the node.
-This option may be given more than once.
-.It Fl n
-Do not attempt to read any data from standard input.
-The
-.Nm
-utility will continue reading from the node until stopped by a signal.
-.It Fl S
-Use file descriptor 0 for output instead of the default 1.
-.It Fl s
-Use file descriptor 1 for input instead of the default 0.
-.El
-.Sh SEE ALSO
-.Xr netgraph 3 ,
-.Xr netgraph 4 ,
-.Xr ngctl 8
-.Sh HISTORY
-The
-.Nm netgraph
-system was designed and first implemented at Whistle Communications, Inc.\&
-in a version of
-.Fx 2.2
-customized for the Whistle InterJet.
-.Sh AUTHORS
-.An Archie Cobbs Aq archie@whistle.com
-.Sh BUGS
-Although all input is read in unbuffered mode,
-there is no way to control the packetization of the input.
-.Pp
-If the node sends a response to a message (specified by
-.Fl m ) ,
-this response is lost.
OpenPOWER on IntegriCloud