Установил свежий дистрибутив фряхи (6.1) на новый сервер, поставил мультипортовые карты, скоиптлил ядро, поставил и настроил mgetty. Потом дело подошло к radpppd, но после компиляции меня ожидал сюрприз - прога не запускалась. После дозвона модема отображалось сообщение:
This system lacks kernel support for PPP. To include PPP support
in the kernel, please follow the steps detailed in the README.bsd
file in the ppp-2.2 distribution
Начал копать в исходниках, потом по форумам. На все про все потратил 3 дня. В результате выкладываю патч исправляющий это безобразие, вылезающее во фрях начиная с 5.2
Код: Выделить всё
diff -ruN ppp-2.3.11.orig/pppd/sys-bsd.c ppp-2.3.11/pppd/sys-bsd.c
--- pppd/sys-bsd.c Tue Aug 24 14:25:54 1999
+++ pppd/sys-bsd.c Thu Apr 22 10:40:42 2004
@@ -180,22 +180,22 @@
int
ppp_available()
{
- int s, ok;
- struct ifreq ifr;
+ const char *modname = "if_ppp";
extern char *no_ppp_msg;
- if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
- return 1; /* can't tell */
+ if (modfind(modname) != -1) {
+ return 1;
+ }
- strlcpy(ifr.ifr_name, "ppp0", sizeof (ifr.ifr_name));
- ok = ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) >= 0;
- close(s);
+ if (getuid() == 0 && kldload(modname) != -1)
+ return 1;
no_ppp_msg = "\
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;
}
....продолжение следует