#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
202192 |
|
13-Jan-2010 |
ed |
Port ppp(8) to utmpx.
A nice thing about utmpx is that it makes it very easy to log sessions that don't use TTYs. This is because the file is not indexed by TTY slots anymore.
Silence from: brian
|
#
173710 |
|
17-Nov-2007 |
jb |
Use uintptr_t to cast a pointer to an integer to avoid compiler warnings on processors where sizeof(void *) > sizeof(int).
|
#
134789 |
|
04-Sep-2004 |
brian |
Make ppp WARNS=5 clean
|
#
132818 |
|
29-Jul-2004 |
glebius |
Add configuration option "set pppoe [standard|3Com]" which allows to configure mode for ng_pppoe(4) node under control.
Reviewed by: brian Approved by: julian (mentor)
|
#
96582 |
|
14-May-2002 |
brian |
o Clean up some #includes o Bump version number to 3.0.4 o When talking to a RADIUS server, provide a NAS-Port-Type.
When the NAS-Port-Type is Ethernet, provide a NAS-Port value equal to the SESSIONID from the environment in direct mode or the NGM_PPPOE_SESSIONID message in other modes. If no SESSIONID is found, default to the interface index in client mode or zero in server mode.
When the NAS-Port-Type is ISDN, set the NAS-Port to the minor number of the physical device (ie, the N in /dev/i4brbchN).
This makes it easier for the RADIUS server to identify the client WRT accounting data etc.
Prompted by: lsz8425 <lsz8425@mail.cd.hn.cn>
|
#
93418 |
|
30-Mar-2002 |
brian |
Merge the NETGRAPH branch into HEAD. tty devices now use netgraph's line discipline to do the async escaping, but no other benefits are available yet.
Change ``ifdef HAVE_DES'' to ``ifndef NODES'' for consistency.
Make the Makefile a little more sane WRT RELEASE_CRUNCH.
|
#
78410 |
|
18-Jun-2001 |
brian |
Handle hardware-imposed MTU/MRU limitations. PPPoE will no longer allow MRU/MTU negotiations to exceed 1492.
Add an optional ``max'' specifier to ``set m[rt]u'', ie.
set mtu max 1480
Bump the ppp version number.
Sponsored by: Monzoon Networks AG and FreeBSD Services Limited
|
#
65862 |
|
14-Sep-2000 |
brian |
Support PPPoATM, disabled for now as /usr/include/netnatm doesn't exist
Submitted by: Jakob Stoklund Olesen <stoklund@taxidriver.dk>
|
#
58038 |
|
13-Mar-2000 |
brian |
Correct some typos introduced in the descriptor -> fdescriptor change.
|
#
58028 |
|
13-Mar-2000 |
brian |
To avoid namespace polution in NetBSD:
``struct descriptor'' -> ``struct fdescriptor''
|
#
53733 |
|
26-Nov-1999 |
brian |
Change ``set cd'' so that its default value is device specific. The default is still 1 second for ttys, but is now 6 seconds for i4b (ISDN) devices and 5 seconds for ethernet (PPPoE) devices.
|
#
53684 |
|
25-Nov-1999 |
brian |
Rewrite the link descriptor transfer code in MP mode.
Previously, ppp attempted to bind() to a local domain tcp socket based on the peer authname & enddisc. If it succeeded, it listen()ed and became MP server. If it failed, it connect()ed and became MP client. The server then select()ed on the descriptor, accept()ed it and wrote its pid to it then read the link data & link file descriptor, and finally sent an ack (``!''). The client would read() the server pid, transfer the link lock to that pid, send the link data & descriptor and read the ack. It would then close the descriptor and clean up.
There was a race between the bind() and listen() where someone could attempt to connect() and fail.
This change removes the race. Now ppp makes the RCVBUF big enough on a socket descriptor and attempts to bind() to a local domain *udp* socket (same name as before). If it succeeds, it becomes MP server. If it fails, it sets the SNDBUF and connect()s, becoming MP client. The server select()s on the descriptor and recvmsg()s the message, insisting on at least two descriptors (plus the link data). It uses the second descriptor to write() its pid then read()s an ack (``!''). The client creates a socketpair() and sendmsg()s the link data, link descriptor and one of the socketpair descriptors. It then read()s the server pid from the other socketpair descriptor, transfers any locks and write()s an ack.
Now, there can be no race, and a connect() failure indicates a stale socket file.
This also fixes MP ppp over ethernet, where the struct msghdr was being misconstructed when transferring the control socket descriptor.
Also, if we fail to send the link, don't hang around in a ``session owner'' state, just do the setsid() and fork() if it's required to disown a tty.
UDP idea suggested by: Chris Bennet from Mindspring at FreeBSDCon
|
#
52942 |
|
06-Nov-1999 |
brian |
Support PPPoE
Help (lots) from: julian, archie Facilities from: ahebert@pubnix.net
|
#
52429 |
|
21-Oct-1999 |
brian |
Manually create a correct(*) entry in wtmp when logging out a PPPoTCP or PPPoUDP connection.
(*) This is as correct as ftp and uucp wtmp entries are - that is, multiple concurrent connections will not record enough information in wtmp to tell last(1) who was logged in for how long.
|
#
51699 |
|
26-Sep-1999 |
brian |
Support ``set cd off'' to tell ppp not to even look for carrier on the device.
|
#
50479 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
49472 |
|
06-Aug-1999 |
brian |
Add ISDN support via isdnd & i4b. This requires version 0.81.1 of the i4b code - namely support of the I4B_VR_REQ ioctl via the i4brbchX device.
Ppp controls the phone number, but idle timers and SYNC/RAW decisions are still made by isdnd (in isdnd.rc).
This involves a new datalink state machine phase. The ``wait for carrier'' phase happens after dialing but before logging in. The whole dial state should really be abstracted so that each device type can deal with it in its own way (thinking about PPPoE) - but that'll have to wait.
The ``set cd'' symantics remain the same for tty devices, but we now delay until we either get CD or timeout waiting (at which time we drop the link if we require CD).
For i4b devices we always insist on carrier.
Thanks to hm@ for his help, and especially for pointing out that I *don't* need to re-implement isdnd (that was a huge waste of time !) :-]
|
#
47769 |
|
05-Jun-1999 |
brian |
Correct the way ppp transfers links on the server side in MP mode by padding out the ``struct device'' to the maximum device size. Bump the ppp version number to indicate the transfer format change.
This should make MP over tty and udp devices functional again.
|
#
47682 |
|
01-Jun-1999 |
brian |
Increase the length of an individual device name to LINE_LEN. Adjust the base physical device name correctly after a link transfer (allowing correct multilink callbacks).
|
#
47461 |
|
24-May-1999 |
brian |
Correct the ``ignoring sync/async'' warnings so that they show up with the correct device type. Reassign the correct tcpdevice or execdevice after transfering a link in MP server mode.
|
#
47061 |
|
12-May-1999 |
brian |
Allow ``host:port/udp'' devices and support ``host:port/tcp'' as being the same as the previous (still supported) ``host:port'' syntax for tcp socket devices.
A udp device uses synchronous ppp rather than async, and avoids the double-retransmit overhead that comes with ppp over tcp (it's usually a bad idea to transport IP over a reliable transport that itself is using an unreliable transport). PPP over UDP provides througput of ** 1.5Mb per second ** with all compression disabled, maxing out a PPro/200 when running ppp twice, back-to-back.
This proves that PPPoE is plausable in userland....
This change adds a few more handler functions to struct device and allows derivations of struct device (which may contain their own data etc) to pass themselves through the unix domain socket for MP. ** At last **, struct physical has lost all the tty crud !
iov2physical() is now smart enough to restore the correct stack of layers so that MP servers will work again.
The version number has bumped as our MP link transfer contents have changed (they now may contain a `struct device').
Don't extract the protocol twice in MP mode (resulting in protocol rejects for every MP packet). This was broken with my original layering changes.
Add ``Physical'' and ``Sync'' log levels for logging the relevent raw packets and add protocol-tracking LogDEBUG stuff in various LayerPush & LayerPull functions.
Assign our physical device name for incoming tcp connections by calling getpeername().
Assign our physical device name for incoming udp connections from the address retrieved by the first recvfrom().
|
#
46686 |
|
08-May-1999 |
brian |
o Redesign the layering mechanism and make the aliasing code part of the layering.
We now ``stack'' layers as soon as we open the device (when we figure out what we're dealing with). A static set of `dispatch' routines are also declared for dealing with incoming packets after they've been `pulled' up through the stacked layers.
Physical devices are now assigned handlers based on the device type when they're opened. For the moment there are three device types; ttys, execs and tcps.
o Increment version number to 2.2 o Make an entry in [uw]tmp for non-tty -direct invocations (after pap/chap authentication). o Make throughput counters quad_t's o Account for the absolute number of mbuf malloc()s and free()s in ``show mem''. o ``show modem'' becomes ``show physical''.
|
#
46102 |
|
26-Apr-1999 |
brian |
Change ``set device'' so that it parses its arguments as one device per argument rather than the old way of concatenating everything then splitting the result at commas and whitespace.
Old syntax of ``set device /dev/cuaa0, /dev/cuaa1'' may no longer contain the comma, but syntax such as ``set device "!ssh host ppp -direct label"'' is now possible.
|
#
45264 |
|
03-Apr-1999 |
brian |
Handle the detection of frames even if we read them with more than one read(). When we detect one, don't forget to pass it to async_Input() and drop our terminal back into command mode.
Don't output an extraneous \r if we're passed \r\n to prompt_vprintf in raw mode.
|
#
44073 |
|
15-Feb-1999 |
brian |
Wait by default for one second after the login script is complete before checking carrier. If it's there, the device supports carrier. If it's not it doesn't.
Add the ``set cd'' command for deciding how soon to check for carrier, and for deciding if carrier is REQUIRED.
The default has changed: Pre 2.0 versions of ppp waited for 1 second. Version 2 didn't wait, but this causes problems with some (few?) modems that don't assert carrier immediately on reporting CONNECT. The one second delay is back now and can be removed with ``set cd 0''.
Bump the ppp version number in case this needs to be changed again....
|
#
42452 |
|
09-Jan-1999 |
brian |
Only call isatty() when we open our descriptor, and remember the answer.
If we later get a descriptor exception from select(), we know that it's a tty (isatty() returns 0 after the exception on a tty) and remember to call modem_LogicalClose().
The upshot of it all is that descriptor exceptions dont leave the tty locked any more.
|
#
38544 |
|
25-Aug-1998 |
brian |
If we've got a full output buffer queue and cannot send anything for two mintues (see ``set choked'' and ``show bundle''), nuke the ip, mp and link level buffer queues.
This should fix problems where ``ppp -auto'' seems to stop responding after failing to connect to the peer a few times.
|
#
36467 |
|
29-May-1998 |
brian |
o If there's a session leader left running for a descriptor that we're now closing, manually HUP that session leader so that the tty is fully released. o Always restart our carrier detect timer in the receiving process if it was running in the sending process (as we now *always* pass the descriptor). o Tweak argv when we go into pause() mode to keep our session so that ps can see what's going on (without checking for a `pause' state in `ps -l').
|
#
36285 |
|
21-May-1998 |
brian |
MFMP: Make ppp multilink capable. See the file README.changes, and re-read the man page.
|