> > I am interested in working on ppp for hurd. I am curious as to what > > progress has been made in that direction, and if anyone is actively > > working on it right now? > I plan on working on ppp for the Hurd. Next quarter (Fall) I am taking > a directed study to meet a course elective (for B.S. Computer Engineering > at Milwaukee School of Engineering, MSOE). I plan on porting pppd as the > final project. I am also interested in seeing FreeBSD's user-level ppp(8) ported to the Hurd. I didn't start working on it yet, but given support from other people, it could be possible to do it together. The biggest problem I see here, is that it will be probably necessary to interface to pfinet which is currently in a somewhat shaky state (please correct me, if I'm wrong).
FreeBSD's user-level PPP (not the kernel pppd driver!) implements the PPP procotol entirely in user space and is thus predestined to get ported to the Hurd as Mach-task/Hurd-process. It is actually very "Hurdish" in its way of accessing the kernel's IP-Layer through a so called tunnel interface. To port ppp(8) to the Hurd, most C files can be left unchanged, as they contain mostly os-independent code like the user interface, configuration files, lcp, ipcp and other aspects of the PPP protocol. The interface of ppp(8) to the IP-Layer of the Kernel (the tunnel pseudo-device of the Kernel) is concentrated in the files tun.{c,h} This interface will have to be adapted to the Hurd in a way outlined below. The other interface of ppp(8) with the kernel is traditional access to the serial driver through /dev/ttyS* (resp. /dev/cua*) secial files with simple read(), write() and ioctl()'s (to set the speed and line parameters for example). I didn't find out yet how to get access to Gnumach's com0 and com1 serial device drivers, as native-install didn't put special files in /dev (a.k.a. didn't settrans any translator to emulate those special files). If the Hurd has a way to emulate Unix's classical serial device drivers, ppp(8) would simply access the modem and null-modem serial lines via libc in normal Unix' ways. Accessing the IP-Layer of the Hurd is more involved, as it requires getting access to pfinet server (or any equivalend server that provides IP layer services). The natural way to implement the tunnel interface in the Hurd would be to have ppp(8) talk to the pfinet server through a Hurd library (yet to be written?), permitting the following basic services: * establish a network interface * configure the network interface (a la ifconfig tun0 ... ... {up|down}) * getting notifications when the interface gets an outgoing IP-Packet, that should be passed to the ppp user-level program (getting an outgoing IP-packet sent to the network interface), together with the contents of the IP-packet, so that it can be packet in a PPP frame and sent down the wire, * sending messages to pfinet, as soon as a packet arrives from the serial port and was decoded by the ppp(8), so that it is sent to the network interface, (injecting an incoming IP-packet into the IP-Layer), * <implement the rest of the tunnel protocol?> To do all this, pfinet probably needs an extended .defs interface, that we can program against with MiG (or better yet, provide a library like other libraries e.g. libprocfs for proc etc... and use this API accordingly). As soon as this is done in pfinet and once we have access to the serial interfaces in a Unix compatible way, porting user-level ppp(8) should be relatively easy. BTW, user-level ppp(8) does an excellent job for me here. It also supports dynamic DNS and tons of other features. It would be really nice to concentrate our efforts at porting it to the Hurd. Comments? This is /usr/src/usr.sbin/ppp/README.devel, for all of you not aware of user-level PPP: --------------------- /usr/src/usr.sbin/ppp/README.devel ------------------- This program was originally written by Toshiharu OHNO <[EMAIL PROTECTED]>, and was submitted to FreeBSD-2.0.5 by Atsushi Murai <[EMAIL PROTECTED]>. The original version was usually referred to as iij-ppp. Ppp is currently maintained under FreeBSD and OpenBSD by Brian Somers <[EMAIL PROTECTED]>. The sources for both operating systems are the same except that the libalias code is built directly into ppp under OpenBSD, and the Makefiles vary per OS. The latest sources are available in FreeBSD-current and OpenBSD-current. An archive hacked so that it will build on just about any version of FreeBSD or OpenBSD is frequently generated and made available via http://www.Awfulhak.org/ppp.html. A FAQ is available at http://www.FreeBSD.org/FAQ/userppp.html. It applies equally to OpenBSD as it does to FreeBSD. The man page is quite extensive, and there are lots of examples in /usr/share/examples/ppp/. Ppp is still under development. There is no official TODO list --------------------- /usr/src/usr.sbin/ppp/README.devel ------------------- -- Farid Hajji -- Unix Systems and Network Administrator | Phone: +49-2131-67-555 Broicherdorfstr. 83, D-41564 Kaarst, Germany | [EMAIL PROTECTED] - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - Fermat: ...I've found a remarkable proof for this: Let x,y @[EMAIL PROTECTED]@ NO CARRIER