Date: Fri, 25 Oct 2002 15:22:22 -0700 From: Brooks Davis <brooks@one-eyed-alien.net> To: Brooks Davis <brooks@one-eyed-alien.net> Cc: Bakul Shah <bakul@bitblocks.com>, Dave Evans <devans@hclb.demon.co.uk>, freebsd-current@FreeBSD.ORG Subject: Re: pppd not working on latest current 2002-10-20 Message-ID: <20021025152221.A8479@Odin.AC.HMC.Edu> In-Reply-To: <20021025123522.B23521@Odin.AC.HMC.Edu>; from brooks@one-eyed-alien.net on Fri, Oct 25, 2002 at 12:35:22PM -0700 References: <20021025113137.A23521@Odin.AC.HMC.Edu> <200210251841.OAA09782@valiant.cnchost.com> <20021025123522.B23521@Odin.AC.HMC.Edu>
next in thread | previous in thread | raw e-mail | index | archive | help
--ZGiS0Q5IWpPtfppv Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Oct 25, 2002 at 12:35:22PM -0700, Brooks Davis wrote: > If someone who actually uses pppd could test it, perferably in both > sceneios, I'll see about getting it commited. Here's a new patch that gives the user more of a hint at how to add PPP support and only loads the module if they are actully root. How's this look? -- Brooks Index: sys-bsd.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr/cvs/src/usr.sbin/pppd/sys-bsd.c,v retrieving revision 1.18 diff -u -p -r1.18 sys-bsd.c --- sys-bsd.c 17 Sep 2002 15:52:35 -0000 1.18 +++ sys-bsd.c 25 Oct 2002 22:21:47 -0000 @@ -44,6 +44,7 @@ static char rcsid[] =3D "$FreeBSD: src/usr #include <sys/time.h> #include <sys/stat.h> #include <sys/param.h> +#include <sys/module.h> #ifdef NetBSD1_2 #include <util.h> #endif @@ -169,28 +170,29 @@ sys_check_options() } =20 /* - * ppp_available - check whether the system has any ppp interfaces - * (in fact we check whether we can do an ioctl on ppp0). + * ppp_available - check whether the system has the ppp module loaded + * or compiled in. If it doesn't, and we're actually root (not just SUID + * root) try loading it before giving up. */ int ppp_available() { - int s, ok; - struct ifreq ifr; + const char *modname =3D "if_ppp"; extern char *no_ppp_msg; =20 - if ((s =3D socket(AF_INET, SOCK_DGRAM, 0)) < 0) - return 1; /* can't tell */ + if (modfind(modname) !=3D -1) { + return 1; + } =20 - strncpy(ifr.ifr_name, "ppp0", sizeof (ifr.ifr_name)); - ok =3D ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) >=3D 0; - close(s); + if (getuid() =3D=3D 0 && kldload(modname) !=3D -1) + return 1; =20 no_ppp_msg =3D "\ This system lacks kernel support for PPP. To include PPP support\n\ -in the kernel, please follow the steps detailed in the README.bsd\n\ -file in the ppp-2.2 distribution.\n"; - return ok; +in the kernel, please add \"device ppp\" to your kernel config or \n\ +load the if_ppp module.\n"; + + return 0; } =20 /* --=20 Any statement of the form "X is the one, true Y" is FALSE. PGP fingerprint 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4 --ZGiS0Q5IWpPtfppv Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE9ucQdXY6L6fI4GtQRAtL5AJ0R0mWDMiPy/MvJRAHXLDLkVHRuIgCfdkXK SkDNHicz6ElhzTZw9FDCLDQ= =30xE -----END PGP SIGNATURE----- --ZGiS0Q5IWpPtfppv-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021025152221.A8479>