Newsgroups: comp.os.linux.announce
From: longyear@netcom.com (Al Longyear)
Subject: Announcement of ppp-2.1.2b.tar.gz test code on ftp.netcom.com
Message-ID: <ann-12394.777594317@cs.cornell.edu>
Date: Mon, 22 Aug 1994 22:25:40 GMT
Approved: linux-announce@tc.cornell.edu (Matt Welsh)

This is an announcement of the test code for the Linux PPP support. It
will be used in the next version of the PPP process.

This message is being posted to both comp.os.linux.announce and the
ppp channel for the mail list. I do ask that anyone who takes this code
please join the mail list and report the problems with this code on that
vehicle. I will continue to support the 2.1.2a code on the newsgroups, but
support for this version will be honored only from the mail list.

Instructions for joining the mail list are in the README.linux file.

If you can't honor my request, then I ask that you wait until the code is
released. Thank you.

I have put my updated version of ppp on my ftp site at ftp.netcom.com
in the directory /pub/longyear/prerelease. The current file is
ppp-940810.tar.gz.

The changes which I have made since the "a" version are:

- Chat accepts comments in the script file. The comment character ('#')
  MUST occur in the VERY FIRST character of the line. This is to allow
  the character sequence to be entered without a requirement of quoting
  it by simply putting it in the second - Nth position.

- Chat stores the PARENT pid in the lock file. This pid is usually the
  better choice because when chat normally terminates, it expects the
  parent to cleanup the lock file.

  This prevents some programs from declaring the lock as being stale
  because the owner, chat, has terminated.

- Chat now defines the exit code to be:
  0 - normal (successful) termination.
  1 - bad script or parameter.
  2 - timeout occurred (expected string was not received.)
  3 - First abort string was found.
  4 - Second abort string was found.
  5 - Third abort string was found, etc.

  This was done so that script writers could tell if the reason why
  chat failed was simply "BUSY" or it received "invalid login" since
  BUSY may be retried, and "invalid login" usually means that the
  system needs some human intervention.

  (Abort strings are numbered in the order which they occur as the
  script is parsed left to right, one line at a time. The first abort
  string is simply the first ABORT parameter found.)

- pppd will not operate if the baud rate setting for the terminal is
  B0. This is not a valid rate and it prevents problems associated with
  Taylor UUCP leaving the rate set at B0. To bypass this problem, you
  need only specify the rate on the pppd execution line. In this case
  the rate will be set and it won't be B0.

- pppd will verify that the driver in the kernel is of the correct
  version. This avoids problems with the kernel being built with an old
  version of ppp.c and people attempting to execute the newer daemon
  code. A suitable message is written to the stdout file before the
  detach is performed rather than the current practice of "I/O error"
  for the ioctl operations.

- The stdin, stdout, and stderr files are set to /dev/null during the
  execution of the ip-up and ip-down scripts. In addition, the priority
  is reset to zero; the tty session is created; the umask is reset to 0;
  and the current directory reset to /. This is will hopefully prevent
  further problems with the programs being executed by these scripts
  confusing the ppp.c driver by simply writing to the stdout file.

- pppstats was slightly changed to reflect the change in the stats
  structure. Expect further changes in support of the Link Quality
  Reporting Protocol support. As I stated in the README file, pppstats
  is interesting, but not terribly useful. It is nice to run once, but I
  wouldn't run it each and every time.

- I added some notes in the README.linux file regarding these changes and
  specified the exact level names in the syslog for those people using the
  "other" syslogd process.

NOW THE BIGGIE!!!

I have substantially over-hauled the ppp.c and ppp.h code.

- select() should work. There is some test code in the pppd driver to
  ensure that select works. It has been working correctly for me. This
  is important as the select() code will be the sole determination for
  ppp action in the up coming version 2.2 of the code. The existing use
  of SIGALRM and SIGIO will be removed with that version.

- The driver no longer calls dev_rint. It calls the "new and improved"
  netif_rx procedure. Exactly what is improved in this interface, I have
  not been able to determine. However, I am told that this is the better
  choice. (It seems that dev_rint does exactly the same thing as the
  code which I did; OK, there you have it.)

- I implemented a priority scheme for the ordering of the ppp frames
  from the driver. They now take precedence over the IP frames in the
  transmit queue. This greatly helps programs such as Morningstar's LCP
  echo processing.

- There are now separate transmit buffers for the pppd and the IP
  layers. This removed the lockout conditions for the single
  buffer. There are now separate locks for the two transmit buffers.

- The receiver logic no longer makes a separate pass over the received
  buffer to compute the CRC. This is done as the characters are
  received.

- I cleaned up errors associated with the CHECK_CHARACTERS logic. It
  will now compile properly if you wish to verify that the characters
  received are the proper mode of 8 data bits, no parity.

- I added some more comments to the driver. I hope that others may
  understand them now.

- I re-indented the code. It now has one consistent style for the
  driver and hopefully will follow Linus' style.

- There is some additional code for recognizing the IPX frames from
  the peer. I still don't know what to do with them or how to give them
  to the network layer. If someone wants to help out with this, then
  please, you know where to volunteer.

- The kludges for PPP's async processing has been removed. It now uses
  the new tty driver's F_ASYNC processing and the O_NONBLOCK flags.

                   ---------- READ THIS vvvvvvvvvv ------------
- ALL REMAINING SUPPORT FOR THE 1.0 SERIES KERNELS HAS BEEN
  REMOVED. If you are using the 1.0 kernel support (or 1.1 before
  1.1.14) then you can NOT use this code. Continue to use the 2.1.2a
  package.
                   ---------- READ THIS ^^^^^^^^^^ ------------

- There may be other things which I have simply forgot. However, those
  were the major changes.

Please, understand that THIS IS TEST LEVEL CODE. I do not plan to
release the code without support from Michael Callahan and Paul
Mackerras. It is the code which I will send Paul to be put into his
2.2 driver. After he releases the 2.2 code, then this code will be
released. Do not ask me questions such as "when will this
happen?". I'll give you the answer now, "I don't know."

I hope to put the code into the 1.2 kernel logic. However, if I don't
make the time frame, then it is ok with me too.

For some strange reason, the new code seems to be faster than the
earlier code. I can not explain why -- but then, I could not explain
why the earlier was slower either.

I must run the TCP bench-mark code since I don't really trust ftp
transfer rates. However, they seem to have improved by 600 - 800
bytes/second if you believe in things such as this.



INSTALLATION INSTRUCTIONS

To use the package, you must first replace the ppp.c and ppp.h files
in the kernel distribution. These are too "raw" of code so I don't
plan to send them to Alan Cox for the general networking distribution
until they are a little more "seasoned". In addition, they are
incompatible with the existing pppstats code. They should work with
the existing daemon however.

Keep an old copy of these replaced files. I should not have to mention
this, however, you never know.

Replace the ppp.h file in ~root/linux/include/linux/ppp.h
Replace the ppp.c file in ~root/linux/drivers/net/ppp.c

Rebuild the kernel with the new drivers.

Run the new chat and pppd code with the new kernel.

There are no parameter changes. There is a new man page for chat.8.

Since I haven't sent them to Alan Cox, please do not post problems
with this code to the normal "net" channel. Use the "ppp" channel. It
is not fair to ask Alan to support this driver until I do actually
give it to him.

If you do have problems with what you feel may be the general network
related issues, then please go back to the 2.1.2a code and try
that. If the problems still persist then contact the network group. If
the problems go away, then contact the ppp group.



KNOWN PROBLEMS

There has been a problem which I can not seem to resolve. The timing of
the ip-up script/program may not be suitable with those people who use
the gated process to announce the change in routes. I am unable to
re-create the problem. If you can help with this, then please let me
know and I'll put you in contact with the individual in question.



SPECIAL NOTE TO NETCOM.COM USERS

Normally, the files in ftp directory is secured to allow netcom.com
users access to the files by simply using cp to copy them. Since this
is test code I wish to track the users. You will _not_ be able to
access the file without going through the anonymous ftp
transfers. Just use "ftp 127.1" and log in as a normal anonymous user.

This will result in your transfer will be entered into the transfer log.

-- 
Al Longyear           longyear@netcom.com


--
Send submissions for comp.os.linux.announce to: linux-announce@tc.cornell.edu
Be sure to include Keywords: and a short description of your software.
