Commit graph

794 commits

Author SHA1 Message Date
Brian Somers a804ec2201 Don't use `-width 20'', it's misleading. Use `-width XX''
instead.
1998-08-29 23:02:45 +00:00
Brian Somers 7fdd475323 Don't claim that the alias library isn't loaded until
used.
1998-08-29 23:02:43 +00:00
Brian Somers 131ef891c7 Add the following word substitutions when running a shell
command:
  AUTHNAME:     The local authname
  ENDDISC:      The local endpoint discriminator
  LABEL:        The configuration label in use
  PEER_ENDDISC: The peers endpoint discriminator
  USER:         The peers authname
1998-08-29 23:02:42 +00:00
Brian Somers 080a2247c2 Allow the use of HISADDR, MYADDR and INTERFACE as words
embedded in the args of a "shell" or "!bg" command, and
only accept upper case versions.

We can now do:
  ! sh -c "ifconfig INTERFACE >/tmp/myfile"
1998-08-29 23:02:39 +00:00
Brian Somers e227fded3f Mention `cbcp'' in `set log ?'' 1998-08-29 18:37:02 +00:00
Brian Somers 37d818fb21 Fix some OpenBSD/alpha warnings 1998-08-26 18:07:57 +00:00
Brian Somers 653ead3365 Remove redundant include file. 1998-08-26 17:39:38 +00:00
Brian Somers 5a72b6eda3 Put the IP buffer queues into struct ipcp.
Forgotten by: me
1998-08-26 17:39:37 +00:00
Brian Somers 4a7a066106 The protocol must be in network byte order (OpenBSD only). 1998-08-26 17:39:35 +00:00
Brian Somers f80e09b53a Mention what ``set authname'' does in -direct mode. 1998-08-25 17:48:55 +00:00
Brian Somers 6f8e9f0a8a 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.
1998-08-25 17:48:43 +00:00
Brian Somers 9773f8c0c8 Consolidate the two malloc()s that are done when allocating
an mbuf.
1998-08-21 18:10:15 +00:00
Brian Somers 3f37462e61 Make ``show mem'' display the number of packets allocated as well as the
number of octets.
1998-08-21 18:09:57 +00:00
Brian Somers b6f5f44231 Destroy any existing chat timeouts in datalink_ComeDown()
If we're told to close/down while in DIAL or LOGIN state,
we don't want to keep our timeout running :-/
1998-08-18 00:53:48 +00:00
Brian Somers fc254be9bd Don't lose an allocated pointer if realloc() fails.
Free it instead.
Pointed out by: Theo de Raadt
1998-08-17 06:42:40 +00:00
Brian Somers f841c4e56e Be careful about using ``.Bd -literal'' as groff sometimes keeps
the `-literal' after the closing .Ed.
Where this happens, use ``.Bd -unfilled'' with ``.It Li'' to dodge
the problem - it looks better too.
Problem reported by: Dom Mitchell <dom@phmit.demon.co.uk>
1998-08-11 18:59:36 +00:00
Brian Somers 7955cdca14 `dns' option defaults to disabled, not enabled. 1998-08-09 23:40:31 +00:00
Brian Somers 0f5ecc8b46 Add missing .El 1998-08-09 17:17:23 +00:00
Brian Somers 74e4a8dab7 /var/run/tunX.pid is created regardless of ppps mode.
Spotted by: Alex <garbanzo@hooked.net>
1998-08-09 17:17:10 +00:00
Brian Somers 44cae95d95 Use IFT_PPP from net/if_types.h rather than hard-coding it. 1998-08-09 16:41:01 +00:00
Brian Somers bf1d3ff614 When entering ``term'' mode, don't output any messages until
the device is successfully opened.  If we fail to open it,
mention the fact.
Also go back into command mode as soon as the device is closed
rather than waiting for the user to type something before noticing.
1998-08-09 15:34:11 +00:00
Brian Somers 2a63083586 Don't forget to call PacketAliasInit().
PR:	7515
1998-08-09 09:13:54 +00:00
Brian Somers 0581dfeff0 Missed these... 1998-08-07 18:44:16 +00:00
Brian Somers 92b0955883 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.
1998-08-07 18:42:51 +00:00
Brian Somers 0bdcbcbe9b PR: 7469
Be careful that the current or next prompt in the list
that we're iterating through doesn't get changed by
descriptor_Read().
1998-08-02 13:01:16 +00:00
Brian Somers 94245ac66c On receipt of a sig 15, do a full bundle_Close() even if
our current phase is PHASE_DEAD as it's possible that there
are links stuck in OPENING waiting for a redial timer.
1998-08-02 06:56:40 +00:00
Brian Somers 68a0e17122 When we receive an LCP config REQ in Opened state,
do TLD *before* processing the config request as
TLD initialises the peers LCP values.

It's strange that an IRC isn't required here - but
I'll bow to the wisdom of the rfc.
1998-08-01 01:02:41 +00:00
Brian Somers cff2b1c9b4 Cosmetic: Diagnostic wording (Unknown -> Unexpected) 1998-08-01 01:02:12 +00:00
Brian Somers c31ac0b396 Always dial immediately on `open'', dial'' and `call''.
We don't need a ``!''.
1998-07-31 19:50:24 +00:00
Brian Somers ba23f3976a Allow an optional ``!'' in the open, dial & call commands.
When used, the redial timer is ignored and the modem is
opened immediately.
1998-07-29 18:21:17 +00:00
Brian Somers 50fa554e42 Use tcsetattr TCSANOW instead of TCSADRAIN so that dedicated mode doesn't
end up blocking indefinitely when there's no carrier.
1998-07-29 18:20:53 +00:00
Brian Somers 2062443fd7 Silence ``Network unreachable'' warnings when using
``add .... HISADDR''.  The network will never be
reachable at this point unless we're in -auto or reading
the command from ppp.linkup.

We can now run the following lines and get the expected
results:

  set ifaddr 1.2.3.4/0 5.6.7.8/0
  add default HISADDR

where a route is added immediately in auto mode and the
whole thing is delayed 'till the IP numbers have been
agreed in other modes.

Essentially, ppp.linkup is no longer required.
1998-07-28 21:54:54 +00:00
Brian Somers 93280d730e o Tidy up PAP and CHAP diagnostics. They're now all logged as PHASE
diagnostics (which are on by default).
o Deal correctly with both sides wanting CHAP.
o Output a warning if we're using an empty ``authname''.  This is
  *not* what we want to do.
1998-07-28 21:54:30 +00:00
Brian Somers 501f548011 Add missing braces - without them, the IP & label were mis-selected
from ppp.secret.
Problem reported by: Dom Mitchell <dom@phmit.demon.co.uk>
1998-07-19 21:07:24 +00:00
Brian Somers 3b09372a14 Correct enable/disable handling (broken when ironing out
32/64 bit issues recently).
1998-07-12 00:30:18 +00:00
Brian Somers 7d797fa780 Check the ``alive'' filter for a packet *before* the
mbuf is deallocated by vj_SendFrame().
1998-07-11 19:05:24 +00:00
Brian Somers 14593dfd98 Change MIN_LQRPERIOD from 5 to 2. 1998-07-11 02:48:36 +00:00
Brian Somers 9dae3e8d4b Don't disable ^D in interactive mode.
Wished for by: pkh
1998-07-04 22:04:12 +00:00
Brian Somers 0dcb215a89 Don't require context when there's only one link
for ``open lcp''
1998-07-04 22:03:56 +00:00
Brian Somers 274211d743 Version 2.0-beta becomes 2.0 :-) 1998-07-04 10:24:49 +00:00
Brian Somers d4af231c81 Only start checking carrier when the datalink state machine
exceeds DATALINK_READY.  When we go back to READY or less
(eg. ``close lcp''), switch the carrier-checking-timer off again.

This fixes the callback example in ppp.conf.sample.
Noted as broken by: Damian Kuczynski <damian@best.pw.edu.pl>
1998-07-03 17:24:38 +00:00
Brian Somers 06337856e1 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.
1998-06-30 23:04:17 +00:00
Brian Somers 3a2e4f621c o Fix remaining sizeof problems for 64 bit machines.
o Allow ``set ....'' when we have multiple links but aren't in
  multilink mode.
o Do a TLS when we receive a ``Open'' event in ``Closed'' state,
  despite the rfc state transition table.  This is clearly an
  error in the RFC as TLS cannot have yet been called (without
  TLF) in the ``Closed'' state.
  I've posted a message to comp.protocols.ppp for confirmation.
1998-06-27 23:48:54 +00:00
Brian Somers 2d42ffabf1 More u_long -> u_int32_t 1998-06-27 16:24:52 +00:00
Brian Somers 6163841150 I find it *really* irritating that you can't ``cvs rm''
things without removing them first.
1998-06-27 15:33:17 +00:00
Brian Somers 10a9be1e88 Remove redundant includes 1998-06-27 14:18:15 +00:00
Brian Somers 615ad4f957 Don't dlopen()/dlsym() libalias, use it in the same way
as the rest of the world uses libraries.
1998-06-27 14:17:28 +00:00
Brian Somers 3f06c5995f Don't assume ``sizeof(u_long) == 4''
Submitted by: Theo
1998-06-27 12:03:50 +00:00
Brian Somers 7d81ddf5bd Cast void * to char * for log_Printf(). 1998-06-27 12:03:46 +00:00
Brian Somers 032d427689 ``struct tunnel_header'' -> u_int32_t in OpenBSD.
struct tunnel_header is going soon.

Suggested by: Theo
1998-06-27 12:03:43 +00:00
Brian Somers d9823e8a6d Don't depend on sizeof(u_long) == 4. 1998-06-26 19:02:40 +00:00
Brian Somers 3132bc1efe DISTRIBUTION=des 1998-06-26 18:50:29 +00:00
Brian Somers 897f9429f9 Add `ipcp'' as an optional argument to `open'', and make
open capable of re-negotiatiating the various layers.

It is now possible to change various link options and then
re-open the relevant layer, making the changes effective -
for example, switching off VJ compression or starting ECHO
LQRs on-the-fly.
1998-06-25 22:33:31 +00:00
Brian Somers 141b3b7817 Oops - forgot these with the last commit. 1998-06-24 19:36:37 +00:00
Brian Somers 1af29a6e96 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.
1998-06-24 19:33:36 +00:00
Brian Somers 8901e74902 Suggest the use of `accept dns'', not `enable dns'' in
server mode.
1998-06-21 11:14:50 +00:00
Brian Somers 74d14b4cc9 Do an InitRestartCounter when we get a TerminateReq
in Opened state.....  I have no idea why this never
caused problems in the past - maybe the restart
counter was bogusly initialised somewhere else :-/
1998-06-20 01:55:28 +00:00
Brian Somers d2a69fc3ba Re-initialise our timer service after fork()ing
to lose our terminal session.  Is this a bug in
setitimer() ? - it must be called again in the
child !
1998-06-20 01:36:38 +00:00
Brian Somers 09206a6f2a Create & use fsm2initial(), a function to bring a
state machine back to ST_INITIAL without going
through any unnecessary TLS/TLF pairs.
1998-06-20 00:19:42 +00:00
Brian Somers ad5b0e8be6 Make sure our recvmsg() is a SCM_RIGHTS message when
we receive a link from another ppp.
1998-06-18 23:38:04 +00:00
Brian Somers 1181eb8216 Don't assume that all ttys support carrier detect. If we're
passing our controlling terminal, always record our pid so
that the receiving ppp knows who to HUP.
1998-06-18 22:43:18 +00:00
Brian Somers 5c6a2cdce8 Mention the ``allow users'' command when describing
how to set things up for incoming connections.
1998-06-18 01:24:29 +00:00
Brian Somers c12b786782 o Allow `set mrru'' or `set mrru 0'' to disable
multi-link mode.
o Fix a typo in the ``set mrru'' description.
1998-06-16 23:23:57 +00:00
Brian Somers a33b2ef772 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.
1998-06-16 19:40:42 +00:00
Brian Somers 899011c4eb Don't bring the modem offline or hangup when ``down lcp''
is done.  Instead, behave like ``close lcp''.
1998-06-16 19:40:28 +00:00
Brian Somers 9ef0938e40 Zero mbuf::pnext when Dequeue()ing. 1998-06-16 19:40:20 +00:00
Brian Somers 7729a18215 Only set the datalink::stayonline flag if we
close/down with CLOSE_LCP when our state is
DATALINK_READY or higher.
1998-06-16 07:15:16 +00:00
Brian Somers f7704be7d3 o Don't dump core with ~m in term mode.
o Always put a '\r' before a '\n' at the end of a line
  in prompt_vPrintf() in term mode, and make prompt_Printf()
  use prompt_vPrintf().
o Fix ~? message.
1998-06-16 07:15:11 +00:00
Brian Somers d93d3a9c32 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.
1998-06-15 19:06:58 +00:00
Brian Somers c9e11a112d 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.
1998-06-15 19:06:25 +00:00
Brian Somers 30291ffb15 Give ``load'' optional context. It's now possible to
``link 1,2,3 load label'' for people that want to set
up their links in a more mpd-like manner.
1998-06-15 19:05:51 +00:00
Brian Somers 9c81b87d1e Make `close lcp' just close the LCP layer and not hangup. This is
useful for slirp users that wish to get their shell back after the
ppp session.  `close' with no args still hangs up as expected.
Required by: jmz
1998-06-15 19:05:27 +00:00
Brian Somers eee772ec70 Deal with PROTO_IGMP and PROTO_IPIP packets correctly.
Submitted by: Mark Tinguely <tinguely@plains.NoDak.edu>
  This change will allow a PPP host enabled with the "-alias" option to
  run mrouted. This does not intend to forward the IGMP nor tunneled packets
  to another host on the far side if the tun0 interface.
1998-06-14 01:21:24 +00:00
Brian Somers 42c57c8682 o Pass our negotiated number of VJ slots into
sl_uncompress_tcp() and drop packets with
  slot numbers that are out of range.
o Drop packets that want to use a slot that still
  has an IP header length of 0 (ie, the requested
  slot number is bogus again).

Without this code, if the other side mis-behaves (and
sends us garbage slot numbers), we happily ``adjust''
a memset(..., '\0', ...) TCP/IP header and promptly
cr*p all over the stack before returning.... quickly
followed by a SIGBUS.

Dodgy ISP used by, and help locating the problem from: jmz
Problem also seen by: Mourad de Riche <omnibus@image.dk>

There's still a link lockup after this happens, but my
bets are on the other side (who has already started sending
rubbish) being to blame.
1998-06-14 00:56:13 +00:00
Brian Somers 41dbe0c7af Add the ``clear'' function.
Mostly submitted by: "Stephane E. Potvin" <sepotvin@videotron.ca>
1998-06-12 20:12:26 +00:00
Brian Somers f56d7b337d Remove '\n' from `show throughput'. ctime() already does
a linefeed.
1998-06-12 17:45:41 +00:00
Brian Somers 87de006540 Correct arg hack
Submitted by: David Leonard <leonard@csee.uq.edu.au>
1998-06-12 17:45:26 +00:00
Brian Somers ff0f9439b4 o Maintain a link-type mask for open datalinks as well as
for all datalinks in a bundle.  Ppp now deals correctly
  with link types that are changed while open
o When changing the type of the last AUTO link, only clear
  the interface if we're not in PHASE_NETWORK.  This allows
  us to switch to -ddial mode while we have a connection
  without suddenly unexpectedly throttling ourselves by
  clearing the interface configuration.
  Problem area noted by: Aaron Jeremias Luz <aaron@csh.rit.edu>
1998-06-12 17:45:10 +00:00
Peter Wemm e4da208bae Use the elf libalias name when compiled under elf. 1998-06-12 15:37:23 +00:00
Brian Somers 5264ca0298 Fix a couple of warnings noted with -Wall on FreeBSD-2.1.5.
Pointed out by: Charlie Sorsby <crs@hgo.net>
1998-06-10 00:16:07 +00:00
Brian Somers 255aa9e373 Show the time that we reached maximum throughput.
Submitted by: "Stephane E. Potvin" <sepotvin@videotron.ca>
1998-06-09 18:49:10 +00:00
Warner Losh 42d494a30b $@ is deprecated, use longer forms of single char macros 1998-06-09 05:36:48 +00:00
Brian Somers 645b7985ea Correct `set server'' usage and add mention that `set ns'' changed
in README.changes.
Suggested by: stuart henderson <stuart@internationalschool.co.uk>
1998-06-08 20:23:44 +00:00
Brian Somers 37a8b7dcb8 Fix previous commit. bit 1 is the execute bit, not the read bit *blush*
ie, BINMODE=4551 -> BINMODE=4554
Pointed out by: Bruce Evans <bde@zeta.org.au>
1998-06-07 17:08:42 +00:00
Brian Somers c22130cd33 Use a relative libalias.so name (hardcoded at 2.5 - yeuch!). 1998-06-07 03:54:41 +00:00
Brian Somers a2b023b187 Make ppp world-readable so that root can get at it over
NFS when nobody isn't in group network :-)

Pointed out by: Bruce Evans <bde@zeta.org.au>
1998-06-07 00:16:57 +00:00
Brian Somers 7155510852 Update the write descriptor selection set for our data links
*after* shuffling fragments from the IP queue into the
individual link queues.

This fixes a latency problem pointed out by: Bruce Evans <bde@zeta.org.au>
1998-06-07 00:16:37 +00:00
Brian Somers 1c16aba2c7 Make ``set ? log'' more verbose.
Suggested by: Paul Dufresne <dufrp@oricom.ca>
1998-06-06 23:00:33 +00:00
Brian Somers da66dd135a Put the correct pid in /var/run/tunX.pid
Suggested by: many
1998-06-06 20:50:57 +00:00
Brian Somers 8e7b85992b 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').
1998-05-29 18:33:10 +00:00
Brian Somers 05dbe14bd3 Some documentation corrections & typo fixes.... 1998-05-29 18:32:41 +00:00
Brian Somers 81358fa3fc o Make modes consistent throughout ppp. The same strings are used
in `set mode', `allow modes', on the command line and when
  outputting mode names.  The strings are matched so that only
  enough characters to uniquely identify the string are required,
  so you can now

    ppp -a mylabel  (for auto mode)
    ppp -b mylabel  (for background mode)
    ppp -dd mylabel (for direct dial mode)

  etc.
o Make -ddial dial when specified on the command line (oops).
  Pointed out by: Alex <garbanzo@hooked.net>
1998-05-29 18:32:11 +00:00
Brian Somers 1662ac2427 srandomdev() isn't available in all 2.* versions. Only
use it for version 3 (-current) & up.
1998-05-29 00:03:00 +00:00
Brian Somers 1384bd27d8 o #define the name "tun" in defs.h against the future possibility
of supporting architectures with different device names.
o Close /dev/tunX when destroying the bundle.
o Don't forget to close the parent end of the pipe in the child
  process when exec'ing a program from a chat script.
o If we close our controlling terminal, ditch the current session
  with it, allowing getty(8) (or whatever) to regain control.
o After transferring our controlling terminal descriptor to another
  ppp instance, we now fork a new ppp to continue where we left off,
  transferring ownership of all uucp locks and the /var/run/tunX.pid
  file.  Meanwhile the parent closes all file descriptors, defaults
  all signals and does a pause() to wait for a HUP after the
  transferred descriptor is finally closed.
  We don't run /bin/cat any more (again!).

  Suggested by: bde

TODO: It seems clocal devices need their pause()d session leader
      to be given a manual HUP, as closing the last open descriptor
      doesn't do the job.
1998-05-28 23:17:51 +00:00
Brian Somers 85fd273a31 o Don't forget to close our transfer socket if we cannot
generate the data to transfer.
o Transfer uucp lock ownership for the transferred device.
o Don't assume we know the correct values of dev_is_modem and
  mbits after the transfer.
1998-05-28 23:15:40 +00:00
Brian Somers 0f78c7a7ea Don't assume stdout is a tty in interactive mode
Analyzed by: dmaddox@scsn.net (Donald J. Maddox)
1998-05-27 22:43:37 +00:00
Brian Somers 6c92091027 o Only do the /bin/cat bit when we're transferring our ctty. 1998-05-25 10:37:02 +00:00
Brian Somers 54cd8e13c6 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).
1998-05-25 02:22:38 +00:00
Brian Somers d4156d002c Show the link mode in `show links'. 1998-05-23 22:28:19 +00:00
Brian Somers 0438ce3a88 Oops - patch failed in last commit ???? 1998-05-23 22:27:53 +00:00