$Header$ -> $Id$
Manpage formatting/grammatical fixes. Check return value of malloc() Add sccsid[], other minor source code cleanups Submitted by: Philippe Charnier
This commit is contained in:
parent
7eecd67861
commit
fe5b4b6aab
@ -1,6 +1,6 @@
|
||||
# @(#)Makefile 5.4 (Berkeley) 5/11/90
|
||||
#
|
||||
# $Header: /home/ncvs/src/sbin/slattach/Makefile,v 1.6 1995/09/20 12:56:23 ache Exp $
|
||||
# $Id$
|
||||
|
||||
PROG= slattach
|
||||
SRCS= slattach.c
|
||||
|
@ -31,7 +31,7 @@
|
||||
.\"
|
||||
.\" @(#)slattach.8 6.4 (Berkeley) 3/16/91
|
||||
.\"
|
||||
.\" $Header: /home/ncvs/src/sbin/slattach/slattach.8,v 1.12 1997/01/13 00:25:46 wosch Exp $
|
||||
.\" $Id$
|
||||
.\"
|
||||
.Dd April 4, 1993
|
||||
.Dt SLATTACH 8
|
||||
@ -61,35 +61,35 @@
|
||||
.Nm Slattach
|
||||
is used to assign a tty line to a network interface,
|
||||
and to define the network source and destination addresses.
|
||||
The following operands are supported by
|
||||
.Nm slattach :
|
||||
.Bl -tag -width Ar
|
||||
.Pp
|
||||
The following options are available:
|
||||
.Bl -tag -width indent
|
||||
.It Fl a
|
||||
Autoenable the VJ header compression option, if the other end of the link
|
||||
is capable of VJ header compression then it will be used otherwise normal
|
||||
headers will be used.
|
||||
.It Fl c
|
||||
Enables the VJ header compression option. Note that both ends of the link
|
||||
Enable the VJ header compression option. Note that both ends of the link
|
||||
must be able to use VJ header compression for this to work.
|
||||
.It Fl e Ar exit-command
|
||||
Specifies a command to be invoked within a shell
|
||||
Specify a command to be invoked within a shell
|
||||
.Ql sh \-c Ar exit-command
|
||||
before
|
||||
.Nm slattach
|
||||
.Nm
|
||||
exits.
|
||||
.It Fl f
|
||||
Disables the invocation of daemon() to run
|
||||
.Nm slattach
|
||||
Disable the invocation of daemon() to run
|
||||
.Nm
|
||||
in the background.
|
||||
.It Fl h
|
||||
Turn on cts/rts style flow control on the slip port, by default no flow
|
||||
control is done.
|
||||
.It Fl l
|
||||
disable modem control (CLOCAL) and ignore carrier detect on the slip
|
||||
Disable modem control (CLOCAL) and ignore carrier detect on the slip
|
||||
port. By default the
|
||||
.Ar redial-command
|
||||
is invoked upon carrier drop and
|
||||
.Nm slattach
|
||||
.Nm
|
||||
aborts if no
|
||||
.Ar redial-command
|
||||
is specified.
|
||||
@ -97,49 +97,51 @@ is specified.
|
||||
Throw away ICMP packets. The slip interface will ignore ICMP packets
|
||||
to prevent slow lines being saturated by ICMP responses.
|
||||
.It Fl r Ar redial-command
|
||||
Specifies a command to be invoked within a shell
|
||||
Specify a command to be invoked within a shell
|
||||
.Ql sh \-c Ar redial-command
|
||||
whenever carrier is lost on the modem line.
|
||||
Empty
|
||||
.Ar redial-command
|
||||
i.e.
|
||||
.Fl r Qq ""
|
||||
(i.e.
|
||||
.Fl r Qq "" )
|
||||
cause connection reestablishing on leased line
|
||||
without any external command invoked.
|
||||
.It Fl s Ar baudrate
|
||||
Specifies the speed of the connection. If not specified, the
|
||||
Specify the speed of the connection. If not specified, the
|
||||
default of 9600 is used.
|
||||
.It Fl u Ar unit-command
|
||||
When the line is switched to slip discipline, run
|
||||
.Ql Nm "sh -c" Ar unit-command <old> <new>
|
||||
.Ql Nm "sh -c" Ar unit-command old new
|
||||
where
|
||||
.Ar <old>
|
||||
.Ar old
|
||||
and
|
||||
.Ar <new>
|
||||
.Ar new
|
||||
are the slip unit numbers when the line was
|
||||
last opened and the unit number of the current slip connection
|
||||
respectively. The unit number can change after redialing if you are
|
||||
using more than one slip line.
|
||||
When
|
||||
.Nm slattach
|
||||
connected first time, it run
|
||||
.Ql Nm "sh -c" Ar unit-command Nm \-1 Ar <new> .
|
||||
.Nm
|
||||
is connected for the first time,
|
||||
.Ql Nm "sh -c" Ar unit-command Nm \-1 Ar new
|
||||
is run.
|
||||
When
|
||||
.Nm slattach
|
||||
disconnected, it run
|
||||
.Ql Nm "sh -c" Ar unit-command <old> Nm \-1 .
|
||||
.Nm
|
||||
is disconnected,
|
||||
.Ql Nm "sh -c" Ar unit-command old Nm \-1
|
||||
is run.
|
||||
.Nm Slattach
|
||||
will abort if the unit number
|
||||
changes and
|
||||
.Ql Fl u Ar \%unit-command
|
||||
was not specified.
|
||||
.It Fl z
|
||||
forces redial
|
||||
Force redial
|
||||
.Ar redial-command
|
||||
upon startup irrespective of carrier.
|
||||
.It Fl L
|
||||
Use uucp-style device locking. You need it unless you start
|
||||
.Nm slattach
|
||||
.Nm
|
||||
from external program which already does uucp locking.
|
||||
Default case is no uucp locking to satisfy such programs.
|
||||
.It Fl K Ar keepalive
|
||||
@ -156,7 +158,7 @@ Set the SLIP unit number directly. Use with caution, because no check is made
|
||||
for two interfaces with same number.
|
||||
By default sliplogin dynamically assigns the unit number.
|
||||
.It Ar ttyname
|
||||
Specifies the name of the tty device.
|
||||
Specify the name of the tty device.
|
||||
.Ar Ttyname
|
||||
should be a string of the form
|
||||
.Ql ttyXX
|
||||
@ -169,15 +171,15 @@ Only the super-user may attach a network interface.
|
||||
To detach the interface, use
|
||||
.Dq Li ifconfig interface-name down
|
||||
after killing off the
|
||||
.Nm slattach
|
||||
.Nm
|
||||
process using
|
||||
.Ql kill -INT .
|
||||
.Ar Interface-name
|
||||
is the name that is shown by
|
||||
.Xr netstat 1
|
||||
.Xr netstat 1 .
|
||||
.Pp
|
||||
To setup
|
||||
.Nm slattach
|
||||
.Nm
|
||||
to redial the phone when carrier is lost, use the
|
||||
.Fl r Ar redial-command
|
||||
option to specify a script or executable that will reconnect the
|
||||
@ -199,7 +201,7 @@ than one line disconnect at the same time. The first to succeed in
|
||||
reconnecting will get the lowest unit number.
|
||||
.Pp
|
||||
To kill
|
||||
.Nm slattach
|
||||
.Nm
|
||||
use
|
||||
.Ql kill -INT
|
||||
(SIGINT) which causes it to close the tty and exit.
|
||||
@ -207,13 +209,13 @@ use
|
||||
To force a redial, use
|
||||
.Ql kill -HUP
|
||||
(SIGHUP) which causes
|
||||
.Nm slattach
|
||||
.Nm
|
||||
to think carrier was lost and thus invoke
|
||||
.Ql sh \-c Ar redial-command
|
||||
to reconnect to the server.
|
||||
.Pp
|
||||
If you use a hard-wired connection rather than a modem, invoke
|
||||
.Nm slattach
|
||||
.Nm
|
||||
with the
|
||||
.Fl l
|
||||
option in order to ignore carrier on the slip line.
|
||||
@ -225,8 +227,9 @@ slattach \-c \-s 38400 /dev/cuaa1
|
||||
slattach \-r 'kermit -y dial.script >kermit.log 2>&1'
|
||||
.Ed
|
||||
.Sh DIAGNOSTICS
|
||||
Look for error messages in /var/log/messages (
|
||||
.Nm slattach
|
||||
Look for error messages in
|
||||
.Pa /var/log/messages
|
||||
.Pf ( Nm slattach
|
||||
is a daemon).
|
||||
Messages indicating the specified interface does not exit, the
|
||||
requested address is unknown, the user is not privileged and tried to
|
||||
@ -237,16 +240,18 @@ signal handlers. Upon connection and redial the ttyname and baud rate
|
||||
are logged and on shutdown the ttyname is logged.
|
||||
.Pp
|
||||
.Sh FILES
|
||||
.Pa /var/run/slattach.<tty>.pid ,
|
||||
.Pp
|
||||
.Bl -tag -width /usr/share/examples/slattach/* -compact
|
||||
.It Pa /var/run/slattach.<tty>.pid
|
||||
with
|
||||
.Ar tty
|
||||
replaced by the terminal path name component of
|
||||
.Ar ttyname .
|
||||
This file contains the numerical process ID of the
|
||||
.Nm slattach
|
||||
.Nm
|
||||
process and can be examined by scripts in order to send a signal to
|
||||
.Nm slattach .
|
||||
.Nm
|
||||
.It Pa /usr/share/examples/slattach/*
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr netstat 1 ,
|
||||
.Xr startslip 1 ,
|
||||
@ -254,8 +259,7 @@ process and can be examined by scripts in order to send a signal to
|
||||
.Xr netintro 4 ,
|
||||
.Xr ifconfig 8 ,
|
||||
.Xr rc 8 ,
|
||||
.Xr sliplogin 8 ,
|
||||
/usr/share/examples/slattach
|
||||
.Xr sliplogin 8
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
|
@ -35,20 +35,22 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char copyright[] =
|
||||
static const char copyright[] =
|
||||
"@(#) Copyright (c) 1988 Regents of the University of California.\n\
|
||||
All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#ifndef lint
|
||||
/*static char sccsid[] = "from: @(#)slattach.c 4.6 (Berkeley) 6/1/90";*/
|
||||
static char rcsid[] = "$Id: slattach.c,v 1.32 1998/06/28 20:33:36 bde Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "from: @(#)slattach.c 4.6 (Berkeley) 6/1/90";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <err.h>
|
||||
#include <fcntl.h>
|
||||
@ -75,7 +77,7 @@ void exit_handler(int ret); /* run exit_cmd iff specified upon exit. */
|
||||
void setup_line(int cflag); /* configure terminal settings */
|
||||
void slip_discipline(); /* switch to slip line discipline */
|
||||
void configure_network(); /* configure slip interface */
|
||||
void acquire_line(); /* get tty device as controling terminal */
|
||||
void acquire_line(); /* get tty device as controlling terminal */
|
||||
static void usage __P((void));
|
||||
|
||||
int fd = -1;
|
||||
@ -94,7 +96,7 @@ int keepal = 0; /* keepalive timeout */
|
||||
int outfill = 0; /* outfill timeout */
|
||||
int sl_unit = -1; /* unit number */
|
||||
int uucp_lock = 0; /* do uucp locking */
|
||||
int exiting = 0; /* allready running exit_handler */
|
||||
int exiting = 0; /* already running exit_handler */
|
||||
|
||||
struct termios tty; /* tty configuration/state */
|
||||
|
||||
@ -117,8 +119,6 @@ int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int option;
|
||||
extern char *optarg;
|
||||
extern int optind;
|
||||
|
||||
while ((option = getopt(argc, argv, "ace:fhlnr:s:u:zLK:O:S:")) != -1) {
|
||||
switch (option) {
|
||||
@ -203,7 +203,7 @@ main(int argc, char **argv)
|
||||
/* daemon() closed stderr, so log errors from here on. */
|
||||
openlog("slattach",LOG_CONS|LOG_PID,LOG_DAEMON);
|
||||
|
||||
acquire_line(); /* get tty device as controling terminal */
|
||||
acquire_line(); /* get tty device as controlling terminal */
|
||||
setup_line(0); /* configure for slip line discipline */
|
||||
slip_discipline(); /* switch to slip line discipline */
|
||||
|
||||
@ -307,7 +307,7 @@ void acquire_line()
|
||||
(void)close (fd);
|
||||
fd = STDIN_FILENO;
|
||||
|
||||
/* acquire the serial line as a controling terminal. */
|
||||
/* acquire the serial line as a controlling terminal. */
|
||||
if (ioctl(fd, TIOCSCTTY, 0) < 0) {
|
||||
syslog(LOG_ERR,"ioctl(TIOCSCTTY): %m");
|
||||
exit_handler(1);
|
||||
@ -404,7 +404,7 @@ void slip_discipline()
|
||||
close(s);
|
||||
}
|
||||
|
||||
/* configure the interface, eg. by passing the unit number to a script. */
|
||||
/* configure the interface, e.g. by passing the unit number to a script. */
|
||||
void configure_network()
|
||||
{
|
||||
int new_unit;
|
||||
@ -418,8 +418,12 @@ void configure_network()
|
||||
if (config_cmd) {
|
||||
char *s;
|
||||
s = (char*) malloc(strlen(config_cmd) + 32);
|
||||
if (s == NULL) {
|
||||
syslog(LOG_ERR, "malloc failed");
|
||||
exit(1);
|
||||
}
|
||||
sprintf (s, "%s %d %d", config_cmd, unit, new_unit);
|
||||
syslog(LOG_NOTICE, "Configuring %s (sl%d):", dev, unit);
|
||||
syslog(LOG_NOTICE, "configuring %s (sl%d):", dev, unit);
|
||||
syslog(LOG_NOTICE, " '%s'", s);
|
||||
system(s);
|
||||
free (s);
|
||||
@ -449,7 +453,7 @@ void sighup_handler()
|
||||
}
|
||||
again:
|
||||
/* invoke a shell for redial_cmd or punt. */
|
||||
if (*redial_cmd) {
|
||||
if (*redial_cmd) { /* Non-empty redial command */
|
||||
syslog(LOG_NOTICE,"SIGHUP on %s (sl%d); running '%s'",
|
||||
dev, unit, redial_cmd);
|
||||
acquire_line(); /* reopen dead line */
|
||||
@ -496,7 +500,7 @@ void sighup_handler()
|
||||
if (!(modem_control & CLOCAL)) {
|
||||
int carrier = 0;
|
||||
|
||||
syslog(LOG_NOTICE, "Waiting for carrier on %s (sl%d)",
|
||||
syslog(LOG_NOTICE, "waiting for carrier on %s (sl%d)",
|
||||
dev, unit);
|
||||
/* Now wait for carrier before attaching line. */
|
||||
/* We must poll since CLOCAL prevents signal. */
|
||||
@ -506,7 +510,7 @@ void sighup_handler()
|
||||
if (comstate & TIOCM_CD)
|
||||
carrier = 1;
|
||||
}
|
||||
syslog(LOG_NOTICE, "Carrier now present on %s (sl%d)",
|
||||
syslog(LOG_NOTICE, "carrier now present on %s (sl%d)",
|
||||
dev, unit);
|
||||
}
|
||||
}
|
||||
@ -569,8 +573,12 @@ void exit_handler(int ret)
|
||||
if (config_cmd) {
|
||||
char *s;
|
||||
s = (char*) malloc(strlen(config_cmd) + 32);
|
||||
if (s == NULL) {
|
||||
syslog(LOG_ERR, "malloc failed");
|
||||
exit(1);
|
||||
}
|
||||
sprintf (s, "%s %d -1", config_cmd, unit);
|
||||
syslog(LOG_NOTICE, "Deconfiguring %s (sl%d):", dev, unit);
|
||||
syslog(LOG_NOTICE, "deconfiguring %s (sl%d):", dev, unit);
|
||||
syslog(LOG_NOTICE, " '%s'", s);
|
||||
system(s);
|
||||
free (s);
|
||||
|
Loading…
Reference in New Issue
Block a user