ftp.nice.ch/pub/next/connectivity/protocol/PPPMonitor.1.16.NIHS.bs.tar.gz#/PPPMonitor1.16/Source/bin/LoadPPPDriver.c

This is LoadPPPDriver.c in view mode; [Download] [Up]

// -------------------------------------------------------------------------------------
// LoadPPPDriver - load PPP LKS (loadable kernel server)
// This module should be compiled, set 'root' suid, and copied to "/usr/local/bin"
// This will execute the file "/usr/local/ppp/rc.ppp" provided with the ppp-2.2 package. 
//
// To compile:
//   cc -o LoadPPPDriver LoadPPPDriver.c
//
// To set 'root' suid:
//   chown root LoadPPPDriver; chmod 4755 LoadPPPDriver;
//
// -------------------------------------------------------------------------------------
#include <libc.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <pwd.h>

/* command to determine if ppp driver has been loaded */
static const char *cmdCheck = "/usr/etc/kl_util -s | /bin/grep ' ppp Loaded' >/dev/null";

/* 'rc.ppp' is provided with the ppp2.2 package */
static const char *cmdLoad  = "/bin/sh /usr/local/ppp/rc.ppp >/dev/console 2>&1";

/* main */
int main()
{
	struct passwd *rpw = getpwnam("root");

	/* check for PPP Driver already loaded */
	if (!system(cmdCheck)) {
		fprintf(stderr," PPP Driver already loaded.\n");
		exit(0);
	}

	/* switch to superuser */
	if ((setgid(rpw->pw_gid) < 0)              ||
		(initgroups(rpw->pw_name,rpw->pw_gid)) ||
		(setuid(rpw->pw_uid) < 0))               {
		fprintf(stderr," ERROR: Cannot switch to superuser.\n");
		exit(2);
	}

	/* load PPP LKS */
	if (system(cmdLoad)) {
		fprintf(stderr," ERROR: load failed.\n");
		exit(1);
	}
	fprintf(stdout," driver loaded.\n");
	exit(0);

}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.