FreeBSD 1.0 shipped if_ppp.c, the kernel version of PPP which predated the userland version ppd, with the following headers:
/*
* if_ppp.c - Point-to-Point Protocol (PPP) Asynchronous driver.
*
* Copyright (c) 1989 Carnegie Mellon University.
* All rights reserved.
and later
/*
* $Id: if_ppp.c,v 1.4 1993/10/07 02:19:37 rgrimes Exp $
* From: if_ppp.c,v 1.22 1993/08/31 23:20:40 paulus Exp
* From: if_ppp.c,v 1.21 1993/08/29 11:22:37 paulus Exp
* From: if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp
*/
the $id line is FreeBSD's modification of this file in 1993. I'm unsure where the paulus files came from, but maybe netbsd, which has the earliest two ppp revs as:
commit 2db2cc6845660ec5ce837a05838fb49f999903c6
Author: paulus <
paulus@netbsd.org>
Date: Tue Aug 31 00:05:31 1993 +0000
Modified if_ppp.c and if_ppp.h to add priority queueing for "interactive"
traffic (done in a similar fashion to if_sl.c), and BPF support.
commit 0e20c036228474457205bae6fd791d9029dc85eb
Author: deraadt <
deraadt@netbsd.org>
Date: Sat Aug 14 06:38:50 1993 +0000
ppp from paul mackerras
But it's not in NET/2. I've not checked 386BSD to see if it was in there, or not (since both FreeBSD 1.0 and NetBSD started from the tainted first 4.4 BSD release). It's not in the 4.4 alpha BSD archive in the tuhs archive. Looks like it's from CMU, but I can't find earlier versions that Paul distributed with my quick google search, maybe others can find it?
FreeBSD removed if_ppp.c in around FreeBSD 5 because it wasn't working due to the sorry state of the SMPification of the tty code interacting poorly with the slightyly less sorry state of the SMPification of the networks stack at the time and reconciling the differences was too hard. userland pppd worked just as well and had none of the thorny locking issues of a kernel bit of code that was trying to bridge two different domains.
Warner