Next Previous Contents

7. Appendix

7.1 Release Notes

The release notes are no longer in this manual. Please look for the files called README_* in the ~/doc/sysop directory.

7.2 PacketCluster's PCxx protocol

The following list comes from the original PacketCluster documentation. These are the messages used among PacketCluster and CLX nodes. Thanks to OE1TKW for originally collecting this information:

Excerpt the from PacketCluster sysop manual, Appendix C

Internode communication between PacketCluster nodes is performed by sending Information packets that begin with the string ``PC'', followed by an ACSII coded number between 10 and (currently) 51.

Overview

PC10    Talk mode
PC11    DX info
PC12    Announcement
PC13    Stn into CONF
PC14    Stn out of CONF
PC15    Conference mode
PC16    PC stn add
PC17    PC stn delete
PC18    Initialisation: RequestInit
PC19    Initialisation: NodeAdd
PC20    Initialisation: InitDone
PC21    Initialisation: NodeDelete
PC22    Initialisation: PCDone
PC23    WWV Info
PC24    Here status info
PC25    DX/WWV merge request
PC26    DX merge info
PC27    WWV merge info
PC28    mail: SendSubject
PC29    mail: SendText
PC30    mail: AckSubject
PC31    mail: AckText
PC32    mail: CompleteText
PC33    mail: AckCompleteText
PC34    Remote commands: Command *
PC35    Remote commands: Response *
PC36    Remote commands: Show command
PC37    Needs database update
PC38    Connected node list
PC39    NodeDelete w/disc
PC40    PC file forward
PC41    User info
PC42    Forwarding abort
PC43    PC-mail: External mail, Send subject
PC44    Remote DB request
PC45    Remote DB response
PC46    Remote DB complete
PC47    Remote DB update
PC48    Remote user DB update
PC49    Bulletin mail delete
PC50    Local user count
PC51    Ping request or answer

*) PC34 and PC35 are PC84 and PC85 for CLX-to-CLX remote commands.

Syntax description

PC10^from-stn^to-stn^msg^bell-flag^to-stn^from-pc^~
PC11^DXfreq^DXcall^DXmisc^Date^Time^logger^from-pc^hops^~
PC12^from-stn^to-PC^msg^sysop-flg^from-pc^wx-flg^hops^~
PC13^stn^hops^
PC14^stn^hops^
PC15^from-stn^msg^hops^
PC16^host^stn conf-mode here^stn conf-mode here^stn conf-mode here^...^...^hops^
PC17^stn^from-pc^hops^
PC18^cluster-info^ver^~
PC19^here^PC-stn^talk^version^hops^
PC20^
PC21^PC-stn^reason^hops^
PC22^
PC23^date^hour^SFI^A^K^forecast^logger^from-pc^hops^~
PC24^stn^here^hops^
PC25^merge-stn^from-stn^DX-cnt^WWV-cnt^
PC26^DXFreq^DXCall^date^time^info^logger^to-stn^~
PC27^date^hour^SFI^A^K^forecast^logger^to-stn^~
PC28^to-pc^from-pc^to-stn^from-stn^date^time^private-flag^subject^~
PC29^to-pc^from-pc^msg-#^text^~
PC30^to-pc^from-pc^msg-#^
PC31^to-pc^from-pc^msg-#^
PC32^to-pc^from-pc^msg-#^
PC33^to-pc^from-pc^msg-#^
PC34^to-pc^from-pc^cmd^~
PC35^to-pc^from-pc^cmd-resp^~
PC36^to-pc^from-pc^cmd^~
PC37^to-pc^from-pc^stream^command^~
PC38^node,node,node,...^~
PC39^stn^reason^
PC40^to-pc^from-pc^filename^bull-flag^line-cnt^
PC41^stn^type^info^hops^~
PC42^to-pc^from-pc^msg-#^
PC43^to-pc^from-pc^to-stn^date^time^private-flg^subject^line-cnt^~
PC44^to-pc^from-pc^stream^qualifier^key^user^
PC45^to-pc^from-pc^stream^info^~
PC46^to-pc^from-pc^stream^
PC47^to-pc^from-pc^user^qualifier^key^stream^type^
PC48^to-pc^from-pc^stream^qualifier^key^user^
PC49^stn^subject^hops^~
PC50^from-pc^usercnt^hops^
PC51^to-pc^from-pc^ping^

Legend
======

logger       station that reports the info
bell-flag    1=bell, 0=no bell
merge-stn    node that provides the info
DXCall       DX station call
msg          message text
DXFreq       DX station frequency
PC-stn       PacketCluster node
DXmisc       DX misc text
stn          Call of connected station
from-stn     originating station
conf-mode    *=conf, -= no conf
here         1=here, 0=no here
to-stn       destination station
host         Packet Cluster node call
ping         1=request, 0=answer

Protocol messages handled by the CLX software

This is a table of PCxx messages which are currently handled by the CLX software.

Msg      process   generate   forward  note
----------------------------------------------------------
PC0       error       -          -      dj6rx
PC10        +         +          +
PC11        +         +          +
PC12        +         +          +
PC13        -         -          -
PC14        -         -          -
PC15        -         -          -
PC16        +         +          +      1)
PC17        +         +          +      1)
PC18        +                    +
PC19        +         +          +      1)
PC20        +                    +
PC21        +         +          +      1)
PC22        +                    +
PC23        +         +          +
PC24        +         +          +              
PC25        +         +          +
PC26        +         +          +
PC27        +         +          +
PC28        +         +          +
PC29        +         +          +
PC30        +         +          +
PC31        +         +          +      after 9999 lines
PC32        +         +          +
PC33        +         +          +
PC34        -         -          -
PC35        -         -          -
PC36        -         -          -
PC37        -         -          -
PC38        -                    -
PC39        +         +          -
PC40        -         -          -
PC41        +         +          -
PC42        -         -          -
PC43        -         -          -
PC44        +         +          -
PC45        -         +          +
PC46        -         +          +
PC47        -         -          -
PC48        -         -          -
PC49        -         -          -
PC50        +         +          -
PC51        +         +          +
----------------------------------------------------------

Notes:

The field forward has two meanings:

  1. broadcast type messages (see Broadcast type PCxx telegrams) will be forwarded to other nodes according to CLX's forwarding scheme (which knows active and passive link partners as well as CLX and non-CLX partners). If the hop counter in the received telegram is zero, the telegram will not be forwarded.
  2. Telegrams with a destination (like mail forwarding or database request) will be forwarded normally to the destination.

1) means: Due to compatibility issues with the Pavillion software, this message is not being forwarded to a PacketCluster node.

7.3 Current Users of the CLX software

This list has grown too big. Please refer to the file /usr/local/clx/doc/misc/user.db for information about current users of the CLX software. Email addresses shown with an initial # did not work, so they are probably out of date.

7.4 Thank You!

Numerous people have helped out with information, details, bug reports and other useful things in the years of the CLX development. Most of our communication was carried out via the Internet, some by Packet Radio. Thanks to all of you for your help, especially to:

Alan Cox, GW4PTS for putting the AX.25 code into the kernel
Jonathan Naylor, G4KLX, for maintaining the AX.25 code
Harm, DG7DAH for helping us with WAMPES configuration
Joni Bäcklund, OH2RBJ for lots of feedback, ideas and documentation
Christian Blattnik, DC0JI for providing a place for DB0CLX
Brigitte Blattnik, DH3MBJ for supporting DJ0ZY, DL6RAI and DC0JI
Robert Chalmas, HB9BZA, for a French version of adv_txt and help files
Diego Serafin, IK3HUK, for the first Italian version of adv_txt and help files
Jonny, DG4MMI, for the German version of adv_txt
Mark Wahl, DL4YBG, for putting special features into TNT
Andrea Fiorentino, I0/N5KME, for the second Italian version of adv_txt
Rich Schmelkin, AE4EJ for running the old CLX mailing list
Ian Maude, G0VGS for helping a lot with the user documentation
Jose Lopez, EA5SW, for a Spanish version of adv_txt
Ignacio Galiana, EA7FPE, for the new version of the Spanish adv_txt
Gerard Parat, F6FGZ for a French version of adv_txt and extensive user manual
Lutz Petschulat, DG0LP, for updating the CLX help files to version 3.02
Heikki Hannikainen, OH7LZB, for running the current CLX mailing list
Luca Palazzo, IW9EXL, for updating the Italian files 
Luiz F. Catalan, PP5AQ, for a Portuguese version of adv_txt
Erwin Lemmers, PE1NMB, for a Dutch version of adv_txt and help files
Matthew (Max) George, NG7M, for picking up the FAQ maintenance
Peter Pfann, DL2NBU, for his work on the SHOW/SUN command family
Ulrich Müller, DK4VW, for his work on the German user manual
Arnold Bosch, PE2AB, for updating the Dutch version of adv_txt
Angel Claus, EA7WA, for his help on the Spanish adv_txt

Did I forget you? Please let me know! Want to show up in this list too? Ask for the list of jobs to be done! Many details and small jobs could be outsourced if we found the people to do it.

7.5 Frequently Asked Questions

The following is a collection of frequently asked questions by users of the CLX software. The FAQ is now (as of September 1998) being maintained by Matthew (Max) George, NG7M. It will probably be left out from this document in the near future.

Q. What are the timings for CLX setting up connections to other CLX and/or Pavillion-nodes?

A. CLX usually measures the time for how long nothing has been received on a link connection. If this is longer than five minutes, CLX sends a ping (PC51) to the node. Then it waits for another 5 minutes. If nothing is received in return to the ping, it explicitly disconnects the link connection, waits one minute and starts to setup the link again.

Initially, after CLX has been brought up, the software will start making connections after a period of 60 seconds to allow all database activities to finish before the first node-to-node connection is established.

Q. Which services must be started on my system to run CLX?

A. Normally, this will be checked by the check script in the tools directory. Basically, you need syslogd, portmap and postmaster. postmaster must be running under UID=postgres, all others as root. Additionally you need one of the two communication packages, either Alan Cox's AX.25 driver or WAMPES. These must be running when CLX is started.

Q. CLX has no monitor. How can I see what my users are doing?

A.

$ tail -f ~/logs/io.log 
if you have configured syslogd correctly. You may also now use the log_monitor as described in section Log Monitor.

Q. What Linux versions has CLX been tested on?

A. We have started CLX with Linux 1.1.50 and we are currently using it under 2.0.35.

Q. rpcinfo says:

rpcinfo: can't contact portmapper: 
RPC: Remote system error - Connection refused
What's wrong?

A. portmap is not running. Start it from the rc.* script when booting Linux.

Q. In the postgres directory, many files have permissions 600 (``-rw------''). How can any program touch these files after all?

A. The Postgres database system does all its job via the postmaster process who is handling the communication with any external processes and programs. This is needed for serialisation so that every transaction is finished before the next one starts. Due to this, only the postgres user must have access to the database files. Any user permits etc. are treated internally by the postgres software.

Q. How come the kissinit command works without specifying a speed?

A. 9600 is the default. If you are using another speed on your line, you must set this explicitly with the stty command.

Q. When starting up CLX it hangs right at the beginning with clx_ctl. What's wrong?

A. Check if clx_ctl is really running under UID clx_us and postmaster under UID postgres. If this doesn't help, reboot. Sometimes the shared memory gets screwed up when testing out CLX. This does not happen under normal circumstances.

Q. When starting up CLX everything comes up until con_ctl, which hangs forever. What's wrong?

A. The two callsigns, the one you specify with kissattch and the one which is encrypted in ~/config/clx_par must be identical. Otherwise con_ctl will hang.

Q. SH/DX 20 no longer works, but SH/DX is still OK. What's happened?

A. Most probably your DX database table has gone wild. This is a bug in Postgres which has not yet been cleared. We have observed a destroyed DX table many times at DB0CLX. Your only chance to correct the problem is destroying and building the table from scratch. Here is how:

$ cd ~/db
$ psql clx_db
clx_db=> drop table dx_data;
clx_db=> \i dx_data.cl
clx_db=> \q
$

Q. When I start CLX with clx -u, the last process (con_ctl) says

con_ctl  AX.25 interface                 .Invalid symbol in callsign.......

to the console and keeps writing dots to the terminal. Or, when starting up CLX, the callsign is shown as follows:

Reading /usr/local/clx/config/clx_par.
Decoding callsign.

*** CLX System Parameters ***

callsign:   ?
database:   clx_db
interface:  AX25

A. You are using an old wrong libc version. Get libc.so.5.4.7! 5.3.12 and 5.2.18 definitely do not work with CLX 2.05 and later. Also the RedHat 5.1 Linux distribution comes with an outdated libc.so.5 version which needs to be replaced in order to make CLX work with it. A new version was available from ftp://sunsite.unc.edu/pub/Linux/libs at the time of this writing. Steve Meuse, W1MV, points out that the new version 5.4.38 was available from ftp://sunsite.unc.edu/pub/Linux/GCC/libc-5.4.38.bin.tar.gz.

Q. CLX doesn't seem to delete the nodes (in sh/conf) after a disconnect. Is it because I'm using an external script? If not can I do something for this?

A. The Nodes listing is a programming problem. I will try to explain:

CLX allows loops and multiple connects within a PacketCluster/CLX network. If a node connection is lost but another one still exists into the network, which of the nodes in the list are then no longer "members of the network"? We have tried to solve this question several times without success. So I think CLX currently just follows the node connect/node disconnect (PC19/PC21) spots and as long as it still has a valid connection, displays all nodes in the network.

If you can provide us with a good solution to the problem we are ready to implement it.

Q. CLX does not report its own node connection list to other Pavillion PacketCluster nodes? This hides the network behind CLX to their users. Why don't you report this information (through PC38/PC39, PC19/PC21)?

A. The problem you describe (PC38) has in fact nothing to do with PC38. It is only a compatibility issue and for that reason, CLX is not sending any such information to a PacketCluster node. Here is why:

About 9 months ago CLX would send a list of connected nodes out to every active link. Due to CLX's special ability to make multiple connects into a network, some distant nodes already showed up in CLX's Node list. We had a configuration like this:

                            DB0ABH-15
                               |
      DB0SPC     +-----------DB0BCC--------------OE1XHB
        |        |
        |   +--DB0SDX------(A)-----DB0CLX
        |   |                        |
        +-HB9W-8-----------(P)-------+

We found out that whenever DB0CLX reported that it had connected HB9W-8, DB0SDX would no longer try to establish its own connection to HB9W-8. Obviously, the PacketCluster software anticipated that the connection already existed.

We had this same situation between DB0BCC, DB0SDX and DB0CLX so it is certainly a bug/problem in the Pavillion software (which does not know about multiple links).

For this reason we decided that CLX would not report any network information to neighbouring Pavillion nodes. However, it does fully report to adjacent CLX nodes.

Q. Is there a CLX mailing list?

A. Yes! Thanks to Heikki Hannikainen, OH7LZB, CLX has its own mailing list. See CLX Mailing List for details on how to subscribe.

By the way, the current list of CLX users can be found elsewhere in this document in CLX User List.

Q. How can I restart CLX when a process has died? clx -s followed by clx -u doesn't work.

A. The reason for this is that (a) one or more of the processes hung and did not clear its rpc port address, or (b) some of the shared memory areas is not free. What can you do?

There is now a -x to the CLX script which allows clearing resources. Clearing rpc ports, however, requires root privileges.

$ clx -x
You must be root to clear rpc ports.
Password:

Now you should be able to restart CLX without rebooting the machine.

Q. My users seem to get disconnected after a certain period of inactivity. Is it CLX that disconnects users after a specific time?

A. No! CLX does not disconnect anyone due to inactivity. No such feature is in the software nor is it planned to implement it. This answer applies to you if you are using a 2.0.x kernel and the AX.25 driver in it.

In the 2.0.x unmodified Linux Kernel there is a problem with the so-called IDLE Timer. The default value seems to be 60 minutes and the maximum value which can be chosen in the ax25d.conf file is 99 minutes. I believe this problem is gone in 2.1 kernels and probably also in the module-14 patch (a patch against kernel 2.0.31) which is available now. To get around the problem, I modified the file /usr/src/linux/net/ax25/ax25_timer.c, line 176:

Old:

  176     if (ax25->idletimer > 0 && --ax25->idletimer == 0) {

New:

  176   /* if (ax25->idletimer > 0 && --ax25->idletimer == 0) { */
  177   if (0) {

and rebuilt the kernel. This patchwork is not necessary with Linux kernel version 2.0.35.

The ax25module-14b patch was available from ftp.funet.fi://pub/ham/unix/Linux/packet/ax25-utils/ax25-module.

Q. I have only a DOS machine on the Internet. How can I get the big CLX archive to my Linux box?

A. There are several ways. One that I have used often in the past is by using PKZIP on the DOS and unzip on the Linux side.

Prerequisites: - PKZIP version 2.04 on DOS machine - unzip version 5.12 on Linux machine.

  1. Download the file on your DOS machine
  2. Copy the file on two disks.
    C:\TMP>dir *.tgz
    CLX_301  TGZ     2,564,043 07-20-97   9:06p
    
    C:\TMP>pkzip -& a:clx.zip clx_301.tgz
    
    Creating ZIP: A:CLX.ZIP
      Adding: CLX_301.TGZ  Deflating ( 2%)
    Insert disk #2 - Press a key when ready
    , done.
    
    C:\TMP>
    
  3. Go to your Linux machine and copy the two disks, rename the file from disk 1 to clx1.zip and the file from disk 2 to clx2.zip:
    $ mcopy a:clx.zip clx1.zip
    Copying clx.zip
    $ mcopy a:clx.zip clx2.zip
    Copying clx.zip
    
  4. Concatenate the two files into one big clx.zip file:
    $ cat clx1.zip clx2.zip > clx.zip
    
  5. Now unpack the clx.zip file, ignore the warnings.
    $ unzip clx.zip
    Archive:  clx.zip
    warning [clx.zip]:
      zipfile claims to be last disk of a multi-part archive;
    
      attempting to process anyway, assuming all parts have been
      concatenated together in order.  Expect "errors" and warnings...
      true multi-part support
      doesn't exist yet (coming soon).
    warning [clx.zip]:  extra 1457664 bytes at beginning or within zipfile
      (attempting to process anyway)
    file #0:  bad zipfile offset (local header sig):  1457668
      (attempting to re-compensate)
      inflating: CLX_301.TGZ
    $ ll CLX_301.TGZ
    -rw-r--r--   1 ben      users     2564043 Jul 20 21:06 CLX_301.TGZ
    

You should now have clx_301.tgz on your Linux box.

Q. The su command procedure to start up postmaster and clx when booting Linux does not work. Why?

A. The following message was received from Per-Eric, SM6MNH. Maybe this is also your problem:

I've seen many messages about problems with the su command lately and I just want to say that I have the same problem. The problems began when I upgraded my Debian Linux installation from version 1.2 to 1.3.

Before the upgrade I could use the command

$ su - postgres -c "postmaster &"

but now I can't. So something changed and I don't like it...

Erwin Lemmers, PE1NWB, notes that some Linux distributions come with a broken /bin/su command. He fixed the problem using the following startup script:

echo "Loading postgres"
echo "postmaster > /dev/tty8 2>&1 &" | su - postgres
#
echo "Loading clx"
echo "clx -r > /dev/tty8 2>&1 &"  | su - clx_us
#

For the default installation we recommend to start CLX using the script ~/tools/startup as root.

Q. What do the occasional messages like

icl_com/us_ctrl.cc: Message is not correct "PC50"/

in my io.log mean?

A. PacketCluster knows a special type of external connections using the -EXT switch in the node definition. Due to a bug in the AK1A software, the PC50 will be sent in a different format which is not understood by CLX.

Q. My system is crashing very often for unknown reasons. Other CLX sysops report that the version I am using is generally stable. What can I do?

A. We have found that once in a while, the postgres database can become slightly corrupted - probably due to previous crashes or other reasons. That means, the data is available and all looks OK but some datum deep in the database is broken and when CLX reads is (due to some innocent user command), a string variable may be exhausted, a float may be returned where an integer was expected etc. etc. As CLX is never checking the input data received from the database, a program may crash from this bad data.

What has cured the problem in the past several times was backing up the database, destroying it completely, recreating it and re-reading the data. How do you do it? First you need some time (maybe several hours, depending on your data) and you need to shutdown CLX. Having done that, issue the following commands (all as user clx_us):

$ bup_db -s
$ clx_db
$ bup_db -r
$ clx_idx

While backing up the files is normally pretty fast, re-reading the data may take a while.

This treatment was successful for DB0BCC when CLX version 4.00b turned out to be pretty stable elsewehere but not at DB0BCC. After re-reading the data, the system would stay up for up to 16 days.

Q. How can I turn off the screen blanker?

A. Use /bin/setterm -blank 0 in your Linux startup scripts.

Q. What does the message "kernel: Unable to load interpreter" mean? I find this in my log when CLX crashed.

A. This is a very definitive message from the operating system kernel saying that it cannot execute a new program because it cannot load the ELF interpreter. We have observed that with version 4.00 of CLX where a bug in one of the programs ate up more and more file descriptors (FDs) and in the end (after a few hours, sometimes days), there were no more FDs available. Then all kinds of strange things would happen. Fortunately this bug was found very quickly but when such a message ocurs again, you should check for the number of FDs currently used with the following command:

# echo /proc/[0-9]*/fd/* | wc -w

This command must be executed as root. When freshly started, CLX needs about 300 FDs. The limit in the unmodified Linux kernel is 1024.

7.6 Known Bugs in the CLX software

Here is a list of known bugs in the current CLX software. If you happen to find a bug not listed here, please let us know.

7.7 Bugs and Bug Reporting

Nobody is perfect. So is this software. We have put a lot of work and energy into this project but yet some problems are left to be unleashed. CLX has been on the air at DB0CLX for more than three years now. In the mean time, many bugs were fixed, new ones introduced and fixed again. At this time we have reached a point where we believe there are no major bugs left (but you may prove us wrong).

If you find bugs, please try to describe them in a detailed way and let us know. Please be as specific as possible and include screen shots, logs etc. with your report. Send the report by email to [email protected].

Sometimes one of the CLX processes dies silently. You will see that by inspecting io.log or error.log and seeing a message like this:

snd_ctl/rpc_send.cc -> con_ctl, 0 - 1/dj0zy: Connection refused

This usually indicates that con_ctl has died and snd_ctl is not able to deliver a telegram to this process.

In such a case it is very valuable for us to have a copy of the last 10-20 messages in the io.log. Please send this together with your error report.

This software is developed by DJ0ZY and DL6RAI. DJ0ZY is doing the C++ and Postgres core programming. So his activities are mainly in the ~/bin and ~/db directories. DL6RAI's job is maintaining the Perl scripts in ~/bin, ~/tools, ~/exec and the documentation in ~/doc. This information should help you to direct your bug reports either to Franta or to me. If in doubt, send your message to [email protected].

7.8 Wish List

A list of features currently missing in CLX which are going to be implemented next.


Next Previous Contents