#include <errno.h>
#include <syslog.h>
#include <fcntl.h>
+#include <string.h>
+#include <time.h>
+#include <utmp.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include "pppd.h"
#include "ppp.h"
-#include <net/if_ppp.h>
#include <net/ppp_str.h>
#ifndef ifr_mtu
*/
int
sifup(u)
+ int u;
{
struct ifreq ifr;
*/
int
sifdown(u)
+ int u;
{
struct ifreq ifr;
strncpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
*/
int
sifaddr(u, o, h, m)
+ int u;
+ u_long o, h, m;
{
int ret;
struct ifreq ifr;
*/
int
cifaddr(u, o, h)
+ int u;
+ u_long o, h;
{
struct rtentry rt;
*/
int
sifdefaultroute(u, g)
+ int u;
+ u_long g;
{
struct rtentry rt;
*/
int
cifdefaultroute(u, g)
+ int u;
+ u_long g;
{
struct rtentry rt;
* get_ether_addr - get the hardware address of an interface on the
* the same subnet as ipaddr. Code borrowed from myetheraddr.c
* in the cslip-2.6 distribution, which is subject to the following
- * copyright notice:
+ * copyright notice (which also applies to logwtmp below):
*
* Copyright (c) 1990, 1992 The Regents of the University of California.
* All rights reserved.
static struct nlist nl[] = {
#define N_IFNET 0
{ "_ifnet" },
- 0
+ { 0 }
};
static void kread();
/* couldn't find one */
return 0;
}
+
+#define WTMPFILE "/usr/adm/wtmp"
+
+int
+logwtmp(line, name, host)
+ char *line, *name, *host;
+{
+ int fd;
+ struct stat buf;
+ struct utmp ut;
+
+ if ((fd = open(WTMPFILE, O_WRONLY|O_APPEND, 0)) < 0)
+ return;
+ if (!fstat(fd, &buf)) {
+ (void)strncpy(ut.ut_line, line, sizeof(ut.ut_line));
+ (void)strncpy(ut.ut_name, name, sizeof(ut.ut_name));
+ (void)strncpy(ut.ut_host, host, sizeof(ut.ut_host));
+ (void)time(&ut.ut_time);
+ if (write(fd, (char *)&ut, sizeof(struct utmp)) != sizeof(struct utmp))
+ (void)ftruncate(fd, buf.st_size);
+ }
+ close(fd);
+}