Date: Sat, 28 Jun 1997 23:10:24 -0400 (EDT) From: dbj@pelops.com To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: misc/3981: User-mode ppp doesn't track online time in a structured manner Message-ID: <199706290310.XAA07417@home.pelops.com> Resent-Message-ID: <199706290320.UAA14553@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 3981 >Category: misc >Synopsis: wtmp logging of ppp activity would be nice >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Jun 28 20:20:01 PDT 1997 >Last-Modified: >Originator: David E. Brooks Jr >Organization: Tantalus Incorporated of Kentucky >Release: FreeBSD 2.2.2-RELEASE i386 >Environment: >Description: For some of us, the need to track time used on a link is useful, especially if we're charged for time used. User-mode ppp doesn't provide a structured method of obtaining this information. >How-To-Repeat: Get an ISDN line in the Louisville, Kentucky area :-) >Fix: The following patch allows ppp (if compiled with -DLOGWTMP) to write entries into wtmp whenver a link goes up or down. By placing a 'set logname' command into /etc/ppp/ppp.conf, the name used in the wtmp file can be set (If not set, no logging occurs). -- Dave --- ppp.orig/Makefile Sun May 11 08:58:57 1997 +++ ppp/Makefile Sat Jun 28 22:24:53 1997 @@ -7,7 +7,7 @@ vjcomp.c arp.c alias.c alias_db.c alias_ftp.c alias_util.c \ passwdauth.c sig.c #CFLAGS+= -DHAVE_SHELL_CMD_WITH_ANY_MODE -CFLAGS += -Wall -DMSEXT -DPASSWDAUTH +CFLAGS += -Wall -DMSEXT -DPASSWDAUTH -DLOGWTMP LDADD += -lmd -lcrypt -lutil DPADD += ${LIBMD} ${LIBCRYPT} ${LIBUTIL} MAN8= ppp.8 --- ppp.orig/command.c Tue May 13 21:21:27 1997 +++ ppp/command.c Sat Jun 28 22:05:11 1997 @@ -414,6 +414,14 @@ } #endif /* MSEXT */ +#ifdef LOGWTMP +static int ShowLogName() +{ + printf(" Wtmp log name: %s\n", VarLogName); + return(1); +} +#endif + extern int ShowIfilter(), ShowOfilter(), ShowDfilter(), ShowAfilter(); struct cmdtab const ShowCommands[] = { @@ -461,6 +469,10 @@ { "msext", NULL, ShowMSExt, LOCAL_AUTH, "Show MS PPP extentions", StrNull}, #endif /* MSEXT */ +#ifdef LOGWTMP + { "logname", NULL, ShowLogName, LOCAL_AUTH, + "Show wtmp logging name", StrNull}, +#endif { "version", NULL, ShowVersion, LOCAL_NO_AUTH | LOCAL_AUTH, "Show version string", StrNull}, { "help", "?", HelpCommand, LOCAL_NO_AUTH | LOCAL_AUTH, @@ -986,6 +998,9 @@ #define VAR_DEVICE 4 #define VAR_ACCMAP 5 #define VAR_PHONE 6 +#ifdef LOGWTMP +#define VAR_LOGNAME 7 +#endif static int SetVariable(list, argc, argv, param) @@ -1030,6 +1045,12 @@ strcpy(VarPhoneCopy, VarPhoneList); VarNextPhone = VarPhoneCopy; break; +#ifdef LOGWTMP + case VAR_LOGNAME: + strncpy(VarLogName, *argv, sizeof(VarLogName)-1); + VarLogName[sizeof(VarLogName)-1] = '\0'; + break; +#endif } } return(1); @@ -1123,6 +1144,10 @@ { "nbns", NULL, SetNBNS, LOCAL_AUTH, "Set NetBIOS NameServer", "pri-addr [sec-addr]"}, #endif /* MSEXT */ +#ifdef LOGWTMP + { "logname", NULL, SetVariable, LOCAL_AUTH, + "Set wtmp logging name", "logname", (void *)VAR_LOGNAME}, +#endif /* LOGWTMP */ { "help", "?", HelpCommand, LOCAL_AUTH | LOCAL_NO_AUTH, "Display this message", StrNull, (void *)SetCommands}, { NULL, NULL, NULL }, --- ppp.orig/modem.c Tue May 13 21:20:28 1997 +++ ppp/modem.c Sat Jun 28 22:53:15 1997 @@ -34,6 +34,9 @@ #include "ip.h" #include "modem.h" #include "vars.h" +#ifdef LOGWTMP +#include <libutil.h> +#endif #ifndef O_NONBLOCK #ifdef O_NDELAY @@ -213,6 +216,10 @@ { LogPrintf(LOG_PHASE_BIT, "Disconnected!\n"); LogPrintf(LOG_PHASE_BIT, "Connect time: %d secs\n", time(NULL) - uptime); +#ifdef LOGWTMP + if (VarLogName[0]) + logwtmp(VarDevice + 5, "", ""); +#endif /* LOGWTMP */ if (!TermMode) { CloseModem(); LcpDown(); @@ -255,6 +262,10 @@ if (Online) { time(&uptime); LogPrintf(LOG_PHASE_BIT, "*Connected!\n"); +#ifdef LOGWTMP + if (VarLogName[0]) + logwtmp(VarDevice + 5, VarLogName, ""); +#endif /* LOGWTMP */ connect_count++; /* * In dedicated mode, start packet mode immediate @@ -270,6 +281,10 @@ if (!Online) { time(&uptime); LogPrintf(LOG_PHASE_BIT, "Connected!\n"); +#ifdef LOGWTMP + if (VarLogName[0]) + logwtmp(VarDevice + 5, VarLogName, ""); +#endif /* LOGWTMP */ mbits = TIOCM_CD; connect_count++; connect_time = 0; --- ppp.orig/vars.h Fri May 9 23:42:36 1997 +++ ppp/vars.h Sat Jun 28 22:04:09 1997 @@ -24,6 +24,9 @@ #define _VARS_H_ #include <sys/param.h> +#ifdef LOGWTMP +#include <utmp.h> +#endif /* LOGWTMP */ struct confdesc { char *name; @@ -83,6 +86,9 @@ char phone_copy[200]; /* copy for strsep() */ char *next_phone; /* Next phone from the list */ char shostname[MAXHOSTNAMELEN];/* Local short Host Name */ +#ifdef LOGWTMP + char log_name[UT_NAMESIZE]; /* name used for wtmp logging */ +#endif /* LOGWTMP */ }; #define VarAccmap pppVars.var_accmap @@ -110,6 +116,9 @@ #define VarRedialTimeout pppVars.redial_timeout #define VarRedialNextTimeout pppVars.redial_next_timeout #define VarDialTries pppVars.dial_tries +#ifdef LOGWTMP +#define VarLogName pppVars.log_name +#endif /* LOGWTMP */ #define DEV_IS_SYNC (VarSpeed == 0) >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199706290310.XAA07417>