Files
oldlinux-files/ftp-archives/tsx-11.mit.edu/1996-10-07/sources/sbin/dip337g-uri-jpm.diff
2024-02-19 00:24:15 -05:00

773 lines
19 KiB
Diff

diff -rc dip-3.3.7g/Makefile dip-3.3.7h/Makefile
*** dip-3.3.7g/Makefile Wed Aug 31 02:04:05 1994
--- dip-3.3.7h/Makefile Fri Sep 2 12:45:40 1994
***************
*** 32,45 ****
# would like (:-). I don't use it myself, won't test
# it and won't care.
! SKEYDEF = -DSKEY
! SKEYLIB = -L/usr/local/lib -lskey
CC = gcc -pipe -O6 -Wall -m486 -fomit-frame-pointer
LD = gcc
CFLAGS = -DLINUX $(SKEYDEF)
! LDFLAGS = -s -N
LIBS = $(SKEYLIB)
--- 32,45 ----
# would like (:-). I don't use it myself, won't test
# it and won't care.
! #SKEYDEF = -DSKEY
! #SKEYLIB = -L/usr/local/lib -lskey
CC = gcc -pipe -O6 -Wall -m486 -fomit-frame-pointer
LD = gcc
CFLAGS = -DLINUX $(SKEYDEF)
! LDFLAGS = -s -Xlinker -qmagic
LIBS = $(SKEYLIB)
diff -rc dip-3.3.7g/README dip-3.3.7h/README
*** dip-3.3.7g/README Tue Aug 30 22:24:22 1994
--- dip-3.3.7h/README Fri Sep 2 12:45:40 1994
***************
*** 85,92 ****
Oh, Pauline's patches add the ability not to have DIP users
listed in /etc/passwd file at all, being completely defined
! in /etc/diphosts... I don't like it, but if you want it,
! you get it.
TAKE A LOOK at "sample.dip" file - it's there for a purpose. (:-)
SAME IS TRUE for "diphosts".
--- 85,92 ----
Oh, Pauline's patches add the ability not to have DIP users
listed in /etc/passwd file at all, being completely defined
! in /etc/diphosts... (Ala taylor UUCP) I don't like it, but
! if you want it, you get it.
TAKE A LOOK at "sample.dip" file - it's there for a purpose. (:-)
SAME IS TRUE for "diphosts".
diff -rc dip-3.3.7g/attach.c dip-3.3.7h/attach.c
*** dip-3.3.7g/attach.c Wed Aug 31 06:44:51 1994
--- dip-3.3.7h/attach.c Fri Sep 2 12:45:40 1994
***************
*** 314,332 ****
int
! attach(char *name, struct dip *dip)
{
char buff[1024];
- bzero(buff, sizeof(buff));
-
memcpy((char *)&_dip, (char *)dip, sizeof(struct dip));
/* Some more updates will be here - made by Paul Cadach */
/* Set up for "upping" the desired interface. */
sprintf(buff, "%s %s %s pointopoint ", _PATH_BIN_IFCONFIG,
! name, inet_ntoa(dip->loc_ip));
sprintf(&buff[strlen(buff)], "%s mtu %d ",
inet_ntoa(dip->rmt_ip), dip->mtu);
if (dip->netmask[0] != '\0')
--- 314,330 ----
int
! attach(struct dip *dip)
{
char buff[1024];
memcpy((char *)&_dip, (char *)dip, sizeof(struct dip));
/* Some more updates will be here - made by Paul Cadach */
/* Set up for "upping" the desired interface. */
sprintf(buff, "%s %s %s pointopoint ", _PATH_BIN_IFCONFIG,
! dip->ifname, inet_ntoa(dip->loc_ip));
sprintf(&buff[strlen(buff)], "%s mtu %d ",
inet_ntoa(dip->rmt_ip), dip->mtu);
if (dip->netmask[0] != '\0')
***************
*** 338,344 ****
/* Add route to the remote IP addr */
sprintf(buff, "%s add %s %s", _PATH_BIN_ROUTE,
! inet_ntoa(dip->rmt_ip), name);
if (opt_v)
syslog(LOG_INFO, ">>> ATTACH \"%s\"\n", buff);
if (system(buff) != 0) return(-1);
--- 336,342 ----
/* Add route to the remote IP addr */
sprintf(buff, "%s add %s %s", _PATH_BIN_ROUTE,
! inet_ntoa(dip->rmt_ip), dip->ifname);
if (opt_v)
syslog(LOG_INFO, ">>> ATTACH \"%s\"\n", buff);
if (system(buff) != 0) return(-1);
***************
*** 346,352 ****
/* the default route goes over the LOCAL adaptor... */
if (dip->rtdefault == 1) {
sprintf(buff, "%s add -net default gw %s metric %1d %s",
! _PATH_BIN_ROUTE, inet_ntoa(dip->rmt_ip), 1, name);
if (opt_v)
syslog(LOG_INFO, ">>> ATTACH \"%s\"\n", buff);
if (system(buff) != 0) return(-1);
--- 344,350 ----
/* the default route goes over the LOCAL adaptor... */
if (dip->rtdefault == 1) {
sprintf(buff, "%s add -net default gw %s metric %1d %s",
! _PATH_BIN_ROUTE, inet_ntoa(dip->rmt_ip), 1, dip->ifname);
if (opt_v)
syslog(LOG_INFO, ">>> ATTACH \"%s\"\n", buff);
if (system(buff) != 0) return(-1);
***************
*** 355,361 ****
else {
/* hosts get added by their local address too.. */
sprintf(buff, "%s add -host %s %s", _PATH_BIN_ROUTE,
! inet_ntoa(dip->loc_ip), name);
if (opt_v)
syslog(LOG_INFO, ">>> ATTACH \"%s\"\n", buff);
if (system(buff) != 0) return(-1);
--- 353,359 ----
else {
/* hosts get added by their local address too.. */
sprintf(buff, "%s add -host %s %s", _PATH_BIN_ROUTE,
! inet_ntoa(dip->loc_ip), dip->ifname);
if (opt_v)
syslog(LOG_INFO, ">>> ATTACH \"%s\"\n", buff);
if (system(buff) != 0) return(-1);
***************
*** 372,391 ****
void
! detach(char *name, struct dip *dip)
{
char buff[1024];
static int flag = 0;
- bzero(buff, sizeof(buff));
-
/* To make sure we're not called more than once! */
if (flag != 0)
return;
flag = 1;
/* Set up for "downing" the desired interface. */
! sprintf(buff, "%s %s down", _PATH_BIN_IFCONFIG, name);
if (opt_v)
syslog(LOG_INFO, ">>> DETACH \"%s\"\n", buff);
(void) system(buff);
--- 370,387 ----
void
! detach(struct dip *dip)
{
char buff[1024];
static int flag = 0;
/* To make sure we're not called more than once! */
if (flag != 0)
return;
flag = 1;
/* Set up for "downing" the desired interface. */
! sprintf(buff, "%s %s down", _PATH_BIN_IFCONFIG, dip->ifname);
if (opt_v)
syslog(LOG_INFO, ">>> DETACH \"%s\"\n", buff);
(void) system(buff);
diff -rc dip-3.3.7g/command.c dip-3.3.7h/command.c
*** dip-3.3.7g/command.c Wed Aug 31 06:39:52 1994
--- dip-3.3.7h/command.c Fri Sep 2 12:45:40 1994
***************
*** 1118,1131 ****
return(i);
}
- /* Quit upon error - reset the tty to the proper ldisc */
- static int
- do_quit(int argc, char *argv[])
- {
- (void) tty_close();
- exit(1);
- }
-
/* Store the netmask in "mydip" structure */
static int
do_netmask(int argc, char *argv[])
--- 1118,1123 ----
***************
*** 1153,1162 ****
return(0);
}
static int do_proxyarp(int argc, char *argv[])
{
if (argc != 1) {
! fprintf(stderr, "Usage: default\n");
return(-1);
}
if (opt_v == 1) printf("Setting Proxy ARP entry...\n");
--- 1145,1168 ----
return(0);
}
+ /* Set timeout */
+ static int
+ do_timeout(int argc, char *argv[])
+ {
+ if (argc != 2) {
+ fprintf(stderr, "Usage: timeout <secs>\n");
+ return(-1);
+ }
+ mydip.timeout = atoi(argv[1]);
+ if (opt_v == 1) printf("Timeout set to %d seconds\n",mydip.timeout);
+
+ return(0);
+ }
+
static int do_proxyarp(int argc, char *argv[])
{
if (argc != 1) {
! fprintf(stderr, "Usage: proxyarp\n");
return(-1);
}
if (opt_v == 1) printf("Setting Proxy ARP entry...\n");
***************
*** 1499,1505 ****
{ "proxyarp", do_proxyarp },
{ "print", do_print },
{ "port", do_port },
- { "quit", do_quit },
{ "reset", do_reset },
{ "send", do_send },
#ifdef SKEY
--- 1505,1510 ----
***************
*** 1509,1514 ****
--- 1514,1520 ----
{ "speed", do_speed },
{ "stopbits", do_stopbits },
{ "term", do_term },
+ { "timeout", do_timeout },
{ "wait", do_wait },
{ (char *)NULL, NULL }
};
***************
*** 1598,1602 ****
cleanup();
#endif
! exit(0);
}
--- 1604,1608 ----
cleanup();
#endif
! exit(errlevel);
}
diff -rc dip-3.3.7g/daemon.c dip-3.3.7h/daemon.c
*** dip-3.3.7g/daemon.c Wed Aug 31 00:13:26 1994
--- dip-3.3.7h/daemon.c Fri Sep 2 12:45:40 1994
***************
*** 87,92 ****
--- 87,108 ----
(void) fclose(fp);
}
+ static
+ void readifc(char *ifname, int *TX, int *RX)
+ {
+ FILE *fp = fopen("/proc/net/dev","r");
+ char buf[255];
+
+ while (fgets(buf,sizeof(buf),fp)) {
+ char *bp = buf;
+ while (*bp && isspace(*bp)) bp++;
+ if (strncmp(bp,ifname,strlen(ifname))==0 && bp[strlen(ifname)]==':') {
+ sscanf(bp,"%*s %d %*d %*d %*d %*d %d",TX,RX);
+ break;
+ }
+ }
+ fclose(fp);
+ }
int
dip_setup(struct dip *dp)
***************
*** 114,120 ****
/* Wait forever to terminate. */
do_exit = 1;
while(do_exit) {
! (void) sleep(30);
}
syslog(LOG_ERR, "DIP must never be here!!!\n");
--- 130,146 ----
/* Wait forever to terminate. */
do_exit = 1;
while(do_exit) {
! if (dp->timeout) {
! static int oldTX=-1, oldRX=-1;
! int valTX,valRX;
!
! readifc(dp->ifname,&valTX,&valRX);
! if (valTX==oldTX && valRX==oldRX) sig_catcher(0);
! oldTX = valTX;
! oldRX = valRX;
! sleep(dp->timeout);
! }
! else (void) sleep(30);
}
syslog(LOG_ERR, "DIP must never be here!!!\n");
Only in dip-3.3.7g: dip
diff -rc dip-3.3.7g/dip.h dip-3.3.7h/dip.h
*** dip-3.3.7g/dip.h Wed Aug 31 06:49:08 1994
--- dip-3.3.7h/dip.h Fri Sep 2 12:45:40 1994
***************
*** 69,75 ****
struct dip {
/* Login info. */
char name[16]; /* login name of host */
! char passwd[14]; /* any external passwd */
char home[1024]; /* user home directory */
/* Misc protocol info. */
--- 69,75 ----
struct dip {
/* Login info. */
char name[16]; /* login name of host */
! char passwd[16]; /* any external passwd */
char home[1024]; /* user home directory */
/* Misc protocol info. */
***************
*** 92,97 ****
--- 92,99 ----
struct in_addr rmt_rt; /* mapped IP address */
int rtdefault; /* are we the dflt gw? */
int proxyarp; /* set proxy arp? */
+ int timeout; /* timeout function? */
+ char ifname[32]; /* device name */
};
***************
*** 146,153 ****
extern int mdm_reset(void);
extern int mdm_hangup(void);
! extern int attach(char *name, struct dip *dip);
! extern void detach(char *name, struct dip *dip);
extern void cleanup(void);
--- 148,155 ----
extern int mdm_reset(void);
extern int mdm_hangup(void);
! extern int attach(struct dip *dip);
! extern void detach(struct dip *dip);
extern void cleanup(void);
diff -rc dip-3.3.7g/login.c dip-3.3.7h/login.c
*** dip-3.3.7g/login.c Tue Aug 30 22:17:13 1994
--- dip-3.3.7h/login.c Fri Sep 2 13:10:28 1994
***************
*** 40,46 ****
if (buff[0] == '#' || buff[0] == '\0') continue;
sp = buff;
! memset((char *) &dip, 0, sizeof(struct dip));
bp = sp;
while (*sp && *sp != ':') sp++;
--- 40,46 ----
if (buff[0] == '#' || buff[0] == '\0') continue;
sp = buff;
! dip = mydip;
bp = sp;
while (*sp && *sp != ':') sp++;
***************
*** 53,90 ****
)
continue;
! strncpy(dip.name, bp, 16);
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
! strncpy(dip.passwd, bp, 8);
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
! strncpy(dip.remote, bp, 128);
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
if (*bp)
! strncpy(dip.local, bp, 128);
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
! strncpy(dip.netmask, bp, 128);
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
! strncpy(dip.comment, bp, 128);
bp = sp;
while (*sp && *sp != ':' && *sp != ',') sp++;
*sp++ = '\0';
! strncpy(dip.protocol, bp, 16);
bp = sp;
while (*sp && *sp != ',') sp++;
--- 53,90 ----
)
continue;
! strncpy(dip.name, bp, sizeof(dip.name));
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
! strncpy(dip.passwd, bp, sizeof(dip.passwd));
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
! strncpy(dip.remote, bp, sizeof(dip.remote));
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
if (*bp)
! strncpy(dip.local, bp, sizeof(dip.local));
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
! strncpy(dip.netmask, bp, sizeof(dip.netmask));
bp = sp;
while (*sp && *sp != ':') sp++;
*sp++ = '\0';
! strncpy(dip.comment, bp, sizeof(dip.comment));
bp = sp;
while (*sp && *sp != ':' && *sp != ',') sp++;
*sp++ = '\0';
! strncpy(dip.protocol, bp, sizeof(dip.protocol));
bp = sp;
while (*sp && *sp != ',') sp++;
***************
*** 108,115 ****
extern char *h_errlist[];
extern int h_errno;
- (void) openlog("dip", LOG_PID, LOG_DAEMON);
-
if (name) {
dip = getdipnam(name);
if (dip == (struct dip *)NULL) {
--- 108,113 ----
***************
*** 123,129 ****
p = getpass("password: ");
if ((dip == (struct dip *)NULL) || (strcmp(dip->passwd,p) != 0)) {
fprintf(stderr, "You do not have DIP access. Go away.\n");
! syslog(LOG_WARNING, "%s tried to access DIP: no access!", p);
exit(-1);
}
}
--- 121,127 ----
p = getpass("password: ");
if ((dip == (struct dip *)NULL) || (strcmp(dip->passwd,p) != 0)) {
fprintf(stderr, "You do not have DIP access. Go away.\n");
! syslog(LOG_WARNING, "%s tried to access DIP: no access!", dip->name);
exit(-1);
}
}
***************
*** 191,196 ****
--- 189,195 ----
printf("Comments: \"%s\"\n", dip->comment);
printf("Protocol: \"%s\" (%d)\n", dip->protocol, dip->protonr);
printf("MTU : %d\n", dip->mtu);
+ printf("Proxy : %d\n", dip->proxyarp);
}
syslog(LOG_INFO, "%s connecting %s/%s to local %s/%s with %s/%d",
dip->name,
diff -rc dip-3.3.7g/main.c dip-3.3.7h/main.c
*** dip-3.3.7g/main.c Thu Sep 1 01:39:03 1994
--- dip-3.3.7h/main.c Fri Sep 2 13:11:45 1994
***************
*** 31,36 ****
--- 31,40 ----
* - Removed the strange parsing of argv[0] which overwrote
* part of the string.
* - Added code to ask interactivly for username. (-a)
+ * - added timeout <n> for disconnects after <n> idle seconds
+ * - removed 'quit', since it is superflucious (see exit)
+ * - various source changes
+ * - Well, and since everybody is doing it: (C) 1994.
*
* This program is free software; you can redistribute it
* and/or modify it under the terms of the GNU General
***************
*** 61,74 ****
void
cleanup(void)
{
- char name[32];
int disc;
if (tty_askfd() >= 0) {
if(tty_get_disc(&disc) == 0) {
if ((disc > 0) && (disc != N_TTY)) {
! tty_get_name(name);
! detach(name, &mydip);
}
}
if (tty_getmode())
--- 65,76 ----
void
cleanup(void)
{
int disc;
if (tty_askfd() >= 0) {
if(tty_get_disc(&disc) == 0) {
if ((disc > 0) && (disc != N_TTY)) {
! detach(&mydip);
}
}
if (tty_getmode())
***************
*** 261,266 ****
--- 263,269 ----
opt_t = 0;
Argv = argv[0];
+ while (*envp) envp++;
LastArg = envp[-1] + strlen(envp[-1]);
/*
***************
*** 277,284 ****
else sp = argv[0];
#else
if ((sp = strrchr(argv[0], '/')) == NULL) sp = argv[0];
#endif
! if ((*sp == '-') || !strcmp(sp, "diplogin") || !strcmp(sp, "login"))
opt_i = 1;
if (!strcmp(sp, "diplogini"))
opt_i = opt_a = 1;
--- 280,289 ----
else sp = argv[0];
#else
if ((sp = strrchr(argv[0], '/')) == NULL) sp = argv[0];
+ else sp++;
#endif
! if (*sp=='-') sp++;
! if (!strcmp(sp, "diplogin") || !strcmp(sp, "login"))
opt_i = 1;
if (!strcmp(sp, "diplogini"))
opt_i = opt_a = 1;
***************
*** 325,330 ****
--- 330,338 ----
usage();
}
+ /* make sure we log the attachments */
+ openlog("dip", LOG_PID, LOG_DAEMON);
+
printf("DIP: Dialup IP Protocol Driver version %s\n", VERSION);
printf("Written by Fred N. van Kempen, MicroWalt Corporation.\n\n");
***************
*** 352,358 ****
/* Are we going to be a dialIN server? */
if (opt_i == 1) {
! /* Enforce Proxy ARP for now... */
mydip.proxyarp = 1;
if (opt_a == 1) sp = NULL;
--- 360,366 ----
/* Are we going to be a dialIN server? */
if (opt_i == 1) {
! /* Enforce PROXY Arp for now */
mydip.proxyarp = 1;
if (opt_a == 1) sp = NULL;
diff -rc dip-3.3.7g/pathnames.h dip-3.3.7h/pathnames.h
*** dip-3.3.7g/pathnames.h Tue Aug 30 21:50:01 1994
--- dip-3.3.7h/pathnames.h Fri Sep 2 12:45:41 1994
***************
*** 33,39 ****
#define _PATH_DIP_PID "/etc/dip.pid"
#define _PATH_DIP_KIL "/var/run"
! #define _PATH_LOCKD "/usr/spool/uucp" /* lock files */
#define _UID_UUCP "uucp" /* owns locks */
--- 33,39 ----
#define _PATH_DIP_PID "/etc/dip.pid"
#define _PATH_DIP_KIL "/var/run"
! #define _PATH_LOCKD "/var/lock" /* lock files */
#define _UID_UUCP "uucp" /* owns locks */
diff -rc dip-3.3.7g/slip.c dip-3.3.7h/slip.c
*** dip-3.3.7g/slip.c Sun Jun 5 23:16:22 1994
--- dip-3.3.7h/slip.c Fri Sep 2 12:45:41 1994
***************
*** 26,33 ****
void
do_slip(struct dip *dip)
{
- char ifname[32];
-
(void) strcpy((char *) dip->protocol, "SLIP");
/* Put line in SLIP discipline. */
--- 26,31 ----
***************
*** 43,49 ****
}
/* Ask the kernel for the name of our interface. */
! if (tty_get_name(ifname) < 0) {
syslog(LOG_ERR, "GIFNAME: %m");
(void) tty_set_disc(-1);
return;
--- 41,47 ----
}
/* Ask the kernel for the name of our interface. */
! if (tty_get_name(dip->ifname) < 0) {
syslog(LOG_ERR, "GIFNAME: %m");
(void) tty_set_disc(-1);
return;
***************
*** 51,70 ****
#if 0
if (opt_v == 1) {
! printf("DIP: Interface %s\n",ifname);
}
#endif
/* Add the route to that host. */
! (void) attach(ifname, dip);
}
void
do_cslip(struct dip *dip)
{
- char ifname[32];
-
(void) strcpy((char *) dip->protocol, "CSLIP");
/* Put line in SLIP discipline. */
--- 49,66 ----
#if 0
if (opt_v == 1) {
! printf("DIP: Interface %s\n",dip->ifname);
}
#endif
/* Add the route to that host. */
! (void) attach(dip);
}
void
do_cslip(struct dip *dip)
{
(void) strcpy((char *) dip->protocol, "CSLIP");
/* Put line in SLIP discipline. */
***************
*** 80,91 ****
}
/* Ask the kernel for the name of our interface. */
! if (tty_get_name(ifname) < 0) {
syslog(LOG_ERR, "GIFNAME: %m");
(void) tty_set_disc(-1);
return;
}
/* Add the route to that host. */
! (void) attach(ifname, dip);
}
--- 76,87 ----
}
/* Ask the kernel for the name of our interface. */
! if (tty_get_name(dip->ifname) < 0) {
syslog(LOG_ERR, "GIFNAME: %m");
(void) tty_set_disc(-1);
return;
}
/* Add the route to that host. */
! (void) attach(dip);
}
diff -rc dip-3.3.7g/tty.c dip-3.3.7h/tty.c
*** dip-3.3.7g/tty.c Wed Aug 31 06:32:09 1994
--- dip-3.3.7h/tty.c Fri Sep 2 12:45:41 1994
***************
*** 745,755 ****
int tty_login_close(void)
{
#ifdef NE_PAUL
- char ifname[32];
-
if (tty_fd >= 0) {
! (void) tty_get_name(ifname);
! (void) detach(ifname, &mydip);
(void) mdm_hangup();
}
#else
--- 745,752 ----
int tty_login_close(void)
{
#ifdef NE_PAUL
if (tty_fd >= 0) {
! (void) detach(&mydip);
(void) mdm_hangup();
}
#else