/* -*-c-*-
*
- * $Id: tripe.c,v 1.14 2004/04/18 18:08:11 mdw Exp $
+ * $Id$
*
* Main program
*
static void usage(FILE *fp)
{
- pquis(fp, "Usage: $ [-D] [-d dir] [-b addr] [-p port]\n\
- [-U user] [-G group] [-a socket] [-T trace-opts]\n\
- [-k priv-keyring] [-K pub-keyring] [-t key-tag]\n");
+ pquis(fp, "Usage: $ [-D] [-d DIR] [-b ADDR] [-p PORT]\n\
+ [-U USER] [-G GROUP] [-a SOCKET] [-T TRACE-OPTS]\n\
+ [-k PRIV-KEYRING] [-K PUB-KEYRING] [-t KEY-TAG]\n");
}
static void version(FILE *fp)
-h, --help Display this help text.\n\
-v, --version Display version number.\n\
-u, --usage Display pointless usage message.\n\
+ --tunnel Display IP tunnelling technique and exit.\n\
\n\
-D, --daemon Run in the background.\n\
-d, --directory=DIR Switch to directory DIR [default " CONFIGDIR "].\n\
{ 0, 0, 0, 0 }
};
- int i = mdwopt(argc, argv, "hvu DU:G: b:p:d:k:K:t:a:" T("T:"),
+ int i = mdwopt(argc, argv, "hvuDU:G:b:p:d:k:K:t:a:" T("T:"),
opts, 0, 0, 0);
if (i < 0)
break;
break;
#endif
case '0': {
- static const char *tun[] = { "notdef", "unet", "bsd", "linux" };
+ static const char *tun[] =
+ { "notdef", "unet", "bsd", "linux", "slip" };
puts(tun[TUN_TYPE]);
exit(0);
} break;
signal(SIGPIPE, SIG_IGN);
tun_init();
p_init(baddr, port);
- if (!(f & f_daemon))
- a_create(STDIN_FILENO, STDOUT_FILENO);
+ if (!(f & f_daemon)) {
+#ifndef NTRACE
+ a_create(STDIN_FILENO, STDOUT_FILENO, AF_TRACE | AF_WARN);
+#else
+ a_create(STDIN_FILENO, STDOUT_FILENO, AF_WARN);
+#endif
+ }
if (g != (gid_t)-1) {
if (setgid(g) || (getuid() == 0 && setgroups(1, &g))) {
die(EXIT_FAILURE, "couldn't setgid to %u: %s",
if (!sel_select(&sel))
selerr = 0;
else if (errno != EINTR && errno != EAGAIN) {
- a_warn("select failed: %s", strerror(errno));
+ a_warn("SERVER select-error -- %s", strerror(errno));
selerr++;
if (selerr > 8) {
- a_warn("too many select errors: bailing out");
- a_quit();
+ a_warn("ABORT repeated-select-errors");
+ abort();
}
}
}