#
b3e76948 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
Remove $FreeBSD$: two-line .h pattern Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/
|
#
4d846d26 |
|
10-May-2023 |
Warner Losh <imp@FreeBSD.org> |
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of BSD-2-Clause. Discussed with: pfg MFC After: 3 days Sponsored by: Netflix
|
#
1de7b4b8 |
|
27-Nov-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
various: general adoption of SPDX licensing ID tags. Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. No functional change intended.
|
#
3df5ecac |
|
30-Dec-2011 |
Ulrich Spörlein <uqs@FreeBSD.org> |
Spelling fixes for usr.sbin/
|
#
a7d5f7eb |
|
19-Oct-2010 |
Jamie Gritton <jamie@FreeBSD.org> |
A new jail(8) with a configuration file, to replace the work currently done by /etc/rc.d/jail.
|
#
fe0506d7 |
|
09-Mar-2010 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Create the altix project branch. The altix project will add support for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting is a two-module system, consisting of a base compute module and a CPU expansion module. SGI's NUMAFlex architecture can be an excellent platform to test CPU affinity and NUMA-aware features in FreeBSD.
|
#
d7f03759 |
|
19-Oct-2008 |
Ulf Lilleengen <lulf@FreeBSD.org> |
- Import the HEAD csup code which is the basis for the cvsmode work.
|
#
1814213e |
|
05-Sep-2004 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Fix the build on 64-bit platforms.
|
#
057f1760 |
|
04-Sep-2004 |
Brian Somers <brian@FreeBSD.org> |
Make ppp WARNS=5 clean
|
#
6eafd353 |
|
27-Aug-2002 |
Brian Somers <brian@FreeBSD.org> |
Include the correct file (stdarg.h) and use va_list rather than _BSD_VA_LIST_ Suggested by: mike
|
#
de59e178 |
|
13-May-2002 |
Brian Somers <brian@FreeBSD.org> |
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>
|
#
a43e859d |
|
13-May-2002 |
Brian Somers <brian@FreeBSD.org> |
Calculate the number of open links properly when deciding on whether to just send PROTO_IP packets when we've got only one link up in multi-link mode. Problem noted by: Adrian Close <adrian@fernhilltec.com.au> MFC after: 1 week
|
#
299920e5 |
|
06-May-2002 |
Brian Somers <brian@FreeBSD.org> |
Don't corrupt MP fragments when they're put back on the front of our inbound queue. Submitted by: "Amit K. Rao" <arao@niksun.com> PR: 37813 MFC after: 1 week Also fix a typo while I'm here.
|
#
63c6cac9 |
|
16-Jan-2002 |
Brian Somers <brian@FreeBSD.org> |
socket()s first argument should be a protocol family rather than an address family.
|
#
c87436f3 |
|
16-Jan-2002 |
Brian Somers <brian@FreeBSD.org> |
socket's first argument is an address family, not a protocol family.
|
#
1433aa5d |
|
18-Aug-2001 |
Brian Somers <brian@FreeBSD.org> |
Better handling for the return of snprintf().
|
#
30949fd4 |
|
14-Aug-2001 |
Brian Somers <brian@FreeBSD.org> |
o Add ipv6 support, abstracting most NCP addresses into opaque structures (well, they're treated as opaque). It's now possible to manage IPv6 interface addresses and routing table entries and to filter IPV6 traffic whether encapsulated or not. IPV6CP support is crude for now, and hasn't been tested against any other implementations. RADIUS and IPv6 are independent of eachother for now. ppp.linkup/ppp.linkdown aren't currently used by IPV6CP o Understand all protocols(5) in filter rules rather than only a select few. o Allow a mask specification for the ``delete'' command. It's now possible to specifically delete one of two conflicting routes. o When creating and deleting proxy arp entries, do it for all IPv4 interface addresses rather than doing it just for the ``current'' peer address. o When iface-alias isn't in effect, don't blow away manually (via ``iface add'') added interface addresses. o When listening on a tcp server (diagnostic) socket, bind so that a tcp46 socket is created -- allowing both IPv4 and IPv6 connections. o When displaying ICMP traffic, don't display the icmp type twice. When display traffic, display at least some information about unrecognised traffic. o Bump version Inspired after filtering work by: Makoto MATSUSHITA <matusita@jp.FreeBSD.org>
|
#
65cacad4 |
|
31-Jul-2001 |
Brian Somers <brian@FreeBSD.org> |
Remove an irritating diagnostic emitted to LogPHASE when a static proxy arp entry is deleted. Rename a function (for consistency) and remove some whitespace (for readability). MFC after: 1 week
|
#
6301d506 |
|
03-Jul-2001 |
Brian Somers <brian@FreeBSD.org> |
Reduce the interface MTU by 2 when MPPE has been successfully negotiated. This is necessary because MPPE will combine the protocol id with the payload received on the tun interface, encrypt it, then prepend its own protocol id, effectively increasing the payload by two bytes.
|
#
9b996792 |
|
29-Oct-2000 |
Brian Somers <brian@FreeBSD.org> |
Various whitespace changes. Make some functions static.
|
#
3fd1e17c |
|
17-Aug-2000 |
Brian Somers <brian@FreeBSD.org> |
If we're in MP mode with a single open link, MP link level compression isn't open and the links MRU >= our MRRU, send outbound traffic as PROTO_IP rather than PROTO_MP. This shaves some bytes off the front of each packet 'till the second link is brought up. Idea obtained from: Cisco
|
#
91cbd2ee |
|
15-Aug-2000 |
Brian Somers <brian@FreeBSD.org> |
Maintain input and output throughput averages and choose the highest of the two when calculating the MP throughput average for the ``set autoload'' implementation. This makes more sense as all links I know of are full-duplex. This also means that people may need to adjust their autoload settings as 100% bandwidth is now the theoretical maximum rather than 200% (but of course, halfing the current settings is probably not the correct answer either!). This involves a ppp version bump as we need to pass an extra throughput array through the MP local domain socket.
|
#
11572abf |
|
14-Aug-2000 |
Brian Somers <brian@FreeBSD.org> |
Calculate the average link throughput using a counter based on the cumulative total of all active links rather than basing it on the total of PROTO_MP traffic. This fixes a problem whereby Cisco routers send PROTO_IP packets only when there's only one link (hmm, what a good idea!).
|
#
cb8bd8dd |
|
12-Jul-2000 |
Brian Somers <brian@FreeBSD.org> |
Fix a rather nasty latency problem that occurs with single tcp sessions thorough an MP setup with only a single link.
|
#
7ebff009 |
|
22-May-2000 |
Brian Somers <brian@FreeBSD.org> |
Be more verbose when a second link doesn't match the first because the peer enddisc/authname is different.
|
#
f013f33e |
|
13-Mar-2000 |
Brian Somers <brian@FreeBSD.org> |
To avoid namespace polution in NetBSD: ``struct descriptor'' -> ``struct fdescriptor''
|
#
57f0cd10 |
|
06-Jan-2000 |
Brian Somers <brian@FreeBSD.org> |
Remove an unused #define
|
#
26af0ae9 |
|
20-Dec-1999 |
Brian Somers <brian@FreeBSD.org> |
Cosmetic: Make struct mbuf more like kernel mbufs.
|
#
cbee9754 |
|
30-Nov-1999 |
Brian Somers <brian@FreeBSD.org> |
Change the way we transfer links (again). The previous method avoided all race conditions, but suffered from sometimes running out of buffer space if enough clients were piled up at the same time. Now, the client pushes the link descriptor, one end of a socketpair() and the ppp version via sendmsg() at the server. The server replies with a pid. The client then transfers any link lock with uu_lock_txfr() and writev()s the actual link contents. The socketpair is now the only place we need to have large socket buffers and the bind()ed socket can keep the default 4k buffer while still handling around 90 racing clients.
|
#
2cb305af |
|
24-Nov-1999 |
Brian Somers <brian@FreeBSD.org> |
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
|
#
b9391689 |
|
21-Sep-1999 |
Brian Somers <brian@FreeBSD.org> |
Back out the bogus #ifdef __NetBSD__ #include <signal.h> lines. The original report was due to a mis-installation of the NetBS header files :-/ Submitted by: Kazuyoshi Kato <kazk@yyy.or.jp>
|
#
7e795ebe |
|
20-Sep-1999 |
Brian Somers <brian@FreeBSD.org> |
NetBSD has moved ``extern int errno;'' to signal.h :-/ Submitted by: Kazuyoshi Kato <kazk@yyy.or.jp>
|
#
f02c2029 |
|
08-Sep-1999 |
Brian Somers <brian@FreeBSD.org> |
Cosmetic: alias_cmd -> nat_cmd after a repo-copy
|
#
442f8495 |
|
03-Sep-1999 |
Brian Somers <brian@FreeBSD.org> |
o Split the two IPCP queues into three - one for FSM data (LCP/CCP/IPCP), one for urgent IP traffic and one for everything else. o Add the ``set urgent'' command for adjusting the list of urgent port numbers. The default urgent ports are 21, 22, 23, 513, 514, 543 and 544 (Ports 80 and 81 have been removed from the default priority list). o Increase the buffered packet threshold from 20 to 30. o Report the number of packets in the IP output queue and the list of urgent ports under ``show ipcp''.
|
#
97d92980 |
|
27-Aug-1999 |
Peter Wemm <peter@FreeBSD.org> |
$Id$ -> $FreeBSD$
|
#
67b072f7 |
|
19-Aug-1999 |
Brian Somers <brian@FreeBSD.org> |
o Add the -foreground switch. This switch behaves like -background except that ppp stays in the foreground. o Add the -quiet switch to quieten ppps startup o Add the -nat flag and discourage the use of the -alias flag. Both do the same thing. o Correct some nat usage strings. o Change the internal ``alias'' command to ``nat''.
|
#
ab2de065 |
|
05-Aug-1999 |
Brian Somers <brian@FreeBSD.org> |
o Obsolete the undocumented ``set weight'' command. o If we're using RADIUS and the RADIUS mtu is less than our peers mru/mrru, reduce our mtu to this value for NetBSD too. o Make struct throughput's sample period dynamic and tweak the ppp version number to reflect the extra stuff being passed through the local domain socket as a result (MP mode). o Measure the current throughput based on the number of samples actually taken rather than on the full sample period. o Keep the throughput statisics persistent while being passed to another ppp invocation through the local domain socket. o When showing throughput statistics after the timer has stopped, use the stopped time for overall calculations, not the current time. Also show the stopped time and how long the current throughput has been sampled for. o Use time() consistently in throughput.c o Tighten up the ``show bundle'' output. o Introduce the ``set bandwidth'' command. o Rewrite the ``set autoload'' command. It now takes three arguments and works based on a rolling bundle throughput average compared against the theoretical bundle bandwidth over a given period (read: it's now functional).
|
#
7063995c |
|
09-Jun-1999 |
Brian Somers <brian@FreeBSD.org> |
Allow our endpoint discriminator to be enabled, disabled, accepted and denied. This is necessary for some MP implementations that get confused if you accept their endpoint discriminator but reject their MRRU.
|
#
64e0f466 |
|
03-Jun-1999 |
Brian Somers <brian@FreeBSD.org> |
Fix some MP sequence number comparison bogons that are tickled by having different speed links in a bundle. This would manifest itself by having the link occasionally hang, but revive when a new connection is made.... Make ``show mp'' a bit prettier.
|
#
fa0d5216 |
|
02-Jun-1999 |
Brian Somers <brian@FreeBSD.org> |
Oops, quieten a compiler warning.
|
#
411675ba |
|
02-Jun-1999 |
Brian Somers <brian@FreeBSD.org> |
o Alter the mbuf type as it's processed by different layers. o Show more information about missing MP fragments in ``show mp''. o Do away with mbuf_Log(). It was showing mbuf stats twice on receipt of LCP/CCP/IPCP packets.... ???!!? o Pre-allocate a bit extra when creating LQR packets to avoid having to allocate another mbuf in mbuf_Prepend().
|
#
65cec6e7 |
|
28-May-1999 |
Brian Somers <brian@FreeBSD.org> |
Don't forget to free the mbufs that get processed by mp_Assemble(). Leak spotted by: louqi
|
#
6815097b |
|
12-May-1999 |
Brian Somers <brian@FreeBSD.org> |
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().
|
#
5d9e6103 |
|
08-May-1999 |
Brian Somers <brian@FreeBSD.org> |
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''.
|
#
972a1bcf |
|
27-Jan-1999 |
Brian Somers <brian@FreeBSD.org> |
Initial RADIUS support (using libradius). See the man page for details. Compiling with -DNORADIUS (the default for `release') removes support. TODO: The functionality in libradius::rad_send_request() needs to be supplied as a set of routines so that ppp doesn't have to wait indefinitely for the radius server(s). Instead, we need to get a descriptor back, select() on the descriptor, and ask libradius to service it when necessary. For now, ppp blocks SIGALRM while in rad_send_request(), so it misses PAP/CHAP retries & timeouts if they occur. Only PAP is functional. When CHAP is attempted, libradius complains that no User-Password has been specified... rfc2138 says that it *mustn't* be used for CHAP :-( Sponsored by: Internet Business Solutions Ltd., Switzerland
|
#
9b5f8ffd |
|
23-Oct-1998 |
Brian Somers <brian@FreeBSD.org> |
Loosen our restrictions on setting enddisc, mrru, shortseq, authname and authkey. o Auth{name,key} may additionally be set in PHASE_ESTABLISH. o The others may be set in PHASE_ESTABLISH as long as no links have yet reached DATALINK_LCP.
|
#
9e8ec64b |
|
04-Sep-1998 |
Brian Somers <brian@FreeBSD.org> |
Don't cast potentially unaligned addresses to pointers to non-char types on non-i386 architectures. On Alpha and Sparc we get a bus error if we do.
|
#
5a72b6ed |
|
26-Aug-1998 |
Brian Somers <brian@FreeBSD.org> |
Put the IP buffer queues into struct ipcp. Forgotten by: me
|
#
6f8e9f0a |
|
25-Aug-1998 |
Brian Somers <brian@FreeBSD.org> |
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.
|
#
92b09558 |
|
07-Aug-1998 |
Brian Somers <brian@FreeBSD.org> |
o Support callback types NONE, E.164, AUTH and CBCP. (see the new ``set callback'' and ``set cbcp'' commands) o Add a ``cbcp'' log level and mbuf type. o Don't dump core when \T is given in ``set login'' or ``set hangup''. o Allow ``*'' and blanks as placeholders in ppp.secret and allow a fifth field for specifying auth/cbcp dialback parameters. o Remove a few extraneous #includes o Define the default number of REQs (restart counter) in defs.h rather than hardcoding ``5'' all over the place. o Fix a few man page inconsistencies.
|
#
06337856 |
|
30-Jun-1998 |
Brian Somers <brian@FreeBSD.org> |
The CCP layer now behaves as follows: o If we've denied and disabled all compression protocols, stay in ST_INITIAL and do an LCP protocol reject if we receive any CCP packets. o If we've disabled all compression protocols, go to ST_STOPPED and wait for the other side to ask for something. o If we've got anything enabled, start REQing as soon as the auth layer is up. o If we're in multilink mode, than the link level CCP goes straight to ST_STOPPED irrespective of what's configured so that we never try to compress compressed stuff by default.
|
#
1af29a6e |
|
24-Jun-1998 |
Brian Somers <brian@FreeBSD.org> |
o If we come out of select() with only write descriptors that end up writing zero bytes, sleep for 1/10 of a second so that we don't end up using up too much cpu. This should only ever happen on systems that wrongly report a descriptor as writable despite the tty buffer being full. Discussed with: Jeff Evarts o Do an initial run-time check to see if select() alters the passed timeval. This knowledge isn't yet used, but will be soon.
|
#
09206a6f |
|
19-Jun-1998 |
Brian Somers <brian@FreeBSD.org> |
Create & use fsm2initial(), a function to bring a state machine back to ST_INITIAL without going through any unnecessary TLS/TLF pairs.
|
#
a33b2ef7 |
|
16-Jun-1998 |
Brian Somers <brian@FreeBSD.org> |
Change some log levels. ALERTs are only logged when something that can't happen happens or when everyone needs to know. ERRORs are only logged when something unexpected happens.
|
#
d93d3a9c |
|
15-Jun-1998 |
Brian Somers <brian@FreeBSD.org> |
o De-staticise things that don't need to be static. o Bring the static ``ttystate'' into struct prompt so that the tilde context is per prompt and not global. o Comment the remaining static variables so that it's clear why they're static. o Add some XXX comments suggesting that our interface list and our hostname should be re-generated after a signal (say SIGUSR1) so that a machine with PCCARDs has a chance.
|
#
c9e11a11 |
|
15-Jun-1998 |
Brian Somers <brian@FreeBSD.org> |
Fix a rather nasty use of `static'. This caused a SEGV when running ``link * load label'' as we ended up recursing back into command_Interpret after nuking our command arg list.
|
#
54cd8e13 |
|
24-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Don't try to transfer tty device descriptors as there's no way of transferring session rights with them. Instead, create two `/bin/cat' processes. A new child is spawned and disassociated from the terminal and the parent, which continues with the rest of the ppp process. Meanwhile, the parent spawns another child, and both the parent and child exec the `/bin/cat' commands with the appropriate descriptors. This way, the session is owned by the parent, and the tty is held open. o Close LCPs that have done a TLF and are now in ST_STOPPED before calling Down. This prevents them from trying to come back up again after the peer has shut them down (it seems a bit strange that the rfc says that a Down in ST_STOPPED will cause a TLS etc). o Don't try to set the physical link name pointer when we're receiving and renaming a datalink. The physical hasn't been created yet, and as it happens, the garbage physical pointer happens to be the value of another physical - so we're pointing that other physical name at ourselves. yeuck. o Re-arrange the order of things in main (DoLoop()). We now handle signals only after the select and not before the UpdateSet. It's possible that either a signal (FSM timeout) or a descriptor_Read() brings a link down, after which we'd better tidy up any dead direct and 1off descriptors before calling UpdateSet() again. o Mention when we detect a PPP packet when we see one before the link is up (then start LCP as before).
|
#
0f2f3eb3 |
|
23-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Move our prompt descriptor list outside of the bundle. It's now dealt with by the `server' object. This simplifies things as we only have one list of prompt descriptors and the log_ routines check prompt::logactive to determine whether it should be used for output. o Include the MP socket UpdateSet() result in bundle::UpdateSet(). o Don't select on the tun device unless we're in NETWORK phase or AUTO mode. o Stop the idle timer when we go to DEAD phase. We may have transferred a link and not had a chance to kill it. o Don't fail when trying to unlink our transferred datalink from our descriptor lists just before the transfer. o Add our link descriptor to the write set if we got a short write the last time (physical::out is set). o Log the connection source address when a connection is closed. o Remove descriptor::next field. Descriptor lists are not required any more.
|
#
86b1f0d7 |
|
23-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Make sure we adjust our min seq and process any outstanding queued incoming fragments when a link goes down. o Don't use the minimum sequence numbers of links that aren't open. o Understand sequence number wrapping when determining the minimum sequence number. o Add & adjust a few comments.
|
#
1df0a3b9 |
|
23-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o If all CCPs are disabled & denied, don't send a REQ - just enter STOPPED state waiting for the peer to say something.
|
#
ea722969 |
|
15-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Call bundle_LinkClosed() when transferring a datalink so that the bundle has the opportunity to go PHASE_DEAD and cleanup the interface (if it's the last link). o Regnerate our phys_type value when we transfer the link. o Always clean up the interface when destroying our bundle in case we're abending. o Always clean up our interface when the last link is gone rather than delaying things 'till exit time in the -direct case (the interface is useless anyway). Do this *after* slamming down our NCPs (if they're still around). o Our MP server descriptor now clears the relevent device descriptor from our descriptor [fd]sets when a datalink is on death-row (to be transferred to another running ppp), thus avoiding the possibility of passing a bum descriptor to select() and having ppp abend. o Handle the MP socket descriptor functions from within the bundle descriptor functions. Now we ensure that the MP socket descriptor functions see the descriptor sets *after* they've been seen by our datalinks. o Add/fix a few more comments.
|
#
0a1b5c9d |
|
15-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Activate link-level CCPs in multilink mode, by bringing them into the ST_STOPPED state. o Allow an optional ccp|lcp argument to `down'. The default is still lcp (as before). You can now call down with no context in multilink mode, in which case it'll down the multilink ccp or the entire bundle (*very* rude). o Allow an optional `!' after `close ccp' (close ccp!) to tell ccp to stay in the CLOSED state after the terminate ACK. The default is now to re-enter STOPPED so that the peer can bring the layer back up if desired. o Always handle proto-compressed packets, even if we've agreed (in LCP) that the peer will not send us 1 byte protocols. If the peer violates the LCP agreement, log it to the HDLC log. o Fix some comments.
|
#
24989c68 |
|
10-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Protect against expected NULL fdset pointers. o Log FD_SET()s in LogTIMER. o Identify the descriptor that causes an EBADF from select() if LogTIMER is enabled (then exit). o Call the MP server UpdateSet() function after calling the UpdateSet() for all links - the link may enter PHASE_TERMINATE and bring down the MP server - breaking the imminent select().
|
#
b7c5748e |
|
07-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Rename datalinks as soon as the name has been received so that LQM and HDLC timer diagnostics come out with the correct name. o Don't send an LQR immediately upon reviving a datalink. Leave it 'till the next timeout. o Add the link name to some more LQR diagnostics. o Break out of the main loop when a descriptor exception is seen in select(). o Remove the evil nointr_[u]sleep() functions. Timers should be (and are) used instead. o Treat a read() of 0 bytes as an error that's fatal to the link on which the read() is done. We should never read() 0 after select() says there's something there - not unless the link has been closed by the other side. o Write the data seen before a HDLC header to the terminal in `term' mode, *not* back to the modem :-/ o Initialise our transmitted file descriptor before starting any timers. o Only send data links that have *no* pending output data. This means that our final ACK will be written rather than being nuked with the datalink transmission.
|
#
b4b280ab |
|
06-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Behave correctly when short sequence numbers are denied. o Determine if one seq is less than the other correctly, given the point at which they wrap (again).
|
#
1bc9b5ba |
|
06-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Make sure we don't dereference NULL when we've lost all our links. o Use srandomdev() for __FreeBSD__ >= 2, not just >2. o Use srandom((time(NULL)^getpid())+random()), random() when we haven't got srandomdev().
|
#
1bcced10 |
|
04-May-1998 |
Brian Somers <brian@FreeBSD.org> |
Allow a 1000 fragment sliding window when placing a new fragment in our inbound multilnk queue. This fixes wrapping problems when something arrives out-of-sequence.
|
#
147613ea |
|
03-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Increment expected MP fragment numbers correctly, according to SHORTSEQ negotiation. o Don't forget to attach incoming fragments with a number greater than everything else in the queue (rather than leaking memory). o Output the link name with the ``other'' hdlc diagnostic message. o Correct a VJ diagnostic (`COMPPROTO', not `proto').
|
#
9c53a7b1 |
|
03-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Display current link throughput in `show links' (assuming throughput measurement is enabled). o Load balance the links based on weight *and* on a round-robin basis. This makes things fairly even on an output basis. We don't try to allow for the peer sending all his data down one link (and try to send ours back up the other). o Show the number of pending input buffers that can't be processed in ``show mp''. o Fix a typo in the man page.
|
#
96c9bb21 |
|
02-May-1998 |
Brian Somers <brian@FreeBSD.org> |
o Transfer file descriptors using {send,recv}msg & SCM_RIGHTS, using the scatter/gather array to transfer the link information. The whole link is now passed in one message. This is far better than the two `/bin/cat' processes per additional link :-) I remember years ago thinking that file descriptor transferral would be a really amazing facility ! Suggested by: Garrett Wollman <wollman@khavrinen.lcs.mit.edu> and: Eivind Eklund <eivind@yes.no>
|
#
dd7e2610 |
|
01-May-1998 |
Brian Somers <brian@FreeBSD.org> |
Cosmetic: Make our external function names consistent.
|
#
6f384573 |
|
30-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
o Create a new ``timer'' log level. This lets us ``set log debug'' without filling our filesystem/screen with junk that we don't really want to see. o change PHYS_STDIN to PHYS_DIRECT - we can handle incoming connections that aren't on STDIN_FILENO now. o Allow return values from our FSM LayerUp functions. If LayerUp() fails, the FSM does an immediate FsmDown() without calling the fsm_parent's Layer{Up,Down} functions. o Clear the close-on-exec flag of file descriptor 3 when executing chat programs so that our documented ability to communicate with /dev/tty via that descriptor works. Also document it as descriptor 3, not 4 :-O o Allow a ``rm'' command as an alias for ``remove''. o Fix the bind()/connect()/accept() calls made by the MP server. o Create bundle_SendDatalink() and bundle_ReceiveDatalink(). This allows `struct datalink's to flatten themselves, pass through a pipe (read: the eye of a needle !) and come alive at the other end. The donator then fork()s & exec()s pppmpipe, ``passing'' the connection to another ppp instance. *** PPP NOW TALKS MULTILINK :-))) *** Our link utilization is hideous, and lots of code needs tidying still. It's also probably riddled with bugs ! It's been tested against itself only, and has hung once, so confidence isn't high....
|
#
1fa665f5 |
|
27-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
o Add the link name to modem diagnostics. o Create struct mpserver as part of struct mp. mpserver creates a unix-domain socket based on the peers auth name and endpoint discriminator. If it already exists, ppp will ``pass the link'' over to the owner of the socket, joining it into the bundle of another ppp invocation, otherwise ppp waits for other invocations to pass it links through this socket. The final piece of code will be the code that flattens our datalink info and passes it down this channel (not yet implemented).
|
#
e43ebac1 |
|
25-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Make gcc-2.8.1 build ppp cleanly. Support OpenBSD again.
|
#
184d1da2 |
|
24-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Show our link name when we fail to mp_Up().
|
#
259a6191 |
|
24-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Choose the correct IP number in ``set enddisc {ip,mac}''.
|
#
643f4904 |
|
24-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
o Defer setting up pap/chap based IP numbers & labels until after we've determined if we're going to join another ppp invocation. o Make ``show link'' show all link details, and ``show links'' just give a list of links and their current status. o Show our current label in ``show bundle''. o Allow link cloning and removal as soon as our MRRU is set. o Make ``show lcp'' require context as nothing will ever change in our MP LCP (it's auto-configured as per rfc1990). o Initialise our LQM owner in hdlc_Init(). o Store our endpoint discriminator and authentication name at both the datalink and multilink level and compare them when we've finished AUTHENTICATE phase and before entering NETWORK phase. If they don't match, close the link again. Display the information in the appropriate ``show'' command. o Initialise datalink::phone and datalink::fsmp.object properly when we're cloning the link. o Show which link we're passing LQRs on in our diagnostics. o Reject endpoint discriminator REQs at the logical multilink level. o Remove the rest of our CARRIER and LINK logging setup.
|
#
d47dceb8 |
|
24-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
o Remove LINK level logging. o change the default link name to ``deflink'' rather than ``default''. o Prepend the link name to CCP and LCP FSM diagnostics. o Protect against 0 length options in CCP and IPCP REQ interpreters (already done for LCP). o Allow optional context for the `show' command. o Use MPs link when interpreting commands if the multilink mrru is configured rather than when multilink is active. This means that once we've ``set mrru xxx'', we then need to ``link deflink show ccp'' etc if we want to do link-level stuff (based on the command requiring optional or manditory context). o Use the ifconfig'd interface address in `set enddisc {ip,mac}' if it's there, otherwise the configuration file value.
|
#
08676022 |
|
23-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Create #defines for all endpoint discriptor classes, and allow `set enddisc mac'.
|
#
673903ec |
|
23-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
o Initialise MP correctly depending on if we're the first link in mp_Up(). o Bring MP and its CCP down when we enter phase TERMINATE, and ditch everything in the incoming packet queue. o Enable MRRU negotiation. Now, we can multilink mode, but only with one physical link. o Close the link if the peer PROTO REJs PROTO_MP. o Prepend our protocol before passing a packet to struct mp for fragmentation. o Log info messages to DEBUG, not ERROR (oops). o Align `show mp' output (again).
|
#
6e3ef614 |
|
23-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Get the alignment right in ``show mp''.
|
#
ce828a6e |
|
23-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
o Add ipcp_SetLink() for attaching IPCP to the correct link, and call it after link authentication. o Pretty print our bundle MTU. o Correct MP header encoding and decoding (should be network byte order). o Add some debug diagnostics so that we can see MP fragment sending and re-assembly.
|
#
49052c95 |
|
22-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Negotiate MRRU, SHORTSEQ and ENDDISC. ENDDISC doesn't imply multilink ('cos I've seen my ISP REQ it without multilink). Setting MRRU is ifdef'd out until it's debugged and we can merge -direct links with other running programs. Fix MTU setting.
|
#
f45c7906 |
|
19-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Do away with the static struct timeoutArg. Move the struct pppTimer from struct link to struct physical for doing carrier checking.
|
#
cdbbb6b5 |
|
17-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Cosmetic: Clean up warnings.
|
#
1342caed |
|
15-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
o Move the accept/deny/disable/enable globals either to the bundle (non-negotiated vars) or to their respective IPCP, LCP or CCP. o Enable rolling throughput statistics by default. o Remove the `display' command. These values now appear in `show bundle', `show ipcp', `show ccp' and `show lcp'. o Initialise auth name & key at bundle create time (oops). o Rename pppd-deflate (the id-24 hack) to deflate24. o Don't send both a REJ and a NAK to an IPCP or LCP REQ. Favour the REJ (already done at the CCP level). o Recurse in datalink_UpdateSet() when we change state, otherwise we end up setting no descriptors and getting jammed in the imminent select() instead of doing the dial/login/hangup. o Display our CHAP encryption method despite being built with DES. o Display VJ as not negotiated in ``show ipcp'' when necessary.
|
#
25092092 |
|
14-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Pass all command arguments around with struct cmdargs rather than incrementing argv and decrementing argc. Now individual functions can determine their caller. This also removes the "prefix" hack in FindExec().
|
#
d24f017b |
|
06-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
Remove unused includes.
|
#
3b0f8d2e |
|
03-Apr-1998 |
Brian Somers <brian@FreeBSD.org> |
o Move struct lcp and struct ccp into struct link. o Remove bundle2lcp(), bundle2ccp() and bundle2link(). They're too resource-hungry and we have `owner pointers' to do their job. o Make our FSM understand LCPs that are always ST_OPENED (with a minimum code that != 1). o Send FSM code rejects for invalid codes. o Make our bundle fsm_parent deal with multiple links. o Make timer diagnostics pretty and allow access via ~t in `term' mode (not just when logging debug) and `show timers'. Only show timers every second in debug mode, otherwise we get too many diagnostics to be useful (we probably still do). Also, don't restrict ~m in term mode to depend on debug logging. o Rationalise our bundles' phases. o Create struct mp (multilink protocol). This is both an NCP and a type of struct link. It feeds off other NCPs for output, passing fragmented packets into the queues of available datalinks. It also gets PROTO_MP input, reassembles the fragments into ppp frames, and passes them back to the HDLC layer that the fragments were passed from. ** It's not yet possible to enter multilink mode :-( ** o Add `set weight' (requires context) for deciding on a links weighting in multilink mode. Weighting is simplistic (and probably badly implemented) for now. o Remove the function pointers in struct link. They ended up only applying to physical links. o Configure our tun device with an MTU equal to the MRU from struct mp's LCP and a speed equal to the sum of our link speeds. o `show {lcp,ccp,proto}' and `set deflate' now have optional context and use ChooseLink() to decide on which `struct link' to use. This allows behaviour as before when in non-multilink mode, and allows access to the MP logical link in multilink mode. o Ignore reconnect and redial values when in -direct mode and when cleaning up. Always redial when in -ddial or -dedicated mode (unless cleaning up). o Tell our links to `staydown' when we close them due to a signal. o Remove remaining `#ifdef SIGALRM's (ppp doesn't function without alarms). o Don't bother strdup()ing our physical link name. o Various other cosmetic changes.
|