And it's substantially south of 1000 lines of code. It's not a full PPP daemon, but it is enough to set up (it seems) PPPoE - useful, example, for small embedded DSL routers.
I love that people bash Lennart for code he didn't even write...
Yes, that's the difference with rp-pppoe.so (using kernel module to handle encapsulation, userspace code only sets up the sockets) and pppd's pty option (got it a bit wrong in my other comment in this thread, believed it's a pipe, thanks for correcting) with separate process to do so. It doesn't really matter.
More than this, Linux kernel has kernel-mode PPP. But still a few parts of PPP, and all accompanying control protocols (especially authentication-related ones like EAP - you don't want that beast in the kernel!) are done in userspace.
This still smells funny. The fact that the whole project is handle as one may make the communication between developers and also program component too easy (coupling). Personally I'm a bit overwhelmed by all the 'special strings', flags and options added at each release.
I love that people bash Lennart for code he didn't even write...