removed some useless Linux calls

This commit is contained in:
Sylvain Rochet 2012-06-01 01:07:27 +02:00
parent 26e8372c75
commit 8bb4ea85b8
3 changed files with 1 additions and 174 deletions

View File

@ -389,11 +389,6 @@ int ppp_oldmain() {
argv[0]);
exit(EXIT_NOT_ROOT);
}
if (!ppp_available()) {
option_error("%s", no_ppp_msg);
exit(EXIT_NO_KERNEL_SUPPORT);
}
#endif
#if PPP_OPTIONS
@ -435,11 +430,6 @@ int ppp_oldmain() {
fd_devnull = i;
}
/*
* Initialize system-dependent stuff.
*/
linux_sys_init();
/*
* Detach ourselves from the terminal, if required,
* and identify who is running us.
@ -454,7 +444,7 @@ int ppp_oldmain() {
else
p = "(unknown)";
}
syslog(LOG_NOTICE, "pppd %s started by %s, uid %d", VERSION, p, uid);
syslog(LOG_NOTICE, "pppd started by %s, uid %d", p, uid);
script_setenv("PPPLOGNAME", p, 0);
if (devnam[0])

View File

@ -57,7 +57,6 @@
#include <sys/types.h> /* for u_int32_t, if defined */
#include <sys/time.h> /* for struct timeval */
#include <net/ppp_defs.h>
#include "patchlevel.h"
#if defined(__STDC__)
#include <stdarg.h>
@ -603,11 +602,9 @@ int str_to_epdisc __P((struct epdisc *, char *)); /* endpt disc. from str */
#endif
/* Procedures exported from sys-*.c */
void sys_init __P((void)); /* Do system-dependent initialization */
void sys_cleanup __P((void)); /* Restore system state before exiting */
int sys_check_options __P((void)); /* Check options specified */
void sys_close __P((void)); /* Clean up in a child before execing */
int ppp_available __P((void)); /* Test whether ppp kernel support exists */
int get_pty __P((int *, int *, char *, int)); /* Get pty master/slave */
int open_ppp_loopback __P((void)); /* Open loopback for demand-dialling */
int tty_establish_ppp __P((int)); /* Turn serial port into a ppp interface */

View File

@ -294,28 +294,6 @@ static int modify_flags(int fd, int clear_bits, int set_bits)
return -1;
}
/********************************************************************
*
* sys_init - System-dependent initialization.
*/
void linux_sys_init(void)
{
/* Get an internet socket for doing socket ioctls. */
sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
if (sock_fd < 0)
fatal("Couldn't create IP socket: %m(%d)", errno);
#ifdef INET6
sock6_fd = socket(AF_INET6, SOCK_DGRAM, 0);
if (sock6_fd < 0)
sock6_fd = -errno; /* save errno for later */
#endif
FD_ZERO(&in_fds);
max_in_fd = 0;
}
/********************************************************************
*
* sys_cleanup - restore any system state we modified before exiting:
@ -2061,144 +2039,6 @@ ppp_registered(void)
return ret;
}
/********************************************************************
*
* ppp_available - check whether the system has any ppp interfaces
* (in fact we check whether we can do an ioctl on ppp0).
*/
int ppp_available(void)
{
int s, ok, fd, err;
struct ifreq ifr;
int size;
int my_version, my_modification, my_patch;
int osmaj, osmin, ospatch;
/* get the kernel version now, since we are called before sys_init */
uname(&utsname);
osmaj = osmin = ospatch = 0;
sscanf(utsname.release, "%d.%d.%d", &osmaj, &osmin, &ospatch);
kernel_version = KVERSION(osmaj, osmin, ospatch);
fd = open("/dev/ppp", O_RDWR);
if (fd >= 0) {
new_style_driver = 1;
/* XXX should get from driver */
driver_version = 2;
driver_modification = 4;
driver_patch = 0;
close(fd);
return 1;
}
err = errno;
if (kernel_version >= KVERSION(2,3,13)) {
error("Couldn't open the /dev/ppp device: %m");
if (errno == ENOENT)
no_ppp_msg =
"You need to create the /dev/ppp device node by\n"
"executing the following command as root:\n"
" mknod /dev/ppp c 108 0\n";
else if (errno == ENODEV || errno == ENXIO)
no_ppp_msg =
"Please load the ppp_generic kernel module.\n";
return 0;
}
/* we are running on a really really old kernel */
no_ppp_msg =
"This system lacks kernel support for PPP. This could be because\n"
"the PPP kernel module could not be loaded, or because PPP was not\n"
"included in the kernel configuration. If PPP was included as a\n"
"module, try `/sbin/modprobe -v ppp'. If that fails, check that\n"
"ppp.o exists in /lib/modules/`uname -r`/net.\n"
"See README.linux file in the ppp distribution for more details.\n";
/*
* Open a socket for doing the ioctl operations.
*/
s = socket(AF_INET, SOCK_DGRAM, 0);
if (s < 0)
return 0;
strlcpy (ifr.ifr_name, "ppp0", sizeof (ifr.ifr_name));
ok = ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) >= 0;
/*
* If the device did not exist then attempt to create one by putting the
* current tty into the PPP discipline. If this works then obtain the
* flags for the device again.
*/
if (!ok) {
if (ppp_registered()) {
strlcpy (ifr.ifr_name, "ppp0", sizeof (ifr.ifr_name));
ok = ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) >= 0;
}
}
/*
* Ensure that the hardware address is for PPP and not something else
*/
if (ok)
ok = ioctl (s, SIOCGIFHWADDR, (caddr_t) &ifr) >= 0;
if (ok && ((ifr.ifr_hwaddr.sa_family & ~0xFF) != ARPHRD_PPP))
ok = 0;
/*
* This is the PPP device. Validate the version of the driver at this
* point to ensure that this program will work with the driver.
*/
if (ok) {
char abBuffer [1024];
ifr.ifr_data = abBuffer;
size = ioctl (s, SIOCGPPPVER, (caddr_t) &ifr);
if (size < 0) {
error("Couldn't read driver version: %m");
ok = 0;
no_ppp_msg = "Sorry, couldn't verify kernel driver version\n";
} else {
decode_version(abBuffer,
&driver_version,
&driver_modification,
&driver_patch);
/*
* Validate the version of the driver against the version that we used.
*/
decode_version(VERSION,
&my_version,
&my_modification,
&my_patch);
/* The version numbers must match */
if (driver_version != my_version)
ok = 0;
/* The modification levels must be legal */
if (driver_modification < 3) {
if (driver_modification >= 2) {
/* we can cope with 2.2.0 and above */
driver_is_old = 1;
} else {
ok = 0;
}
}
close (s);
if (!ok) {
slprintf(route_buffer, sizeof(route_buffer),
"Sorry - PPP driver version %d.%d.%d is out of date\n",
driver_version, driver_modification, driver_patch);
no_ppp_msg = route_buffer;
}
}
}
return ok;
}
/********************************************************************
*
* Update the wtmp file with the appropriate user name and tty device.