.PL





                          XROUTER MULTI-PROTOCOL ROUTER
                          =============================


                                  SYSOP'S MANUAL
                                  ==============



                               by Paula Dowie G8PZT
                               --------------------


                        Revision 2.0 - 15th November 2001
                        ---------------------------------


      ---------------------------------------------------------------------

      PREFACE
      =======

      This manual is far from complete, and the information is probably not 
      in the most logical order.  However, I thought you'd rather have some 
      documentation than nothing at all!  Getting the document perfect would 
      have needlessly delayed the release of the software (and has in fact 
      already done so), so I have chosen to refine the documentation after 
      release.  You may have to search for what you want, and in some cases 
      you may not find it.

      The document's format is plain ascii text, which is fine for reading 
      off a computer screen with a simple text viewer.  I have not included 
      page breaks because your printer may not necessarily be using the same 
      settings as mine.  I will address this in later versions, and will 
      hopefully create HTML and PDF versions.

      Writing documentation is very time consuming, and prevents me from 
      programming, so I am trying to balance both activities.

      If you don't find what you want, or you think something could be 
      better explained or positioned, PLEASE let me know, don't leave it to 
      others - they are doing the same!

      As a programmer, I am not the best person to write the documentation - 
      I have tried to include what I think you need to know, but with 
      intimate knowledge of the code I tend to make assumptions without 
      realising it.













                                        1
      Introduction


                             SECTION 1 - INTRODUCTION
                             ========================

      Xrouter is an AX25 and IP packet router for the amateur packet radio 
      network, using a standard PC and DOS.  It is intended to be a direct 
      alternative to G8BPQ's SWITCH.EXE program (*not* BPQCODE.EXE), and 
      looks very similar both to sysops and users, but provides a lot more 
      than BPQ.

      It is called a "router" rather than a "node" because its primary 
      purpose is to route data packets.  Node is a general purpose term 
      meaning "junction", and can be an end user.  This software simply 
      routes packets.  Whether those packets contain ax25, Netrom, IP, or 
      any other protocol is irrelevant.  It is not the job of a router to 
      provide FTP, SMTP, NNTP, or BBS facilities, so they aren't provided.

      The program was developed because G8BPQ node, although excellent, was 
      unreliable in certain situations, it didn't provide the required 
      facilities, and its author *appeared* to have lost interest in it.

      It was designed to be familiar to sysops who currently use BPQ, thus 
      allowing easy transition between the two programs.  It fixes some of 
      the BPQ problems (such as the unsafe command line parsing), properly 
      integrates IP routing into the system, and adds many facilities which 
      BPQ did not provide, such as an integral chat server, and the TCP 
      layer which allows TELNET, RLOGIN etc. (see below for full list of 
      features)

      The program is a long way from finished and has not been tested under 
      all conditions.  I am not claiming that it is *better* than BPQ.  It 
      is not intended to replace BPQ, merely to provide an alternative.

      Although some of the commands and configuration options may look 
      familiar to NOS users, this is largely coincidental, and you should 
      not expect NOS commands and options to work unreservedly.  Some NOS 
      commands were derived from UNIX, as were some of mine.  Sometimes 
      there is only one logical way to do things, and both NOS and Xrouter 
      chose the same way.  However, even if the commands look familiar, the 
      syntax may not necessarily be identical, reflecting the fact that this 
      system has different design criteria. 

      This program is not a variant of NOS and is not derived in any way 
      from NOS.  The latter has a reputation for being flaky, cumbersome and 
      un-intuitive.  This program is aimed at busy sysops who want to get 
      the job done, not play around with software.  It was designed from 
      scratch (the console display was the first component), not "cut down" 
      from someone else's software.

      Whereas NOS is a complete TCP/IP networking system with rudimentary 
      Netrom capability, Xrouter specialises in multi-protocol routing and 
      user access.  Although IP is one of the protocols, this is NOT a 
      "TCP/IP program".  It does not have, and never will have "hub" 
      facilities - if you want a hub, use NOS.

      This program is not a TSR, and there will probably never be a TSR 
      version because it would be too big to allow anything to run on top!






      XROUTER Sysop Manual Revision 2.0                          Page 2
      Introduction


      It was designed as a standalone router running as the sole application 
      on a PC dedicated to that purpose.  I personally don't like the idea 
      of running part of the Packet network as a TSR underneath a BBS 
      program for the following reasons:

          a) The node gets a limited amount of processor time because it is 
          running on clock interrupts.  I have seen considerable delays in 
          traffic through such systems.

          b) The BBS gets less processor time because the node is stealing 
          it.  Every single byte that passes through the system generates an 
          interrupt, so a busy node steals a lot of processor time, and the 
          BBS runs more slowly.

          c) If the node crashes, the BBS is taken out of action too, and 
          the system has to be rebooted.  This may not be important in your 
          case, but my BBS can also be accessed via telephone, and wire 
          links, and I don't want it disrupted every time the AX25 side 
          crashes.

          d) If the BBS crashes (which some are particularly prone to!) the 
          Packet network is disrupted.  This also happens if the sysop keeps 
          taking the BBS off line to mess about with it.  A NetRom network 
          does not take kindly to outages, and the effects can last for 
          hours so nodes need to be left alone, not rebooted every few 
          hours.

      There didn't seem much point making a TSR version, since that would 
      remove most of the advanced features.  If you need a TSR node to run 
      under a BBS on a DOS system, you'll have to run BPQ.

      However, if you run Xrouter within a Windows or Desqview environment, 
      along with the PZTSOCK TSR, you may run applications which conform to 
      G8BPQ's 16 bit HOST application interface spec.

      I make no apologies for creating yet another "old fashioned" DOS 
      program.  DOS is fast, compact, ultra-reliable, boots quickly, is 
      relatively uncomplicated, can run from floppy, and runs on the 
      humblest machine.  Therefore I believe it is still the best choice for 
      a standalone packet router, *especially* at a remote site.

      Linux devotees already have their LinuxNode, and Windows users have 
      BPQ32.  For DOS users however, apart from BPQ there are no other 
      English nodes.  Flexnet and the PC version of TheNet suffer the usual 
      problems with unfamiliar commands, translated documents etc., and are 
      not popular with either sysops or users in the UK.

      I am not ruling out the possibility of a 32 bit Windows version in the 
      future, but it is not high on my priority list because the Windows 
      market is already well catered for by BPQ32, with AGW being popular 
      for non-routing applications.











      XROUTER Sysop Manual Revision 2.0                          Page 3
      Features and Limitations


      FEATURES AND LIMITATIONS
      ========================

      The following is a list of some of the features and limitations of 
      Xrouter. It is by no means an exhaustive list, nor is it in any 
      logical order. (* = advantages relative to BPQ)


      Hardware / Software Compatibility
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      - Modest machine requirements: DOS, 640k, XT -> Pentium.
      - Can run within DOS, Windows95 or DesqView environment.
      - Configuration file familiar to BPQ sysops.
      - Compatible with BPQNODES recovery file for easy transition.
      - Supports any hardware drivers which use BPQ "external" interface. 
      - Supports BAYCOM USCC, RLC100, PC100/120 and DRSI scc cards.
      - Can use KISS and BPQKISS TNC's.
      - KISS modes: normal, polled, checksum, and bpq slave.
      * Directly supports YAM modems.
      * PA0HZP Opto-SCC card support.
      * ASYNC interface supports any speed up to 115,200 bauds.
      * ASYNC Protocols: KISS, "Netrom backend", SLIP and ASCII (TTY).
      * Ethernet driver allows conection with Windows, Linux, NOS and BPQ
      * Year 2000 compatible.
      * Supports BPQHOST compatible applications (in Windows/DesqView only)


      General Features
      ~~~~~~~~~~~~~~~~
      * Configurable software watchdog
      * Hardware watchdog driver.
      * External hardware control & monitoring.
      * Budlist and Validcalls lists for each port.
      - Digipeating on/off/UI-only from any port to any port.
      * Digicasting
      * Frame piping from port to port.
      * Proxy connections.
      * Cross-protocol bridging.
      * Very comprehensive stats to aid network maintenance.
      * MHeard list sizes can be customised for each channel.
      * MHeard includes date, time, callsign, frame count and frame type.
      * Integral multi-channel chat server available to all users.
      * Configurable mtu.
      - Can TX on a different port to RX.
      * Callsign validation in nodes broadcasts.
      - Ports may be "interlocked" so they don't transmit at the same time.
      - 32 bit Windows application support coming soon...
      * ID beacons may be configured independently for each port.
      * Netrom echo and route record facilities.
      * Modulo-128 capability, with frame resenqencing and selective reject.
      * Message-Of-The-Day facility.
      * Link parameters are self-adjusting.










      XROUTER Sysop Manual Revision 2.0                          Page 4
      Features and Limitations


      APRS Features
      ~~~~~~~~~~~~~
      * MHeard can display APRS position, distance and heading.
      * APRS generic digipeating (RELAY, WIDE, TRACE, TRACEn-N and WIDEn-N)
      * Maintains APRS "Best DX" list.
      * Decodes MIC-E packets.
      * Integral APRS Packet <> Internet gateway.
      * Integral APRS messaging shell.
      * APRS "digipeating" via Netrom.
      * Responds to APRS / UI-View queries.
      * ID may be beaconed via digipeaters.
      * Ports may be configured for "APRS-only" use.

      TCP/IP
      ~~~~~~
      * Built in IP router, with full ARP & ICMP implementations.
      * IP commands fully accessible on normal console, and to all users.
      * Built in TCP, giving TELNET, ECHO, DISCARD, FINGER, CHAT, RLOGIN, FTP
      * Domain name to ip address resolution.
      * Inbuilt DNS server.
      - IP datagram, virtual circuit, netrom end encap modes.
      * AXIP, AXUDP and IPIP tunnelling protocols allowing links via Internet.
      * Additional IP addresses for each port.

      Command Interface
      ~~~~~~~~~~~~~~~~~
      - BPQ compatible user commands: bye, connect, info, help, links, mheard,
        nodes, ports, routes, stats, users.
      * Up to 16 command aliases can be defined (bpq=8).
      * Additional user commands: PING, ARP, TELNET, CHAT, J, ECHO, DX etc.
      * Built in syntax help for most commands.
      * Aliased commands can be "hidden".
      * Graduated help system gives help in a progressive way.
      * Extendible Info system for sysop to set up as s/he wishes.

      Console Interface
      ~~~~~~~~~~~~~~~~~
      * Screen saver - automatic and manual.
      * Shell to DOS facility.
      * Editable command line.
      * Fully configurable display colours.
      * Up to 5 independent "Virtual" consoles, fully multitasking.
      * Each virtual console has a configurable scrollback buffer
      * Each virtual console can display ANSI colour.
      * Each virtual console can run a separate session.
      * Each console may have its own colour sceme and callsign.
















      XROUTER Sysop Manual Revision 2.0                          Page 5
      Features and Limitations


      Local And Remote Sysop
      ~~~~~~~~~~~~~~~~~~~~~~
      - Most parameters configurable while on line.
      * Tx for any port may be disabled/enabled by sysop command.
      * Time and date settable without rebooting.
      * Multitasking DOS commands: cd copy del dir mkdir, ren, rmdir, move type
      * Line editor allows any text file to be edited.
      * IP routing adjustable without reboot.
      * Transaction logging.
      * Simple programs, MSDOS commands or batch files run from command line.
      * Online sysop's manual.
      * Each protocol layer independently traceable.
      - Each port independently traceable.
      * Trace o/p can be captured to file.


      Additional Features For Remote System Maintenance
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      - Secure password system for remote sysops.
      - May be remotely restarted or rebooted.
      * Allows separate passwords for each sysop.
      * Remote operation via RS232 wired links. (dialup coming soon).
      * Secure FTP server, allowing remote upgrading
      * Trace display can be viewed by remote sysop.

      BPQ fixes
      ~~~~~~~~~
      * No need to pre-compile a binary config file.
      * Virtually unlimited nodes, routes, circuits and sessions.
      * No 511 character limit on CTEXT and INFOMSG.
      * No 256-character limit on callsign (e.g. VALIDCALLS) lists.
      * No 130 buffer limit, or running out of buffers.
      * No crashing on frames bigger than 256 bytes.
      * No crashing on "certain" command line characters.
      * No crashing due to "too many commands at once".
      * No "command can't be split across packets".
      * Proper session flow control.


      Limitations
      ~~~~~~~~~~~
      - Not a TSR, so applications are supported only under Windows or Desqview.
      - Xrouter is not a Windows program - it requires a DOS window.
      - A Linux version is intended, but not yet implemented.
      - Will not (yet) support Windows applications such as Winpack or UI-View.
      - Consoles limited to 25 lines, 80 columns, 16 (EGA) colours. 
      - Will not directly use expanded memory.
      - No SMTP / POP3 / BBS - it's a router/Network Access Point not a server!














      XROUTER Sysop Manual Revision 2.0                          Page 6
      Copying, Use and Distribution


      COPYING, USE AND DISTRIBUTION
      =============================

      You must read the following text carefully.  It is not designed to 
      take away your rights, but rather to protect mine.  The software took 
      a long time to write, at considerable cost to my health, and I don't 
      see why others should make a profit from my hard work.

      The terms "the code" and "the software" refer to Xrouter and all 
      components thereof, and all documentation relating to it.

      This software is "conscienceware".  You may freely use and share it 
      for any non-commercial purpose, and you are not compelled to pay a 
      registration fee.  You may however ease your conscience and aid the 
      continuing development and support of the software by sending a small 
      donation to the author if you wish (Cheques should be made payable 
      to Ms P J Dowie at the address below).

      You are not permitted to make any charge for, or gain any pecuniary 
      advantage directly or indirectly from, the copying, distribution or 
      use of this software, or any component thereof, or any driver or 
      utility written for use with the software, unless by prior written 
      agreement with the author.  For example, you may not place the 
      software on the Internet with the intention of attracting more 
      visitors to a site.

      You must not patch, decompile, disassemble, reverse engineer or in any 
      way modify the software, or cause a modified version or part thereof, 
      or any portion of the source code to be distributed.

      Legal action will be taken against anyone who breaks the terms 
      outlined above.






























      XROUTER Sysop Manual Revision 2.0                          Page 7
      Copying, Use and Distribution


      SOURCE CODE

      After due consideration of the pros and cons of "open source" 
      projects, I have decided that the source code will not be made 
      available, and this is not negotiable.  All protocols and API's 
      developed by myself will however be published.


      FEEDBACK

      Because the terms and conditions outlined above prohibit patching, and 
      the source is not available, the only way the bugs will be fixed and 
      the software improved is for me to do it.  I am therefore relying on 
      you to report any bugs promptly, and to make known your ideas for 
      future improvements.  You are my beta testers.  I promise to correct 
      all reported bugs promptly where possible, and to carefully consider 
      all suggestions.

      Please also report any errors or omissions in the documentation.  If 
      you don't like the layout or feel something isn't properly explained, 
      tell me.  You can make a difference.

      If you want to send Packet bulletins regarding this software I suggest 
      the use of "XROUT" as the To field.  I strongly suggest you join the 
      Xrouter mailing list at YahooGroups.com - email 
      xrouter@yahoogroups.com.

      You can contact me personally by the following means:

      Packet: G8PZT@GB7PZT.#24.GBR.EU

      Email:  g8pzt@blueyonder.co.uk

      Snail:  Ms P J Dowie,
              19 Brooklands Drive,
              Wolverley Park,
              Kidderminster,
              Worcestershire.
              DY11 5EB

      I'm sorry I can't provide support by telephone, as it would take up 
      too much of my time.

      Although I endeavour to provide as much support as possible, I am 
      spending most of my time answering queries which are adequately 
      explained in the manual, or can be resolved by the use of common 
      sense.

      This prevents me from developing the software and, perhaps more 
      importantly, means the rest of my life suffers.  It was pointed out to 
      me that I am unemployed and losing the battle to keep the house and 
      car from falling apart, yet I am working hard supporting this program 
      for no financial reward, when I could be using my talents to earn 
      money.  It is therefore the people who make a financial contribution 
      who will receive priority, but I don't expect anyone to contribute 
      *before* they use the program, and I won't refuse (at the moment) to 
      support those who don't contribute.





      XROUTER Sysop Manual Revision 2.0                          Page 8
      Conventions


      CONVENTIONS USED IN THIS MANUAL
      ===============================

      Certain conventions are used in this document to avoid unnecessary 
      repetition.  They are as follows:

      |               ("or") Separates alternative options or arguments.
      <>              Encloses a mandatory argument
      []              Encloses one or more optional arguments.
      callsign        A valid amateur radio callsign, e.g. G8PZT
      dir             Directory
      dirname         Directory name
      file            
      filename        A unique file name without directory
      filespec        Specifies one or more files, with or without directory        
      he              Represents both "he" and "she"
      path            A fully qualified directory path            
      pathname        A full directory plus filename.
      string          A contiguous sequence of non-whitespace characters.
      text            One or more strings separated by whitespace.
      whitespace      Spaces, tabs or newlines

      Examples:  DIR [ filespec ]  - DIR command has one optional argument,                                
      which may be a file or file group                                
      description, with or without directory.


      In cases where a pathname is required, if only a filename is given, 
      the program's working directory is assumed.

      ======================== END OF SECTION 1 ============================































      XROUTER Sysop Manual Revision 2.0                          Page 9
      Installation


                     SECTION 2 - INSTALLATION & CONFIGURATION
                     ========================================

      I won't bother providing detailed instructions, since every 
      installation will be different and you won't read this anyway, unless 
      you're feeling really bored ;-)


      MACHINE REQUIREMENTS
      ~~~~~~~~~~~~~~~~~~~~
      There are no hard rules about this; it depends how many ports you 
      want, how heavily the system will be loaded, what facilities you 
      require etc.  I have tried to make it as flexible as possible.

      Xrouter *will* run on a 512k floppy drive XT with monochrome display, 
      but for best results anything above and including a 640k AT-class 
      machine with EGA colour display is ideal.  A hard drive isn't 
      essential, but is recommended.  My system happily runs 14 ports on a 
      12MHz '286 with 20Mb hard drive, but if you have lots of fast ports 
      (i.e. better than 9k6 *average* throughput) or HDLC cards you may need 
      something faster.  The use of 16550a-type COM ports is recommended.

      Processor:     8088/80x86/Pentium
      Clock:         4.77 and above
      Memory:        512k minimum.
      Video:         MONO/CGA/EGA/VGA 
      Drives:        At least a floppy. Hard drive recommended.
      Ports:         At least one COM port or Ethernet card is required.

      The program does not use expanded/extended memory, but you may wish to 
      use it for a ram drive if you don't have a hard drive.  This will 
      speed things up, because help, info, manual, and domain lookup files 
      are all accessed from disk.  You would arrange for autoexec to create 
      a ramdrive, copy all Xrouter's files to it, then run Xrouter from the 
      ramdrive.


      OPERATING SYSTEM
      ~~~~~~~~~~~~~~~~
      Xrouter requires MSDOS v3.2 or above.  It will also run on DRDOS.

      It will run in a win95 DOS window, providing no other window uses 
      com ports sharing the same IRQ.  It has not been tested with later 
      versions of Windows.  If you wish to use the application interface, 
      you must run Xrouter within a Windows (or Desqview) environment.

      I realise that there is an ever increasing number of people who have 
      only ever used Windows95 and know nothing about DOS.  They may have 
      unwanted machines lying around with Windows95 installed, and may think 
      that they can't use them to run Xrouter, whereas in fact they can.  

      All they need to do is use a text editor such as Notepad to edit the 
      file C:\MSDOS.SYS, changing the line "BootGui=1", to "BootGui=0".  
      This file sometimes has the attributes "Hidden", "Read-only" and 
      "System", so it may be necessary to edit the file attributes first, to 
      allow Notepad to edit it.  The machine will subsequently boot to DOS 7 
      which is fine for Xrouter.





      XROUTER Sysop Manual Revision 2.0                          Page 10
      Installation


      DIRECTORY STRUCTURE
      ~~~~~~~~~~~~~~~~~~~
      All files and directories required by the system are located within a 
      single directory which can be located anywhere and have any name.  For 
      the purposes of this document I will assume it is named XROUTER.

      The directory should contain at least XROUTER.EXE and XROUTER.CFG.  
      All other files are optional and the system will run without them.

      If you want to grant access to remote sysops you will need to add 
      PASSWORD.SYS.  If you want to store IP routing info, you will need 
      IPROUTE.SYS.  If you want domain lookup, add DOMAIN.SYS.

      If you want to import existing nodes and routes information from a BPQ 
      system, place a copy of the BPQNODES file (produced by BPQ's SAVENODES 
      command) in the directory and rename it PZTNODES.

      If you want the full help system, create a sub-directory called HELP 
      and place all the .HLP files into it.  Note that the help for the CHAT 
      server goes in sub-directory HELP/CHAT, FTP server help goes in 
      HELP/FTP and the APRS messaging help goes in HELP/AMSG.

      If you want an INFO system, create the INFO directory.  I have 
      included some sample .INF files to give you some ideas.

      If you want the online manual, create the MAN directory and put the 
      *.MAN files into it.


      SETTING UP
      ~~~~~~~~~~
      The software will be supplied in ZIP format.  Within the zip file, the 
      system, help and manual files will be in separate zip files to make it 
      easier for you to select the components you require.  You may create 
      the directory structure manually and unzip the components into it, or 
      you may use PKUNZIP -d to create the sub-directories.

      Once the required files are installed in the correct places, your next 
      job is to edit the configuration file XROUTER.CFG, to suit your 
      requirements.  The file is heavily commented, so it should be obvious 
      what needs changing, especially if you have previously used BPQ node.

      If you have installed PASSWORD.SYS, IPROUTE.SYS or DOMAIN.SYS they 
      will also need editing to suit your requirements.  Again, they are all 
      self-documenting, but are also detailed elsewhere in this document.

















      XROUTER Sysop Manual Revision 2.0                          Page 11
      Installation


      RUNNING THE PROGRAM
      ~~~~~~~~~~~~~~~~~~~
      If you have defined any EXTERNAL type drivers in XROUTER.CFG, they 
      must be loaded first.  If you forget to load them, the machine will 
      crash, so it is advisable to start Xrouter from a batch file in this 
      case, to ensure things are loaded in the correct sequence.

      If you are using YAM modem(s), run YAMINIT to upload the FPGA 
      configuration(s) to the modem(s).

      Once the drivers are loaded, start XROUTER.EXE.

      The program will read its configuration from XROUTER.CFG, then look 
      for IP routing information from IPROUTE.SYS and saved nodes/routes 
      information from file PZTNODES.  If you've got everything correct you 
      should see the console display.  If not, please take note of the error 
      messages, especially the line number where the error occurred.

      Don't be too ambitious, especially if you don't understand what you're 
      doing.  It's no good hanging applications and pipes onto the system 
      until you've got it running properly!  It is best to start with one 
      interface and port, adding the rest as each previous one is proven.  
      Don't make too many changes at once - if things go wrong, you won't 
      have a clue where you made the error.


      STOPPING THE PROGRAM
      ~~~~~~~~~~~~~~~~~~~~
      Alt-X stops the program, saving the nodes and routes tables to file 
      PZTNODES just before it exits back to DOS.  It is protected by an 
      irritating "are you sure" challenge. 































      XROUTER Sysop Manual Revision 2.0                          Page 12
      Installation


      CONSOLE DISPLAY
      ===============

      The screen will display a single "virtual console".  Each virtual 
      console has the following format:

      There is a single-line "status bar" at the top of the screen and a 
      single-line "menu bar" at the bottom.  Immediately above the menu bar 
      is a single "command entry" line.  The remaining 22 line central 
      section is where monitored and received information is displayed, and 
      this section is ANSI compatible.  

      The status bar shows the date and time, the virtual console number, 
      the console callsign, the version number, the router's callsign and 
      alias, and the amount of free memory.  The menu bar shows the most 
      important keys.

      The text and background colours of the various sections are fully 
      configurable.  Default settings are built into the program, and can be 
      overridden by entries in the global section of XROUTER.CFG.  The 
      defaults can be further modified for individual consoles by adding 
      console definition blocks.  

      You may specify a different callsign for each console (used when 
      making outgoing connections), or use the same callsign for each one.


      CONSOLE KEYS
      ~~~~~~~~~~~~
      Here's a summary of the keys - they are fully explained later.

      <F1>                Display console help window.
      <F2>                Toggle monitoring on/off.
      <F3>                Select port(s) to monitor. (MPORT)
      <F4>                Select monitored protocols. (MMASK)
      <F5>                Toggle disk capture on/off.
      <ESC>               Cancel operation / Disconnect.
      L/R arrow           Select previous / next console.
      U/D arrow           Scroll back/forward by one line.
      <PgUp>/<PgDn>       Scroll back/forward by one page.
      <End>               End scrollback.
      <Alt-F9>            DOS shell
      <Alt-B>             Invoke screen blanker
      <Alt-C>             Clear screen.
      <Alt-X>             Exit program.

















      XROUTER Sysop Manual Revision 2.0                          Page 13
      Installation


      Help
      ~~~~
      Pressing <F1> pops up a window with the above information on it.  The 
      <ESC> key closes that window when you've finished with it.  The 
      contents of the window are context-sensitive, i.e. they will vary 
      according to what you were doing when you press the <F1> key.


      Monitoring
      ~~~~~~~~~~
      The <F2> key provides a quick way to turn monitoring on and off, i.e. 
      it has the same function as BPQ's <F1> key.  Note that I didn't follow 
      BPQ here because *most* software uses <F1> for help.


      Monitor port
      ~~~~~~~~~~~~
      The F3 key selects the ports to be monitored.  At the moment only the 
      first 16 ports can be monitored.  Upon pressing this key you will be 
      invited to enter a hexadecimal number representing the combination of 
      ports to monitor.  If you press <F1> at this point a pop-up window 
      will show you the following information:

      To select port(s) to monitor, add together the following hex values:
       
             Port = HEX     Port = HEX     Port = HEX     Port = HEX
                1 = 0001       5 = 0010       9 = 0100      13 = 1000
                2 = 0002       6 = 0020      10 = 0200      14 = 2000
                3 = 0004       7 = 0040      11 = 0400      15 = 4000
                4 = 0008       8 = 0080      12 = 0800      16 = 8000

         Example: 004F = monitor ports 1, 2, 3, 4 and 7.

      This is (I think) identical to BPQ.  You may cancel the operation by 
      pressing the <ESC> KEY.


      Monitor Mask
      ~~~~~~~~~~~~
      The <F4> key invites you to enter the monitor mask, i.e. the protocols 
      you wish to monitor.  Pressing <F1> at this point brings up the 
      following information:

      Add together the following HEX values:

         0001 - Incoming frames          0100 - ICMP
         0002 - Outgoing frames          0200 - TCP
         0004 - AX25 layer 2             0400 - KISS
         0008 - AX25 info frames         0800 - SLIP
         0010 - AX25 layer 3             1000 - PASSALL
         0020 - AX25 layer 4             2000 - Hex Dump
         0040 - IP frames
         0080 - ARP frames

      E.g. 0201 will show incoming TCP frames only, while 0241 will show the 
      underlying IP frames as well.  The default setting is 03FF, which 
      shows all incoming and outgoing traffic from AX25 layer 2 upwards.





      XROUTER Sysop Manual Revision 2.0                          Page 14
      Installation


      Disk capture
      ~~~~~~~~~~~~
      The <F5> key toggles disk capture on and off.  Captured text goes to 
      file CAPTURE.TXT.  When capture is on, everything which appears on the 
      central 22 line section of the console is sent to file.  You can make 
      it more specific using MMASK and MPORT.  (Note this is a completely 
      separate operation to the transaction logging enabled by setting LOG=1 
      in the configuration file.)  Make sure your disk is fast enough and 
      has enough space, otherwise the router's performance will be impaired.


      Escape
      ~~~~~~
      The <ESC> key "backtracks" if you have pressed <F1>, <F3> or <F4>, or 
      disconnects a console session as in BPQ.


      Switching consoles
      ~~~~~~~~~~~~~~~~~~
      The left and right "arrow" keys will switch between the virtual 
      consoles if you have enabled more than one.  The console number is 
      shown on the top status bar.  Note that when you reach the last 
      console, you wrap back to the first and vice versa.


      Review mode
      ~~~~~~~~~~~
      The up and down "arrow" keys control scrollback, along with the 
      <PgUp>, <PgDn> and <End> keys.  You must enable the scrollback buffer 
      for this to have any effect.  Scrollback or "review" mode enables you 
      to look at something which went off the top of the screen.  The 
      console won't receive anything else until you exit review mode.


      DOS shell
      ~~~~~~~~~
      <Alt-F9> temporarily suspends the program and loads a DOS shell, 
      enabling you to do things without taking the router off line with the 
      consequent loss of all links and tables.  For instance you may wish to 
      format a floppy or do something which you couldn't otherwise do using 
      Xrouter's built-in PZTDOS.  You shouldn't stay "shelled out" for too 
      long, otherwise any active links will time out, and you run the risk 
      of being rebooted by the watchdog.

      On some machines, use of the dos shell *may* cause the system to crash 
      - I think I've fixed this, but would appreciate any reports.  If it 
      does crash, it may bear some relationship to the order in which 
      certain programs are loaded.


      Screen Blanker
      ~~~~~~~~~~~~~~
      The SAVER keyword in XROUTER.CFG specifies the screen saver timeout, 
      i.e. how long the screen will remain visible after any keyboard 
      activity.  A zero value disables the screen saver, but you may use 
      <Alt-B> to blank the screen at any time.  Pressing any key will re-
      enable the screen.





      XROUTER Sysop Manual Revision 2.0                          Page 15
      Installation


                               MISCELLANEOUS TOPICS
                               ====================

      These are just random notes which I haven't yet had time to organise 
      properly....  One day I'll write a proper manual!!


      Nodes/routes table saving
      ~~~~~~~~~~~~~~~~~~~~~~~~~
      The Nodes & routes tables are saved to file PZTNODES 1 minute after 
      starting the program, and at NODESINTERVAL (usually 1 hour) intervals 
      thereafter.  The SAVENODES command dumps the node table at any time, 
      and the tables are automatically saved when you exit the program using 
      <ALT-X>.  Thus if you exit and restart you will not lose the tables, 
      only the active links.

      You can specify an alternative filename when using the SAVENODES 
      command.  For example, you might want to make a periodic backup of the 
      nodes table, from which things can be restored if the table gets empty. 
      (a radio failure will cause nodes to expire from the table, and you 
      may wish to get it restarted quickly after fixing the radio)

      The LOADNODES command enables the table to be loaded from any file, at 
      any time.

      Remote Tracing
      ~~~~~~~~~~~~~~
      Remote sysops may invoke tracing using the MONITOR command, but this 
      feature should be used with caution.  Tracing generates a lot of data, 
      and the link should be capable of handling it.  It is mainly intended 
      for use on TTY (wire) links, but can be used over any connection.

      A remote sysop is prevented from tracing any activity on the port upon 
      which he is uplinked.

      Only one remote sysop may receive tracing at any one time.


      ANSI
      ~~~~
      The console will respond to ANSI, so you can have full colour terminal 
      sessions with ANSI-capable systems such as PZT BBS.  ANSI sequences 
      are not (yet) generated from the keyboard.



















      XROUTER Sysop Manual Revision 2.0                          Page 16
      YAM Modem Support


      YAM MODEM SUPPORT
      =================

      Xrouter includes support for the YAM modem, and the interface should 
      be defined in XROUTER.CFG as follows:

      INTERFACE=10            <--- Adjust to suit
              TYPE=YAM
              COM=1           <--- COM port to which YAM is connected
              MTU=256
              SPEED=1200      <--- Radio speed (not serial comms speed!)
              PROTOCOL=HDLC   <--- Only HDLC supported at present
      ENDINTERFACE

      For standard COM1 to COM4, you don't need to specify IOADDR and 
      INTNUM, but for COM5 to COM16 or non-standard COM1 to COM4 they must 
      be included.  It is permissible to omit the COM number if IOADDR and 
      INTNUM are both specified.

      SPEED is the *radio* baud rate and should match the modem's 
      configuration, otherwise TXDELAY and TXTAIL timings will be wrong.  
      You can omit speed and define RFBAUDS in the port instead.  
      Communication between between Xrouter and YAM always takes place at 
      19200 bauds.

      PROTOCOL *must* be HDLC.  No other protcols are supported at present.

      Each YAM interface supports only one port. You must use a separate 
      interface for each port / YAM board.

      Port Settings
      ~~~~~~~~~~~~~
      CHANNEL is ignored, but (I think) must be present.  FULLDUP can be 
      used - the YAM is capable of full duplex operation, but SOFTDCD is 
      ignored because it has no meaning for a YAM board.  YAM will INTERLOCK 
      with other YAM interfaces and with all types of SCC, but not with 
      TNC's since Xrouter cannot know when a TNC is transmitting.

      Notes
      ~~~~~
      The YAM modem does not require a 16550 UART.  It uses TXD, RXD, RTS, 
      CTS, DTR, DSR, RI and DCD so a full 8 wire plus ground cable is 
      required.  Some PC's either don't provide enough DC voltage/current to 
      supply the YAM board or the RS232 inputs sink too much current.  This 
      is a hardware problem, not an Xrouter problem - I used an external 
      supply to the YAM board to overcome it.

      Xrouter does not program the FPGA therefore YAM modems must be 
      initialised by running YAMINIT (supplied with the modem) before 
      starting xrouter.  It is probably best to do this in the startup batch 
      file, e.g. "YAMINIT yam12v11.mcs 1" will program the modem for COM1 
      with 1200 baud RF speed. The YAM is capable of 1200, 2400 or 9600 baud 
      simply by choosing the appropriate .MCS file.

      For further information you must refer to the YAM documentation - it's 
      not my job to teach you all about someone else's project.






      XROUTER Sysop Manual Revision 2.0                          Page 17
      Line Editor


      Line Editor
      ~~~~~~~~~~~~~~~

      The line editor, invoked from DOS mode with the EDIT command, allows 
      any text file to be viewed and edited by local or remote sysops.

      There is no fixed limit on the size of file which can be edited - it 
      depends on available memory.

      When the line editor is invoked, the filename, size and number of 
      lines is displayed, followed by the editor prompt.  If the editor 
      fails to operate, you may be short of memory.  Lines of up to 255 
      characters in length may be accomodated.  Longer lines will be split 
      into separate 255 character sections.

      The file contents are viewed using the "List" command.  Each line 
      is numbered, so that you may use the Append, Insert, Delete, Move, and 
      Copy functions to manipulate the text.

      Because the file is loaded into, and edited in memory, you may abort 
      the edit at any time without affecting the original file.  The modifed 
      text is only written to disk by a "save" or "write" command.  You may 
      optionally specify a different filename to save into.

      All filenames are relative to the "current working directory" you were 
      logged into when the editor was invoked, but you may specify full 
      pathnames if you wish.

      Line editor commands are detailed in the command reference section.

































      XROUTER Sysop Manual Revision 2.0                          Page 18
      Help & Info Systems


      HELP SYSTEM
      ===========

      Basic syntax help for most commands is built into Xrouter, and is 
      available using the query (?) command, e.g. "? N" will display the 
      syntax of the NODES command.

      More detailed help is implemented as separate files in the HELP 
      directory, allowing you to customise it and add extra help topics as 
      desired.  Each topic occupies a separate file, with the filename the 
      same as the topic name.  The "H *" command displays a sorted directory 
      of all the files ending in .HLP.

      Within the .hlp files, lines beginning with a semicolon ';' are not 
      displayed to users, so you can use them for comments, such as file 
      modification details.

      You may choose to omit some or all of the help files if you are 
      running a floppy-only system.

      In addition to the HELP system, sysops will find more information in 
      the online sysop manual using the MAN command.


      INFO SYSTEM
      ===========

      When the user issues the "I" command without any arguments, the text 
      defined by INFOMSG is sent to him.

      However, this command may also form the entry point for a much larger 
      and more comprehensive information system which the sysop may 
      implement how he wishes.  For example you may wish to include details 
      of the local packet network and clubs, and maybe a set of tutorials on 
      general packet topics...

      In order to do this, the INFO directory must exist and must contain 
      the desired info in the form of text files with the extension .INF.  
      The user will then, after using "I" by itself, be invited to enter "I 
      *" to list the available info topics.  If the user then enters that 
      command, the filenames (minus the .INF) will be displayed in 
      alphabetical order, and the user will be invited to read the files 
      using the "I <topic>" form of the command. 

      The filename should be relevant to the contents, within the 
      constraints of 8 DOS characters.  You should try to keep each file 
      concise in order to save air time, preferably breaking complex 
      subjects into a series of small files with "see also" references to 
      link them.  It is very frustrating for users to begin reading a file 
      only to discover it's not of interest, and then having to wait a long 
      time for it to finish!  You may use ANSI or HTML in the files, but not 
      pure binary. 

      Within the .INF files, lines beginning with a semicolon ';' are not
      displayed to users, so you can use them for comments, such as file
      modification details.






      XROUTER Sysop Manual Revision 2.0                          Page 19
      IP Routing


      IP ROUTING
      ==========

      IP routing is an integral part of Xrouter, and is fairly simple to 
      set up.  You may not see the point, but others will thank you for 
      doing so!

      In order to enable this function you must have an IP address.  If you 
      don't already have one, contact your local IP co-ordinator who should 
      be only to pleased to assign you one.  You should be able to find your 
      local co-ordinator via the UKIP web site or a packet message.

      Put your IP address in the IPADDRESS= line in XROUTER.CFG.

      Xrouter normally uses a single IP address for all ports, but if you 
      need different addresses on different ports you may specify an 
      additional address for any port, by including an IPADDRESS= line in 
      the port definition.

      Example: IPADDRESS=44.131.91.245

      The other thing you need to do is define the routing in IPROUTE.SYS -
      see the explanation in the section which relates to that file.  If you 
      don't know what routes to enter, your local co-ordinator should be 
      able to help.

      Having to enter a full IP address when using the PING and TELNET 
      commands is tedious, so you should put some entries in DOMAIN.SYS to 
      perform the translations between host names and IP addresses.  For 
      example, I have CNAME entries which translate the local node aliases 
      into IP addresses. (see later section on DOMAIN.SYS)

      If you have reasonably fast access (under 10 sec) to an external DNS 
      (Domain Name Server), you may enable its use by specifying its IP 
      address using the "DNS=" keyword in XROUTER.CFG.

      Example: DNS=162.31.224.1

      Finally, you should set Xrouter's host name for TCP operations, using 
      the "HOSTNAME=" keyword in XROUTER.CFG.  This is optional, and if you 
      omit it, it will default to "NODEALIAS:NODECALL".

      Example: HOSTNAME=g8pzt.ampr.org

      The "Domain Suffix" is currently fixed at ".ampr.org".  Commands such 
      as "telnet g8pzt" will be automatically extended to "telnet 
      gb7pzt.ampr.org", but "telnet fbb.org" will be left alone because the 
      address is already complete.














      XROUTER Sysop Manual Revision 2.0                          Page 20
      TCP/IP Services


      TCP/IP SERVICES
      ===============

      ECHO Server
      ~~~~~~~~~~~
      If a user TELNETs to TCP port 7, anything he sends will be echoed back 
      to him.  This is a useful tool for testing TCP/IP systems.  It 
      requires no setting up, other than the IP routing.


      DISCARD Server
      ~~~~~~~~~~~~~~
      This uses TCP port 9, and merely dumps anything sent to it.  It is 
      another useful tool when developing and testing TCP/IP systems.  It 
      requires no setting up other than the IP routing.


      FINGER Server
      ~~~~~~~~~~~~~
      This allows users to find information about other users.  It uses TCP 
      port 79 and reads text files for local users from the FINGER sub-
      directory.  It may also be accessed using the FINGER command at the 
      main prompt.  If the user isn't local, it attempts to establish 
      communication with the Finger server on the specified host.

      This server is only partly developed at present, and future versions 
      will give more information.  For the moment, if you wish to activate 
      this feature, create a FINGER sub-directory within the XROUTER 
      directory, then simply create a text file for each user, using the 
      user's callsign or any other preferred "hostname" as the filename.  
      The files can contain anything you like, typically the user's name, 
      location, station details, QSL information etc.

      For example the file finger/g8pzt might contain the text:

      Name: Paula
      Qth:  Kidderminster, Worc's IO82VJ
      Age:  (withheld ;-)
      Other: Sysop G8PZT:KIDDER router, Sysop GB7PZT BBS, Fourpak
             Secretary, Unemployed software author with special interest in
             comms software.  Author of: G8PZT AX25/IP BBS, Xrouter,
             Uk White pages system, PEARL Off-line reader for Packet 
             Radio...


      RLOGIN
      ~~~~~~
      The secure password challenge/response mechanism, using the "@" 
      command, is inconvenient for frequent use, and unnecessary in cases 
      where the remote sysop can access the router via a "secure" link such 
      as a wire link between two systems.  Therefore a plain text login 
      system is provided for these cases.  This uses a TELNET connection to 
      TCP port 513.  The user is prompted to enter his callsign, and is then 
      asked for his password.  If the two match with an entry in 
      PASSWORD.SYS, the user is granted access with sysop status.  Needless 
      to say, this facility should *NEVER* be used over a radio link, 
      otherwise someone will see the password.





      XROUTER Sysop Manual Revision 2.0                          Page 21
      TCP/IP Services


      FTP server
      ~~~~~~~~~~
      An FTP server is included within the program, allowing remote sysops to 
      upload, download, list, rename and delete files, create and remove 
      directories etc., which is useful when the router is located somewhere 
      inaccessible, such as a remote hilltop.  For example, new 
      configuration and program files may be uploaded, and the system can 
      then be restarted to perform a remote upgrade.

      The FTP server is not available to non-sysops.  It is protected by a 
      password grid, and is only accessible to those who have a password 
      registered in PASSWORD.SYS.

      Access to all drives and directories is unrestricted, because the FTP 
      server is intended only for system maintenance, not as a public file 
      repository.

      The server uses standard FTP commands, with the exception of the USER 
      and PASS login sequence, which are necessarily tailored for use on a 
      publicly visible channel.  Unfortunately, this means that FTP clients 
      which perform automatic logon, such as WS_FTP, CuteFTP etc., cannot be 
      used.  However, there is an exception to this rule...  If the user 
      accesses on a port which has the SYSOP=1 option (usually reserved for 
      secure links) normal plain text passwords may be used.

      In order for the FTP server's HELP command to work, you must place the 
      ftp help files in the HELP/FTP directory.

      The FTP server commands are described in detail in the sysop command 
      reference section.


      Domain Name Server
      ~~~~~~~~~~~~~~~~~~
      A rudimentary DNS (Domain Name System) server is built into Xrouter, 
      which will answer DNS queries from other systems via the standard UDP 
      port 53.

      The server only responds to requests directed at the *main* IP 
      address, and will only answer one query per message. Only standard 
      queries for type A are currently answered.  Recursion is supported.  
      Other query types will be supported in a later version.

      The server is NOT hierarchical at present - if it can't resolve the 
      hostname using its own DOMAIN.SYS, it will not pass the query to the 
      next server.
















      XROUTER Sysop Manual Revision 2.0                          Page 22
      Modulo-128


      MODULO-128
      ==========

      Modulo-128 is an extension to AX25, giving sequence numbers from 0 
      to 127 instead of the usual 0 to 7.  This allows a much bigger 
      MAXFRAME (up to 63) to be used, and is primarily of use on good links.

      On conventional (Modulo-8) ax25 links, much of the inter-node traffic 
      consists of short frames containing level 4 control information.  
      These frames are interspersed with data-bearing frames, which 
      themselves may be only partly full.  Thus a router may transmit 7 
      frames in one go, but the transmission may only be a few hundred bytes 
      in total.  This is inefficient, due to the delays associated with 
      channel access, txdelay, txtail, resptime etc.  On fast, error-free 
      links the data arrives in short bursts, separated by long gaps of 
      inactivity.

      With Modulo-128, many more frames can be packed into a single 
      transmission, so the channel overheads become less significant.  

      Because the largest allowed Maxframe value for Modulo-128 is 63, there 
      can never be any sequence number ambiguity, and this allows frame "re-
      sequencing".  With normal AX25, if the first frame of a multi-frame 
      set is lost, the whole set of frames has to be re-transmitted.  If 
      Modulo-128 is used however, the "good" frames are stored by the 
      recipient, and only the lost frame is re-sent.  Together with the 
      stored frames, this completes the set, and the whole set can be 
      acked.  This is a much more efficient strategy.

      Xrouter is capable of Modulo-128, and frame resequencing.  Modulo-128 
      frames are displayed on the trace screen as "EAX25" (Extended AX25) 
      instead of "AX25", and are initiated by a new frame type "SABME" (Set 
      Asynchronous Balanced Mode Extended).  You will notice the sequence 
      numbers being displayed as "<I R25 S32>"

      The method of activation isn't fully decided as yet.  If a caller 
      requests Modulo-128 (by sending an SABME frame), Xrouter will respond 
      with <UA> and go into Modulo-128 mode.  The strategy for outgoing 
      links is more complex.  If the port maxframe is greater than 7, *ALL* 
      level 2 downlinks on that port will be tried using Modulo-128 (i.e. 
      Xrouter will send <SABME> instead of <SABM>.  This is not recommended 
      on user ports, since hardly any users are EAX25 compatible.

      If the called system is Modulo-128 capable, the correct response to 
      <SABME> is <UA>, otherwise the correct response according to the AX25 
      protocol is either <DM> or <FRMR>, which will cause Xrouter to fall 
      back to normal Modulo-8 AX25.  Most systems do answer correctly, but 
      there may however be some systems which do not properly implement 
      AX25, for example by silently discarding <SABME> frames, and it will 
      not be possible to link to these systems if Maxframe is greater than 
      7.  I hope to address this in a future version.

      It is more likely that Modulo-128 would be used on inter-node links 
      with other Xrouters, Linux and PE1CHL boxes, so to activate it, 
      simply define a maxframe > 7 for those routes which require it. If the 
      port is dedicated to one link, you can set the port maxframe > 7 
      instead.





      XROUTER Sysop Manual Revision 2.0                          Page 23
      MHEARD


      MHEARD
      ======

      The MHEARD facility lists recently heard stations, and may be enabled 
      or disabled for any port.  It records callsigns in order of reception, 
      with the most recent at the top of the list, along with other useful 
      information, such as the date/time and the number of frames heard.

      This is useful for users to discover who else the router can hear, to 
      aid the search for suitable digipeaters, and to diagnose problems.  

      Even on linking-only ports, where there is only usually one partner, 
      it provides a useful indication when the frequency is being 
      encroached, either by deliberate squatting, unauthorised attempts to 
      link, or lift conditions.  I recommend that you enable MHEARD on all 
      ports.

      If you have included an APRS-style position report in your ID beacon, 
      Xrouter will know its own position and will display position, distance 
      and bearing for any stations which broadcast APRS positions.  This is 
      a great aid to network mapping, and it would be nice if everyone were 
      to make use of APRS.

      If the station was heard via a digipeater, the digipeater call is also 
      shown, and the letter "D" is shown in the "type" field.  If the heard 
      station is a node, the letter "N" is displayed, if it is sending 
      IP traffic, "I" is shown, and if it is sending ARP traffic, "A" is 
      shown.

      Within XROUTER.CFG, the MHEARD= keyword is used in each port 
      definition block to enable or disable the MHEARD facility and to set 
      the size of the list.  For example "MHEARD=50", enables it and sets 
      the table size to record a maximum of 50 callsigns.  If the keyword is 
      omitted, the default is 15 callsigns.

      You can control what sort of callsigns are recorded in the MH list 
      using the MHFLAGS= keyword.  The default is 255 (show everything), and 
      the number is formed by adding the following values:

           1    Show directly heard stations
           2    Show directly heard digipeaters
           4    Show digipeated stations


      For example "MHFLAGS=3" would show directly heard stations and 
      digipeaters, but not the stations heard via digipeaters.

      The MHEARD list is available to sysops and users alike, using the MH 
      command (see command reference section).

      A port's mheard list may be cleared by using the MHCLEAR <port> 
      command.  This would typically be used if the port was changed to 
      another frequency.  You may clear all MH lists by specifying port 0.
       








      XROUTER Sysop Manual Revision 2.0                          Page 24
      Watchdogs


      WATCHDOGS
      =========

      Xrouter has an inbuilt software watchdog.  If enabled, this will 
      attempt to reboot the computer if the code "locks up".

      A lock-up may be caused for example by faulty external driver or 
      third-party server software, by certain hardware errors, or by "soft" 
      errors due to RF break-through, supply spikes or ionising radiation.

      Additionally, a DOS "shell" session of excessive duration is treated 
      as a lock-up because the operator may have abandoned the console 
      without terminating the shell, and the shell may be running a process 
      which cannot be safely terminated.  Therefore a complete reboot is the 
      safest option.

      The software watchdog is enabled by entering a non-zero setting in the 
      "watchdog interval" parameter in INIT.SYS (see elsewhere).  You should 
      not use too low a setting, otherwise the system may reboot if an 
      external process takes too long to run, or if you shell out to DOS 
      using the F9 key.  120 sec (2 minutes) is a suggested figure.

      The software watchdog cannot work miracles, because sometimes the 
      crash is too severe, and sometimes the computer will not respond to a 
      "warm" reboot.  The use of an additional "hardware" watchdog is 
      recommended.

      Therefore, in addition to the software watchdog, the system will 
      supply pulses via a spare parallel port, to drive an external hardware 
      watchdog.  This would for example consist of an opto-isolator driving 
      a monostable circuit such that if the pulses ceased for more than 120 
      secs (must be longer than the boot-up time!) the mains supply would be 
      interrupted for long enough to cause a "cold" reboot (say 5 secs).

      The hardware watchdog pulses are enabled by specifying a suitable 
      parallel port address for the WATCHADDR parameter.  The D0 pin will be 
      toggled at 18 Hz, D1 at 9Hz, D2 at 4.5 Hz etc.  You can drive an 
      optoisolator from one of these pins.

      A hardware watchdog should detect the presence or absence of an AC 
      signal from the parallel port.  A sustained high or low value 
      indicates a fatal lock-up.  Your circuit should include a delay long 
      enough to allow the system to reboot, including all programs (e.g. 
      chkdsk) which are run at boot up.  This is to prevent it from 
      triggering again before the pulses are established, causing an endless 
      reboot cycle!

      Warning:  If you run Xrouter in a Windows95 environment, the frequency 
      of the hardware watchdog pulses will be greatly reduced (by a factor 
      of 9) if the window is backgrounded.  The software watchdog interval 
      is similarly inflated, so a 2 minute timeout will become 18 minutes.  
      I have yet to find a solution to this problem, which is due to Windows 
      not properly emulating certain BIOS functions.  However, I feel it is 
      unlikely that anyone would want to run a remote system (and thus 
      require watchdogs) on a Windows system, due to stability 
      considerations!






      XROUTER Sysop Manual Revision 2.0                          Page 25
      Stats


      STATS
      =====

      The following section attempts to explain some of the figures produced 
      by the "stats" command.

      Entering S alone will produce a single page thus:

      G8PZT:KIDDER} Stats:

      Time active (mins):              3940
      Memory: Max/Cur/Min/Out        309832    278056    273720         0
      Known nodes:                      139
      Total bytes sent/rcvd:       12685081   9695736
      Max ccts L2/L3/L4/TCP:             10        22        12         0

      IP Heard/Reasm/Rcvd/Routed:         7         0         5         2
      IP Bad Hdr/Chksum/Version:          0         0         0
      IP Sent/Frag/Unsent/Total:         11         0         0        13

      L4 Connects Tried/Made/Rcvd:      683       667       728
      L4 total frames Sent/Rcvd:      43347     41880
      L4 Sent/Rcvd/Resent/Reseq:      28431     23972       895      1831
      L4 Chokes Sent/Rcvd:             1750       168
      L4 Timeouts/Failures:             857        26

      Use STATS * to display full stats


      "Time active" is the number of minutes since Xrouter was last 
      restarted.

      "Memory" shows various stats about the program's RAM usage.  "Max" is 
      the maximum available free memory after the program is loaded, "Cur" 
      is the current free memory, "Min" is the minimum that has been reached 
      during operation, and "Out" is the number of times a memory request 
      has failed.

      "Known nodes" is the number of nodes heard about whose quality is 
      greater than the minqual setting.

      "Total bytes sent/rcvd" are the total bytes sent and received by all 
      the ports.  They include all ax25 overhead.

      "Max ccts" shows the highest number of simultaneous circuits that have 
      been active at any time.  Separate figures are shown for Ax25 levels 
      2,3 and 4, and TCP/IP.

      "IP Heard/Reasm/Rcvd/Routed" shows the total number of IP frames heard 
      (i.e. addressed to us and to others), reassembled from fragments, 
      received (i.e. addressed to us), and routed to others.

      "IP Bad Hdr/Chksum/Version" shows the number of IP frames ignored due 
      to corrupt IP headers (e.g. too short to be a legal IP frame), 
      checksum mismatch, and incompatible IP version.  







      XROUTER Sysop Manual Revision 2.0                          Page 26
      Stats


      "IP Sent" is the number of IP datagrams originated by Xrouter, i.e. 
      not routed from somewhere else.  "Frag" is the number of datagrams 
      which had to be fragmented to fit a link.  "Unsent" is (if I remember 
      correctly) the number of datagrams which couldn't be sent due to low 
      memory or no route, and "Total" is the total number of datagrams or 
      fragments thereof which were transmitted.

      "L4 Connects Tried/Made/Rcvd" shows the total number of outgoing and 
      incoming AX25 level 4 connections.  "Tried" is the number of requests 
      initiated, "Made" is the number which were successful, and "Rcvd" is 
      the number of incoming connects.

      "L4 total frames Sent/Rcvd" shows the total number of AX25 level 4 
      frames of all types sent and received by the router.

      "L4 Sent/Rcvd/Resent/Reseq" shows the totals for AX25 level 4 
      information-bearing frames.  "Sent" is the number of frames originated 
      by us.  "Rcvd" is the number addressed to us. "Resent" shows how many 
      were re-transmitted because no ack was received.  "Reseq" is the 
      number of frames that re-sequenced, i.e. were received out of sequence 
      and subsequently used when the missing frames arrived.

      "L4 Chokes Sent/Rcvd" counts the number of ax25 level 4 choke frames 
      sent and received by the router.  A sent choke indicates that we are 
      receiving L4 data faster than we can route it, and instructs the other 
      end to back off for a while.  A received choke indicates that we are 
      sending data too fast for the other end to handle.  Note that these 
      figures do not necessarily indicate that there is something wrong with 
      the router's links, as they apply to the "virtual circuit" from one 
      application to another, which may span many intervening nodes.

      "L4 Timeouts" shows the number of times the ax25 level 4 T1 timer 
      timed out while waiting for an ack, causing re-transmission of a 
      frame.  "Failures" shows the number of level 4 circuits which were 
      abandoned due to excessive retries. 

                          ------------------------------

      Entering s * will produce the above followed by:

                 Interface: 1      2      3
      RX Overruns:          0      0      0
      TX Underruns:         0      0      0
      CRC/Framing Errors:   0      0      0
      Break/Abort Errors:   0      0      0   
      Rx Overflow err:      0      0      0 
      Tx Overflow err:      0      0      0 
      Misc. errors:         0      0      0 

      L3 Frames Heard       0      0      0      0  12681      0  31364   6736
      L3 Frames Rcvd        0      0      0      0   3904      0  23721   1698
      L3 Frames Sent        0      0      0      0  13978      0  25438   7418
      L3 Frames Relayed     0      0      0      0   8036      0   7643   5038









      XROUTER Sysop Manual Revision 2.0                          Page 27
      Stats


      L2 Frames heard    4896      0     21   2171  25594    440  42977  28402
      L2 Frames rcvd     2288      0      0    582  24816    378  42902  27976
      L2 Resequenced        0      0      0      0      0      0      0      0
      L2 Reassembled        0      0      0      0      0      0      0      0
      L2 Info Received    593      0      0    104      0     63      0      0
      L2 T1 Timeouts      134      0      0     18   1086     40   4453   3407
      L2 Digipeated         0      0      0      0      0      0      0      0
      L2 Info Sent       2301      0      0    755  15580    381  25436  12170
      L2 Info re-sent     362      0      0     20   1507     38      4   3426
      L2 Fragmented         0      0      0      0      0      0      0      0
      L2 Frames Sent     4100   1991    263   3096  32154   2051  52573  32568
      L2 REJ Received     177      0      0     10    732     27      0    691
      L2 Rx out of seq     31      0      0      3    247     12      0   2764
      L2 Frames Corrupt     2      0     56     13      0      2      0      0
      L2 FRMRs Sent         0      0      0      0      0      0      0      0
      L2 FRMRs Rcvd         0      0      0      0      0      0      0      3
      L2 Bytes Rcvd     44107  31204   7209 302045  4253K  22043  1235K  7634K
      L2 Bytes Sent    100133  10517   3112 317645  3105K  44132  1001K  6512K
      Poll Timeouts         3 246969      6      7      9      5      0      7

      The first section shows a set of counters for each interface.

      "RX Overruns" counts the number of times a second byte was received 
      before a first was read by the CPU.  A high number indicates that the 
      PC is too slow for the selected serial port or HDLC card data rate.  A 
      16550-based serial card may help if the port doesn't already use one.  
      Failing that, you will have to reduce the baud rate.

      "TX Underruns" is used only by HDLC cards, and counts the number of 
      times the TX went empty while waiting for another frame byte to be 
      loaded.  A significant figure indicates the computer is too slow for 
      the baud rate.  Each underrun causes an aborted frame.

      "CRC/Framing Errors" counts either the number of bytes received 
      without proper stop bits (ASYNC interfaces), or the number of received 
      frames which corrupt (HDLC cards).  For ASYNC interfaces, a 
      significant count here can indicate a hardware problem, such as a 
      faulty line driver, serious RS232 line noise or distortion, or 
      significant baud rate mismatch.  For HDLC cards it indicates a level 1 
      problem, such as distortion in the TX/RX RF or audio paths, or simply 
      a lot of packet collisions.

      "Break/Abort Errors" counts the number of times a line "space" condition 
      longer than 1 word interval was received.  For serial ports this can 
      indicate a faulty line driver, a faulty diode matrix on a multikiss 
      system, or even (as recently happened to me) a malfunctioning TNC 
      eprom.  On HDLC cards it can result from insufficient audio drive from 
      the RX, a mismatched baud rate, squelch tails (I hope to prevent this 
      in a later version), or genuine ABORT sequences transmitted by the 
      other end of the link.  

      "CRC Errors" shows the number of frames abandoned due to CRC or 
      checksum error.  For KISS interfaces this is only maintained if the 
      CHECKSUM kissoption is enabled.

      "Rx Overflow err" shows the number of times a frame was abandoned 
      because it was too large to fit into the receive buffer.





      XROUTER Sysop Manual Revision 2.0                          Page 28
      Stats


      "Tx Overflow err" counts the number of times that the TX couldn't 
      accept a character (serial devices) or a frame (block devices) because 
      the TX buffer was full.  If you persistently get a high value, it 
      indicates that the device is too slow for the data throughput.

      "Misc. errors" counts all sorts of miscellaneous errors and the 
      meaning is different for each type of interface.  For example, on KISS 
      interfaces it counts KISS framing errors.  It is mainly for my 
      benefit.

      Following the interface stats is the ax25 level 3 counters, one for 
      each port.  Note that on a system with more than 7 ports the display 
      may wrap.  I will be addressing this in a later version.

      "L3 Frames Heard" is the total number of ax25 level 3 frames heard, no 
      matter who they are addressed to.

      "L3 Frames Rcvd" is the number of ax25 level 3 frames which were 
      addressed to the router.

      "L3 Frames Sent" is the number of ax25 level 3 frames which originated 
      at the router.

      "L3 Frames Relayed" is the number of ax25 level 3 frames which were 
      routed through our system by other systems.

      After the level 3 stats, there are the ax25 level 2 counters, one per 
      port.

      "L2 Frames heard" is the total number of ax25 level 2 frames heard, 
      whether addressed to us or not.

      "L2 Frames rcvd" is the number of ax25 level 2 frames received, which 
      were addressed to the router.

      "L2 Resequenced" is the number of ax25 level 2 frames received out of 
      sequence and subsequently used when the missing frames arrived.

      "L2 Reassembled" is the number of ax25 level 2 frames successfully 
      reassembled from fragments.

      "L2 Info Received" is the number of ax25 level 2 information-bearing 
      frames received, i.e. addressed to the router.

      "L2 T1 Timeouts" counts the number of times that the ax25 level 2 T1 
      (frack) timer timed out, causing transmission of a poll frame.

      "L2 Digipeated" is the number of ax25 level 2 frames digipeated by the 
      port.  Note that if digiport isn't zero they may actually have been 
      re-transmitted by another port, but are recorded on the "receiving" 
      port only.

      "L2 Info Sent" is the total number of ax25 level 2 information frames 
      sent by the router.








      XROUTER Sysop Manual Revision 2.0                          Page 29
      Stats


      "L2 Info re-sent" records how many ax25 level 2 information frames 
      were re-sent due to frame loss.  A high figure here, in proportion to 
      the "info sent" figure, indicates a problem with the RF link, the L2 
      settings, or the other end's system (e.g. desense, or running out of 
      buffers).

      "L2 Fragmented" is the number of ax25 level 2 information frames which 
      were fragmented to fit the outgoing link.

      "L2 Frames Sent" is the total number of ax25 level 2 frames, of any 
      type, sent by the router, i.e. it includes all info, supervisory, and 
      digipeated frames.

      "L2 REJ Received" is the number of ax25 level 2 "reject" frames 
      received, which indicate that the other end of the link didn't receive 
      some of our frames.  There are many possible reasons for this, some of 
      which are mentioned in the next paragraph.

      "L2 Rx out of seq" shows how many ax25 level 2 frames were received 
      out of sequence, and indicates that some incoming frames are getting 
      lost or trashed.  A few of the possible causes might be: signal too 
      weak, fading, other signals on channel, natural or man made 
      interference, desense or key clicks from adjacent transmitters, poor 
      rx audio response, low received audio, over-deviation, RF frequency 
      mismatch, badly aligned rx, TNC hardware problems, synthesised rig 
      taking too long to stabilise on RX after TX, other end's synthesised 
      rig taking too long to stabilise on TX, hum, noise, distortion or 
      disturbances on modulated audio... the list is endless.

      "L2 Frames Corrupt" is the number of frames which were dumped because 
      they were too short to be legal ax25 level 2 frames, or were in some 
      way invalid.  It is sometimes possible for a KISS TNC, especially if 
      running "open squelch", to send garbage to the router,  or the frame 
      may be trashed by bit errors on the serial link between TNC and 
      router, and in either case these frames are dumped if the error can be 
      detected.

      "L2 FRMRs Sent/rcvd" shows how many ax25 level 2 "Frame Reject" frames 
      were sent by the router, or received by it, indicating serious 
      protocol errors or deliberate interference.

      "L2 Bytes Sent" and "L2 Bytes Rcvd" simply provide a port by port 
      breakdown of the total bytes sent/rcvd figure.

      "Poll Timeouts" counts the number of times a BPQKISS TNC was polled 
      with no response being received from it.  A large figure might 
      indicate a crashed, disconnected or unpowered TNC, or data loss on the 
      serial link.














      XROUTER Sysop Manual Revision 2.0                          Page 30
      Frame Pipes


      FRAME PIPES
      ===========

      An optional facility allows frames received (and optionally sent) on 
      one port to be copied to another port.  A typical use would be to 
      allow a PMS connected to one port to see the traffic on another port, 
      e.g. UNPROTO headers from a local BBS.  Note that this is *not* the 
      same as digipeating.

      The facility is enabled by including the PIPE keyword within a port 
      definition, e.g. PIPE=4 would pipe frames to port 4.  If PIPE=0, or 
      the keyword is omitted altogether, no piping takes place.

      Pipes can be made selective, by adding a comma-delimited callsign 
      list, e.g. "PIPE=4 GB7PZT,KDRBBS".  This will reduce the loading on 
      the destination port, by piping only the frames with the specified 
      calls in the destination field.

      A pipe normally only allows traffic in one direction - in order to 
      have two way traffic you must either set up a reverse pipe on the 
      partner port, for example:

           (on port 3)    PIPE=4  ; Pipe frames to port 4
           (on port 4)    PIPE=3  ; Pipe frames to port 3

      Or you may configure the pipe to be bi-directional, by setting the 
      appropriate value in PIPEFLAG (see below)

      If a frame is piped on a birectional pipe, the source call is 
      remembered so that responses will be piped back to the sender.  This 
      is useful in cases where a BBS has a front end router.  Simply set up 
      bidrectional selective pipes from each user port to the BBS port.  The 
      BBS will then allow direct connection and will respond to resync requests.

      Bi-directional pipes are in reality only quasi-bi-directional, 
      because they can only send *responses* in the reverse direction.  In 
      the above BBS example, outgoing connects cannot be initiated to 
      callsigns which haven't already used the pipe.  The only way to have 
      truly unconditional two-way piping is to set up forward and reverse 
      pipes as detailed above.

      You may pipe several ports to a single destination port, but you can 
      at present only have one *outgoing* pipe from any port.

      Pipes are capable of generating an immense amount of traffic, so 
      use them with care - your target port MUST be capable of dealing with 
      the traffic load, and you should avoid setting up a network of pipes 
      which could cause an endless loop!














      XROUTER Sysop Manual Revision 2.0                          Page 31
      Frame Pipes


      The types of frame to be piped can be controlled using the optional 
      PIPEFLAG keyword, which is ignored unless piping is active.

      If PIPEFLAG is not specified, the default value is 3.  The value is 
      made up by adding together the following numbers:

              1       - UI frames *not* addressed to nodecall/alias.
              2       - Non-UI frames *not* addressed to nodecall/alias.
              4       - UI frames addressed to nodecall/alias.
              8       - Non-UI frames addressed to nodecall/alias.
              16      - UI frames transmitted by the router.
              32      - Non-UI frames transmitted by the router.
              64      - Allow budlisted users to be piped.
              128     - Netrom frames
              256     - IP / ARP frames
              512     - Bi-directional piping

      e.g. PIPEFLAG=5 will pipe all received UI frames, but not those which 
      are originated by the router itself.

      You are *STRONGLY* recommended to use the default value unless you 
      specifically need to see additional traffic.








































      XROUTER Sysop Manual Revision 2.0                          Page 32
      Broadcasting


      BROADCASTING
      ============

      Xrouter has the ability to "re-broadcast" a received frame on several 
      ports at once.  This can be thought of as a "one-to-many" pipe but 
      there are subtle differences.

      Whereas pipes conduct all frames of the selected type(s) virtually 
      regardless of source and destination addresses (unless they are 
      selective pipes), the broadcast function acts only upon UI frames, and 
      only if the source and destination addresses match those specified by 
      the sysop.

      Another difference is that frames may be broadcast to different groups 
      of ports depending on the destination address.  For example, FBB 
      unproto headers from a BBS may be rebroadcast on certain user-access 
      ports only, while mail beacons may be distributed to a different, 
      possibly overlapping, set of ports.

      You may alternatively use this feature as a "filtered pipe" between 
      two ports, allowing only UI frames with acceptable source and 
      destination calls to pass through.

      Note that this feature does not require a "connection" to the router, 
      it is purely an unconnected mode.  I devised it to allow BBS's to 
      distribute mail beacons and unproto mail headers.  You may use it (or 
      not) how you wish.

      You should be aware that broadcast traffic takes precedence over all 
      other frames, so an excessively high level of broadcast activity may 
      cause other outbound traffic on the destination port to be delayed.  
      However, it is unlikely that anyone will notice this effect unless 
      they are seriously overloading the channel.

      Broadcasting is controlled by two keywords in each PORT section of the 
      XROUTER.CFG file.  The first keyword is BCAST, and is used to specify  
      the destination addresses which will be broadcasted.

      For example, BCAST=MAIL,FBB will re-broadcast received non-digipeater 
      UI frames addressed either to FBB or MAIL.  The frames addressed to 
      FBB will be broadcast on all ports which have FBB in their BCAST list, 
      and those addressed to MAIL will be broadcast on all ports which have 
      MAIL in the BCAST list.  If no matching ports are found, the frame is 
      broadcast only on the port upon which it is received.  If you don't 
      need the broadcast function, simply omit (or comment out) the BCAST 
      keyword.

      The second keyword is BCFROM, which is used to specify a list of 
      callsigns from whom frames will be accepted for broadcast.  You may 
      use this to restrict the broadcast facility to certain senders only.  
      e.g. BCFROM=GB7PZT,GB7MAX says that only frames from GB7MAX and GB7PZT 
      will be accepted for broadcast.  If the keyword is omitted, the 
      broadcast facility is unrestricted.  BCFROM applies only to frames 
      *directly* received on the port for which it is specified.

      For both keywords, the list of calls should be separated by commas, 
      and should include no spaces.





      XROUTER Sysop Manual Revision 2.0                          Page 33
      Proxy Connections


      PROXY CONNECTIONS
      =================

      The PROXY facility allows ax25 level 2 callers to connect "direct" to 
      remote NET/ROM target callsigns, instead of having to connect first to 
      the router then issue a downlink connect request.

      I created this facility primarily for use in situations where a BBS or 
      PMS is wire-linked to a "front-end" router, thus allowing the BBS 
      callsign to be directly connectible on any port for which the proxy 
      call is defined.  You may find other uses....

      A bidirectional selective frame pipe would provide a similar effect, 
      but only for systems directly connected to the router, whereas PROXY 
      allows the target system to be located several hops away.  Pipes can 
      handle UI frames, whereas PROXY is for connected-mode operations only.

      Here's how it would be used on my setup, which has two machines.  Only 
      the router is connected to the radios, the BBS being wire-linked to 
      the router's port 7.

         -----------  (1)
        | Radio/TNC | ---.
         -----------     |
                         |     .--------------.            .----------.
         -----------  (2)|     | KIDDER:G8PZT | (7) KISS   |  GB7PZT  |
        | Radio/TNC |----|-----|              |------------|          |
         -----------     |     |   (router)   |  (rs232)   |   (BBS)  |
                         |     `--------------'            `----------'
         -----------  (3)|
        | Radio/TNC |----|
         -----------     |
                         V
                        etc.

      Without PROXY, level 2 users would have to connect to KIDDER:G8PZT, 
      then issue the command "C GB7PZT", or "BBS" to connect to the BBS.

      With the line "PROXY=GB7PZT" in port 1's definition (in XROUTER.CFG), 
      users on port 1's frequency (144.850) simply connect to "GB7PZT" - the 
      router sees the request and passes it via NET/ROM to GB7PZT, providing 
      GB7PZT has a NET/ROM facility of course (in my case it does because 
      GB7PZT runs on top of BPQ).

      If the target system (GB7PZT in this case) is not reachable via 
      Net/Rom level 4, the connect request is refused.

      If you wish to use this facility, you must add a 
      "PROXY=<call1>,<call2>,..." line to each user port concerned.  Ports 
      without the line will continue to function as normal.  You obviously 
      wouldn't enable it on your forwarding ports for example.  You will 
      notice that you can have several callsigns on the line, each separated 
      by a comma.

      Warning!  DO NOT enable proxy on any frequency which is shared by the 
      target system or you'll cause horrible problems (both the target and 
      the proxy will respond to connects at the same time).





      XROUTER Sysop Manual Revision 2.0                          Page 34
      Chat Server


      CHAT SERVER
      ===========

      Xrouter has a built-in chat server, which is a device which 
      allows groups of users to hold live multi-way conversations without 
      the usual problems of having to manage several streams at once.  It is 
      available to all callers, and is accessed by using the CHAT command at 
      the main prompt, or by connecting directly to its callsign or alias.  
      TCP/IP users can additionally reach it by TELNETting to port 3600.

      The chat server has 32768 "channels", each of which can support an 
      unlimited number of users, so it is possible for groups to have their 
      own "private" channel, or to reserve certain channels for specific 
      topics.  Channel 0 (zero) is the default at log-on and is used as a  
      sort of "calling channel", from where users may QSY as required.  
      Users may "join" as many channels as they wish, so they may take part 
      in several separate conversations at once.

      Channels 0 to 255 are "local" to each chat server, and the remaining 
      channels 256-32767 are "global", i.e. they are linked with all other 
      servers, providing the sysop sets up at least one link to another 
      server.  Only Netrom links are allowed at present, so the partner must 
      be in your node table.

      Once logged onto a channel, anything sent by the user is copied to all 
      other users of that channel, except lines beginning with a forward 
      slash (/), which are interpreted as chat server commands.  The copied 
      text is preceded by the channel number and the sender's callsign and 
      name, to allow the recipients to identify who sent it.

      All chat server commands begin with a forward slash (/), and most may 
      be abbreviated to the initial letter.  The /? command will show the 
      available commands and syntax, while /HELP will give more details. 

      The /NAME command is used to enter the user's first name, and serves 
      as a "login".  Users are not permitted to join any channels until they 
      have supplied a name.  TCP/IP users must additionally supply a 
      callsign with the /USER command.  /CHANNEL, /JOIN and /LEAVE are used 
      to select the desired channel, /WHO shows the active channels and who 
      is using them, and /QUIT terminates the chat session.  The full 
      command set is shown in more detail in the command reference section.

      If transaction logging has been enabled in XROUTER.CFG, chat server 
      activity will be logged in file CHATSERV.LOG.

      The chat server is fully automatic and requires minimal setting up. It 
      has its own callsign and alias defined in XROUTER.CFG, plus a list of 
      link partners.  The alias (6 chars max) should preferably end with 
      "CHT" and begin with something geographically relevant, e.g. BHMCHT 
      for Birmingham, LDSCHT for Leeds etc., so they can be identified 
      easily in node tables.  The only other setting up required is to 
      install the chat help files in the directory help/chat.

      As with *all* chat servers, you should be aware that the throughput on 
      each channel is determined by the slowest link on that channel, 
      therefore "dxing" into distant chat servers is not encouraged.  The 
      same applies to partner servers - if the link to your partner isn't up 
      to the job the throughput for everyone will be compromised




      XROUTER Sysop Manual Revision 2.0                          Page 35
      Application Interface


      APPLICATION INTERFACE
      =====================

      Because XROUTER.EXE is not a TSR, you cannot run other applications 
      "on top" of Xrouter *unless* you run it in a Windows or Desqview 
      environment.

      This mode of operation is well outside my original requirement 
      specifications, because I personally feel it is not the job of a 
      *router* to directly support applications.  In my view, a router 
      should just be a box which sits in a dusty corner getting on with the 
      sole job of shunting packets around!

      However, it seems that Radio Amateurs are in the main unwilling to run 
      more than one machine, so I have included an application interface 
      with the caveat that I don't consider it a particularly important 
      feature and don't want to waste all my time supporting it.  There are 
      plenty of other programs (such as BPQ, FLEXNET and AGW) more suited to 
      directly supporting applications.

      In order to use the application interface, you must load an additional 
      component, PZTSOCK.EXE, *before* you start Windows or Desqview.  This 
      is a TSR which occupies 64k of base memory.  After PZTSOCK, start 
      Windows itself, then run Xrouter in a window and the applications in 
      other windows.  You cannot run PZTSOCK.EXE in a window.

      The application interface conforms almost exactly to G8BPQ's interface 
      specification, detailed in BPQHOST.DOC, which is usually included with 
      the BPQ program. For the moment, you are referred to that document if 
      you require details of how to write programs for the interface.

      I say "almost" exactly, because the "BBS" application is not fixed as 
      the first application.  Thus in function 6, CX=0 uses the APPLICATION 
      callsign, not the "BBS" callsign, as there is no specific "BBSCALL" in 
      my program.

      The application interface has been tested with PZT BBS, PAC4, Easyterm 
      and PEARL so far.  It doesn't seem to work with NPFPMS.  If you find 
      it works (or doesn't) with other applications, please let me know.  It 
      will NOT work (yet) with 32 bit applications such as Winpack, but I'm 
      working on that.


      What is PZTSOCK ?
      ~~~~~~~~~~~~~~~~~
      PZTSOCK is a combined socket and BPQHOST interface, which isn't yet 
      properly tested.  I am not releasing details of the socket API until 
      I've made sure that there will be no further changes, as I want to 
      ensure backward compatibility in future.  So as far as you are 
      concerned, the only functional part of PZTSOCK is the "bpqhost" 
      interface.











      XROUTER Sysop Manual Revision 2.0                          Page 36
      Application Interface


      Why sockets?
      ~~~~~~~~~~~~
      The bpqhost API was designed a long time ago and does not support 
      TCP/IP and UDP applications, whereas the PZTSOCK API allows any 
      combination of TCP/IP, NETROM, and AX25 applications to interface with 
      the router in a variety of modes.

      For example, text-mode applications may interface directly with the 
      router's command line as if connected via a wire link.  AX25 
      applications can have complete dynamic control over their own 
      callsigns, and may use "stream" (connected) mode, "datagram" (UI 
      frames) mode, or "raw" mode (application encodes/decodes the frame).  
      Netrom applications can similarly use stream, datagram or raw mode.  

      TCP/IP and UDP/IP applications can use any IP address/port 
      independently of the router, and "raw" mode allows any application to 
      send/receive IP datagrams.  And of course bpqhost API is still 
      included.

      This will allow any application which uses a socket paradigm to be 
      easily ported for use with xrouter, as the interface provides BSD-
      style open(), bind(), accept(), send() recv() and close() calls.

      During the development of PZTSOCK it became clear that it wasn't 
      possible to efficiently mantain compatibility with the previous 
      host api program, PZTHOST, so I'm afraid PZTHOST will no longer work 
      with Xrouter versions later than v1.63.  However the testing of the 
      socket interface was delaying more important work so I had to release 
      it in partly tested state.  I hope to finish it soon.

      PZTSOCK requires a single numeric argument, which is the interrupt 
      number (in decimal) used for the socket calls.  You must supply this, 
      even though it isn't currently used.  e.g. "PZTSOCK 128" would specify 
      that software interrupt 128 will be used by socket-based applications 
      to talk to the router. BPQ host applications are supported through the 
      HOSTINTERRUPT defined in XROUTER.CFG.

      If you previously ran applications using PZTHOST, simply substitute 
      PZTSOCK in place of PZTHOST and modify your batch file to supply a 
      dummy interrupt as above.  Make sure the dummy interrupt isn't used by 
      something else, and don't make it the same as HOSTINTERRUPT.  Values 
      between 128 and 255 should be OK if you have the usual 
      HOSTINTERRUPT=127.



















      XROUTER Sysop Manual Revision 2.0                          Page 37
      Application Interface


      Defining Applications
      ~~~~~~~~~~~~~~~~~~~~~
      Applications must be specified in XROUTER.CFG, in the following 
      manner:

      Each application definition block must begin with APPL=<number> and 
      end with ENDAPPL.  There should be a separate block for each 
      application.  Applications which use more than one stream, need only a 
      single definition.  The application block should contain one or more 
      of the following keywords:

           APPLNAME       The name by which the application is accessed from                     
                          the router's command line. e.g. "PMS".  If a user                     
                          types this name, they will be connected to the                     
                          application.

           APPLCALL       Callsign which the application will use.
                          If a callsign is specified, the application will 
                          accept level 2 connects, subject to the setting of 
                          APPLMASK (see below).

           APPLALIAS      Alias for use by the application.
                          As APPLCALL.

           APPLQUAL       Netrom quality to broadcast.
                          If a non-zero value is specified here, the 
                          APPLCALL will be included in nodes broadcasts and 
                          the application will be connectible at level 4.

      The application number must be between 1 and 8, and corresponds to the 
      application's position on a BPQ "APPLICATIONS=" line.  Some 
      applications have fixed application numbers, e.g. BBS's and PMS's must 
      usually be the first application and Host programs such as PAC4 are 
      usually the second.

      All fields within an application definition block are optional - you 
      may have for instance choose to have an applname but no applcall, and 
      the application would only be reached by typing the applname at the 
      command line.  Or you could have an applcall but no applname, in which 
      case the application would be directly connectible, but wouldn't be 
      reachable from a command line shortcut.

      Example:
           APPL=1
                 APPLNAME=PMS
                 APPLCALL=G8PZT-2
                 APPLALIAS=PZTPMS
                 APPLQUAL=50
           ENDAPPL













      XROUTER Sysop Manual Revision 2.0                          Page 38
      Application Interface


      If you want an application to be directly connectible on a particular 
      port, it (the application) must have a callsign, an alias or both, and 
      the corresponding bit in that port's APPLMASK must be set.

      APPLMASK specifies which applications will be directly connectible on 
      a given port.  The default is 255, which allows all applications.  The 
      value is made up by adding together the following numbers:

                      1       - Enable Application 1
                      2       - Enable Application 2
                      4       - Enable Application 3
                      8       - Enable Application 4
                      16      - Enable Application 5
                      32      - Enable Application 6
                      64      - Enable Application 7
                      128     - Enable Application 8


      For example, if a port's definition contains "APPLMASK=9", it will 
      allow direct connections to applications 1 and 4 on that port, 
      providing those applications have either an APPLCALL or an APPLALIAS.


      Setting The Host Interrupt Number
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      In addition to the above, XROUTER.CFG must contain the HOSTINTERRUPT= 
      keyword, which specifies the software interrupt number the 
      applications will use to communicate with the router.  The value is in 
      decimal, and 127 is the value usually chosen.  The default, if you 
      omit the keyword, is 0 which disables the host interface.  Do NOT go 
      below 96, as the operating system may be using the interrupt.

      Note that some applications may specify the host interrupt in 
      Hexadecimal, e.g. 7F is 127 decimal.




























      XROUTER Sysop Manual Revision 2.0                          Page 39
      Using Xrouter With Desqview


      USING XROUTER WITH DESQVIEW
      ===========================

      As stated many times, xrouter is a FOREGROUND program, designed to be 
      the sole application on a dedicated machine.  However, even though 
      suitable PC's are now freely available, some people still want to run 
      everything on one machine.  This can be achieved within the 
      multitasking environment provided by Desqview, which in my view is a 
      more stable and suitable environment than Windows, with less stringent 
      hardware resource requirements.

      In the following text, it is assumed that you already have a copy of 
      Desqview properly installed on your machine, and are conversant with 
      its use.


      a) Configuring Xrouter to run in Desqview
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      STOP!   First of all, set up XROUTER.CFG to your requirements and make 
      sure the router runs properly in plain DOS.  If it doesn't work in 
      DOS, it won't work in Desqview!  If you intend to run applications, 
      configure the APPL sections and set HOSTINTERRUPT to your preferred 
      interrupt number.  You must set DESQVIEW=1 otherwise it won't work 
      properly in DesqView.

      Make sure that there are no conflicts between xrouter and other 
      applications for access to hardware such as COM ports, Ethernet or SCC 
      cards.

      The program writes directly to screen memory because the PC's BIOS 
      routines are not usually fast enough to support multi-port monitoring 
      at high data rates.  A consequence of this within Desqview is that the 
      console display may "bleed through" into any Desqview window which 
      overlays it.  I am told that this doesn't happen with more modern 
      versions of DV, although I can't confirm this.

      This may or may not be a problem to you, depending on the other 
      applications you are running alongside the router.  If you set 
      NUMCONSOLES=0 in XROUTER.CFG, the router will run without a screen 
      display, thus avoiding bleed-through, and saving some memory.  Of 
      course, in this mode you will only be able to control the router by 
      connecting to it, either from an application or via one of the ports, 
      much like the TSR version of BPQ.



















      XROUTER Sysop Manual Revision 2.0                          Page 40
      Using Xrouter With Desqview


      b) Configuring Desqview For Xrouter
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Start Desqview and choose Open -> Add Program, then use the following 
      parameters as a guide....

      Program Name:                      XROUTER
      Keys to use on open menu:          XR
      Memory size in K:                  300 (see below)
      Program:                           XROUTER.EXE
      Parameters:
      Directory:                         C:\XROUTER

      Options
      -------
      Writes directly to screen:         Y
      Displays graphic information:      N
      Virtualise text/graphics:          N
      Uses serial ports:                 N
      Requires floppy diskette:          N

      Advanced Options
      ----------------
      System memory in K:                10
      Maximum program memory size:
      Script buffer size:                1000
      Max. expanded memory size:
      Text pages:                        2
      Graphics pages:                    0
      Initial mode:
      Interrupts:                        00 to FF
      Max height:                        25
      Max width:                         80
      Close on exit:                     Y
      Allow close window command:        N
      Uses own colours:                  Y
      Runs in background:                Y
      Uses math coprocessor:             Y
      Keyboard conflict:                 0 or 1
      Share CPU when foreground:         Y
      Share EGA when foreground:         Y
      Can be swapped out:                N
      Protection level:                  1


      You should preferably reserve enough memory to allow at least 30k of 
      free memory shown on the console top status bar (or use the Stats 
      command if you have console disabled), but the actual figure may 
      depend on how much Desqview will let you have, and how much you need 
      for other applications.  Optimising Desqview is beyond the scope of 
      this document.












      XROUTER Sysop Manual Revision 2.0                          Page 41
      Using Xrouter With Desqview


      Starting Xrouter within Desqview
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      1)   If you wish to run BPQ-compatible applications, you must start 
           PZTSOCK before you start DesqView itself.  PZTSOCK.EXE should be 
           located in the same directory at XROUTER.EXE and XROUTER.CFG.  
           Simply change to the XROUTER directory and type "PZTSOCK", or 
           arrange for this to happen in your autoexec.bat. (Tip: if you 
           ever need to unload PZTSOCK you can do do using "PZTSOCK -U.")

      2)   Start DesqView.

      3)   Choose Open -> Start Program -> XROUTER or set up a startup 
           script to do so.  The router should now be running.  If not, and 
           assuming you made sure it ran OK in DOS, you may need to use a 
           higher value for "Memory Size".

      4)   Start your other applications.  


      Notes
      ~~~~~
      Some BPQ applications need to read configuration information (usually 
      HOSTINTERRUPT) from BPQCFG.BIN, so you may have to create a dummy 
      BPQCFG.BIN to keep them happy. 

      Because each program only gets a short interval of processor time, 
      interspersed with periods of inactivity, you may find that some of the 
      timings on SCC cards (e.g. TXDELAY and the CWID dot spacing) are a 
      little erratic.  You may need to "tune" the system to minimise the 
      jitter by setting the foreground and background time slices to 1 tick 
      each.

      Please inform me if you can improve on the suggested settings or offer 
      any other tips.




























      XROUTER Sysop Manual Revision 2.0                          Page 42
      Ethernet Interfaces


      ETHERNET INTERFACES
      ===================

      Using Ethernet, Xrouters can be linked with each other and with 
      other ethernet-capable systems such as Linux, xNOS, BPQ and Windows.

      There are two options, both of which use the TYPE=EXTERNAL interface, 
      but using different PROTOCOL= settings.  The first option detailed 
      below is somewhat limited in capability:


      Option 1 - Use BPQ's ODIDRV.EXE driver
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Xrouter will interface directly to BPQ's ODIDRV program, allowing 
      AX25-only links between any number of Xrouters, and between Xrouter 
      and BPQ systems.

      For this option, the interface should be specified as TYPE=EXTERNAL, 
      PROTOCOL=HDLC, INTNUM=125 (adjust this to suit your needs). The MTU 
      should be set at 256 since ODIDRV can only handle small frames. You 
      can attach one PORT to this interface.

      You will need to obtain BPQ's ODIDRV.EXE and the appropriate bits of 
      Novell Netware, and have a reasonable working knowledge of how to set 
      it all up!  Don't ask me, because I haven't a clue :-)

      Follow the instructions in BPQ's DRIVERS.DOC for setting up the ODI 
      system.  Xrouter currently uses a fixed PID of 0x8FF, which is the 
      default value for BPQ, and frames are addressed to the multicast 
      address FF:FF:FF:FF:FF:FF, so the only change you need to make to 
      BPQ's example is to change ETH_ADDR to that value.

      The load order is as follows:

              LSL.COM         (Part of Novell Netware)
              NE1000          (Ditto - adjust to suit your Ethernet card)
              ODIDRV 125      (BPQ program.  Number must match INTNUM)
              XROUTER

      If you wish to communicate with BPQ nodes via Ethernet, the PID and 
      multicast addresses must match.

      Because ODIDRV only supports HDLC protocol, you won't be able to use 
      TCP/IP on the link unless it is first encapsulated in AX25 frames.  
      This should happen automatically if you try to route IP via the 
      ethernet port, but obviously this *encapsulated* IP cannot talk 
      directly with real TCP/IP systems which don't understand AX25.


      Option 2 - Use PZT's ETHDRV.EXE driver
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      This option allows simultaneous connection between any number of 
      Xrouters, between PZT and BPQ, and between PZT and other systems 
      capable of TCP/IP over Ethernet.  It doesn't require any Netware 
      components, and is relatively easy to set up.






      XROUTER Sysop Manual Revision 2.0                          Page 43
      Ethernet Interfaces


      The software components you require are:  ETHDRV.EXE (supplied with 
      the router), an Ethernet card driver to match your card e.g. 
      NE1000.COM (You can get these free from Simtelnet), and XROUTER.EXE 
      itself.

      The interface should be set up as TYPE=EXTERNAL, PROTOCOL=ETHER, and 
      you may set MTU as high as 1500 if you wish. Set INTNUM to a spare 
      software interrupt in the range 60 - 127 (125 is used as an example).  
      You can attach one PORT to this interface.

      If you are not familiar with Ethernet card drivers (aka "packet" or 
      "Crynwyr" drivers), 3 arguments are usually specified when starting, 
      e.g...

              NE2000 0x60 5 0x300

      Where:  NE2000  is the driver matching your card.
              0x60    is the software interrupt used to talk to the card,
                      specified in hex (0x60 is decimal 96, 0x61 is 97 etc.)
              5       is the IRQ used by the card.
              0x300   is the I/O address of the card.

      The I/O address and IRQ are often settable by jumpers on the card, 
      especially on older cards, but some cards have fixed settings.

      0x60 is the default software interrupt used by ETHDRV.EXE to 
      communicate with the card driver.  If you specify an alternative 
      number (e.g. if you have several cards), you must specify that number 
      when starting ETHDRV.

      ETHDRV.EXE normally requires a single argument, namely the INTNUM 
      which should match the one specified in the INTERFACE block.  It 
      optionally takes a second argument, if you wish to use an interrupt 
      other than 0x60 to communicate with the card driver.

      e.g.    ETHDRV 125              (intnum=125, software int=0x60)
              ETHDRV 125 0x63         (Using a different card interrupt)
              ETHDRV  125 -U          (To unload the driver)


      My startup sequence is as follows:

              NE2000 0x60 5 0x300
              ETHDRV 125              (Interface intnum=125)
              XROUTER


      Ethernet Card Sharing
      ~~~~~~~~~~~~~~~~~~~~~
      Unfortunately the present version of ETHDRV will not share an ethernet 
      card with other applications (e.g. Windows), so if you are using it on 
      a Windows machine you will either have to disable Windows' use of the 
      Ethernet card, or simply install a second card.  I will address this 
      issue in due course.








      XROUTER Sysop Manual Revision 2.0                          Page 44
      APRS - Automatic Packet Reporting System


      APRS
      ====

      In addition to NetRom and IP routing, frame piping, broadcasting and 
      normal digipeating, Xrouter supports APRS (Automatic Packet Reporting 
      System) generic digipeating for RELAY, WIDE, TRACE, TRACEn-N and 
      WIDEn-N aliases.

      Generic digipeating is configured on a port by port basis, using flags 
      in "digiflag" as follows:

               4      Enable RELAY generic APRS digipeating.
               8      Enable TRACE and TRACEn-N APRS digipeating.
               16     Enable WIDE and WIDEn-N (Well sited stations only!)

      In quiet areas, you may wish to mix APRS and normal connected-mode 
      operations on the same port, and that is the default if you enable any 
      of the above flags.

      In most areas, APRS tends to be on a separate frequency reserved for 
      "unconnected nets", and you may wish to prevent people from connecting 
      to the router or downlinking from it on your APRS-only ports.

      The CFLAGS keyword can be used in the PORT section of the CFG file to 
      control uplinking and downlinking as follows:

               0     Prevent uplinking and downlinking.
               1     allow uplinking only.
               2     allow downlinking only.
               3     allow both up and downlinking.

      You may choose to allow regular digipeating (i.e. using the router's 
      normal callsign or alias) on APRS ports, allow regular UI-only 
      digipeating, or disable regular digipeating altogether, by 
      manipulating bits 0 and 1 of DIGIFLAG.

      Whilst I urge all sysops to include an APRS position in their normal 
      IDTEXT, a dedicated APRS port may require a more detailed and cryptic 
      ID beacon, therefore you may define a different IDTEXT for each port 
      if necessary.  A "regular" port would include a position followed by 
      some human-readable text, whereas the APRS-only ports would include 
      additional data such as power / height / gain / direction, wind speed, 
      bowel movements etc., in encoded format.

      The IDTEXT may be sent via digipeaters by including the IDPATH keyword 
      in the relevant port configuration section of XROUTER.CFG.

      Xrouter checks for its own callsign or alias in previously-passed 
      digipeaters to prevent digi looping.  It will not digipeat frames it 
      originated, and will not digipeat the same frame within 9 seconds.

      The "DX [port]" command show the best received APRS DX. It only works 
      if the router's APRS position has been defined by including it
      in the ID beacon.

      The DXFLAGS keyword in the .CFG file controls whether or not the DX 
      list will contain callsigns heard via digipeaters.





      XROUTER Sysop Manual Revision 2.0                          Page 45
      APRS Queries


      APRS / UI-View queries
      ~~~~~~~~~~~~~~~~~~~~~~
      Xrouter responds to the following general queries:

          ?APRS?     All stations query. 

          ~\xFD~     UI-View general query.

          The response to both of these is the ID beacon for the port, 
          which, if my recommendations were followed, should contain the 
          APRS position and station type.


      The following "directed" queries (directed at portcall) are supported:

          ?APRSD     Directly heard stations list.

                     Responds with a list of stations heard directly on the 
                     receiving port (i.e. not via digipeaters or via 3rd 
                     party networks)

          ?APRSM     Un-delivered messages query.

                     If there are any un-delivered or expired messages 
                     addressed to the sender of the query, they are re-
                     activated and transmitted on the port which received 
                     the query.

          ?APRSP     Station Position.

                     If the sysop has defined the router's position, it is 
                     sent in response to this query.

          ?APRSS     Station status.

                     The response consists of the software type and version, 
                     plus a list of the enabled generic digipeater calls.

          ?PING?
          ?APRST     Trace Route.

                     Both of these return the route by which the query was 
                     received.

          ~\xFE~n    UI-View "ping".

                     The response to this query is a UI-View ack for the 
                     ping id.

          ~\FC~n     UI-View "DX" query.

                     Responds with a UI-View ack, followed by details of the 
                     best DX heard directly by the router (digipeated 
                     packets are NOT dx as far as I'm concerned!)








      XROUTER Sysop Manual Revision 2.0                          Page 46
      APRS Messaging


      APRS MESSAGING
      ==============

      Xrouter contains an APRS messaging shell, which allows NON-APRS users 
      to exchange messages with APRS / UI-View users, and also to send and 
      read bulletins and announcements.

      Messaging mode is initiated by from the main command prompt by 
      entering the command "AMSG <port>", where <port> is number of the 
      radio port on which messages will be sent and received.

      Within messaging mode, all commands begin with a forward slash (/), 
      and anything else is treated as message text for transmission.  The 
      commands are as follows:

               /A[nnouncements]    Show announcements
               /B[ulletins]        Show bulletins
               /C[ancel] [#]       List / cancel unacked message(s)
               /D[irects]          Show directly heard stations
               /H[elp] [cmd]       Display command help
               /Monitor [on|off]   Query / set traffic Monitor mode
               /Q[uit]             Quit (exit)
               /T[arget] [call]    Query / set target for msg
               /U[iview] [on|off]  Query / set UI-View mode
               /V[ia] [digis]      Query / set digipeater path
               /X                  Exit

      Only the first letter of each command needs to be supplied.  A few are 
      worthy of further explanation....

      The /D command shows a list of all the stations heard directly, i.e. 
      not via digipeaters or 3rd party networks.

      Before any type of message or query can be sent, the user must 
      specify a "target" address, using "/T [call]".  For messages, the 
      target will be a callsign.  For bulletins the target should be BLN#*, 
      where "#" represents a single digit, and "*" represents the bulletin 
      category of up to 5 characters.  Announcements use the same format as 
      bulletins, except that "#" represents a non-digit.  Attempting to send 
      a message without first defining a target will result in an error 
      response.  The target remains in force until a new target is 
      specified.  The current target can be displayed by entering "/T" 
      alone, or cleared by entering an invalid target, e.g. "/T .".

      Outgoing messages and bulletins are re-transmitted at intervals until 
      either an acknowledgement is received, or too many retries have taken 
      place.  Bulletins are re-transmitted every 20 minutes for 4 hours, 
      whilst announcements are re-transmitted every hour for 4 days. 
      Messages are initially re-transmitted after 10 seconds, then the 
      interval doubles with each re-send.  When the interval exceeds 
      approximately 1.5 hours, the message is expired and re-transmission 
      ceases.  The "cancel" command allows the re-transmission of outgoing 
      messages and bulletins to be cancelled at any time before expiry.

      The /M (Monitor) command allows other APRS and UI-View message traffic 
      on the channel to be watched.  The default is "off". Entering /M by 
      itself shows the current state.





      XROUTER Sysop Manual Revision 2.0                          Page 47
      APRS Messaging


      The /U (Ui-View mode) command sets the type of outgoing message to be 
      used.  The default is "off", which means that all outgoing messages 
      will be in APRS format.  If turned "on", outgoing messages will be in 
      "UI-View" format.  In either mode, both types of message can be 
      received.  UI-View messages will display with a tilde (~) between the 
      message and its ID, whereas APRS-format messages will display with a 
      curly opening bracket ({) if a message ID was supplied.  In UI-View 
      mode, "\<decimal>" will send a UIVIEW message whose text portion 
      contains a single byte of value <decimal>, e.g. "\254" will send a 
      PING request.

      /Q (quit) and /X (exit) are identical in function, exiting message 
      mode and returning the user to the router's main command prompt.

      The /V (via) command sets the digipeater path for outgoing messages, 
      or if used by itself displays the currently set path.  The path 
      defaults to the port APRSPATH specified in XROUTER.CFG.  In APRS mode, 
      the destination call is fixed at APZ###, where ### is the 3 digit 
      Xrouter version number, whereas in UI-View mode the destination call is 
      set by the /Target command.

      The /H (help) command is used to display help for the messaging 
      commands.  If no argument is supplied, a very brief (low bandwidth) 
      command resume is displayed.  If the help files are installed, "/H *" 
      will list the help available, and "/H <cmd>" can be used to obtain 
      more detailed help for <cmd>, e.g. "/H /V". Note that the leading 
      slash of the argument is ignored, so "/H V" is equally valid.

      Messaging notes
      ~~~~~~~~~~~~~~~
      If Xrouter receives an APRS message whose target address is a user 
      currently logged into the APRS messaging shell, the message is 
      delivered to the user and, if there was a message ID, an 
      acknowledgement is sent.  Each re-send of the message is acknowledged, 
      because a re-send probably indicates that the sender didn't receive 
      the previous ack.

      If the same message is received twice within 30 seconds, the second 
      copy is ignored.  This helps to eliminate duplicates received via 
      different digipeater routes.

      Expired messages are retained for 1 day before being deleted.  During 
      this interval they will be reactivated if a "?APRSM" query is received 
      from the target station.  Outgoing bulletins and announcements are not 
      retained after expiry.  Incoming bulletins are retained for 4 hours 
      after last received, and incoming announcements are retained for 4 
      days after last received.

      The APRS spec limits the maximum message length to 67 characters. 
      Because a message ID of up to 6 characters is appended to the message, 
      Xrouter splits messages longer than 61 characters into separate 
      messages no longer than 61 characters (excluding ID) each.

      All APRS facilities are an ongoing experiment and may be liable to 
      change as development continues.  The so-called "APRS Protocol 
      Reference" is rather fuzzy in places!






      XROUTER Sysop Manual Revision 2.0                          Page 48
      APRS Internet Gateway


      APRS Internet Gateway (IGATE)
      =============================

      Xrouter has an inbuilt APRS Igate, which allows received APRS packets 
      to be gated to an Internet APRS server, and packets from the server to 
      be gated to RF.  You will need an APRS port and an internet connection 
      to take advantage of this.

      Igate operation is controlled mainly by configuration settings in file 
      IGATE.CFG.  If the file isn't present, the igate daemon can be 
      started, but nothing will happen.  The file includes keywords which 
      specify the Internet APRS server addresses, various timers controlling 
      connections, the filtering rules for gating packets, and the logging 
      options.  In addition to the settings in IGATE.CFG there are a few in 
      XROUTER.CFG, which control whether or not the Igate daemon starts at 
      boot-up, and which ports may send to and receive from the Internet.

      Choosing and specifying Internet Servers
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      The choice of server, and the TCP port to use on that server, depends 
      on where in the world you are located, and what sort of data you're 
      interested in. There are several types of server, and the services 
      they provide aren't always comparable.

      Some servers provide a "raw" data feed containing APRS activity from 
      all over the world, which can amount to a considerable volume.  Some 
      also provide "filtered" or "local" feeds, e.g. Ohio-only or messages-
      only.  There's no point in connecting to a "raw" feed if there is a 
      "local" feed available, as you will merely be wasting CPU time and 
      internet bandwidth downloading stuff you are going to discard.  APRS 
      message-only feeds tend to be on port 1314, whereas "raw" feeds tend 
      to be on port 10151, or 2023 if it's a Ahub server.

      Using a browser to connect to http://server_address:14501 sometimes 
      produces a status page containing useful server addresses. You could 
      start your search at "first.aprs.net".  There are various web sites 
      which may assist your search, e.g. "www.dididahdahdidit.com/" (what a 
      difficult and error-prone address to type!).   I suggest you ask 
      questions on the APRS newsgroups if you are unsure, but if you're 
      reading this file you probably know more than me about APRS anyway :-)

      In IGATE.CFG you may specify as many servers as you wish, each on a 
      separate line with the following format:

               SERVER <address>:<port>

               e.g. SERVER 128.196.58.1:1314

      The current version doesn't support name resolution, so you MUST 
      supply the IP address not the domain name. The port number must be 
      separated from the IP address by a colon so that the combined 
      address:port forms a contiguous string of characters with no spaces.










      XROUTER Sysop Manual Revision 2.0                          Page 49
      APRS Internet Gateway


      The servers are tried in rotation, starting with the first on the 
      list. If a connection attempt fails, or the link subsequently closes, 
      the next server is tried.  When the end of the list is reached it 
      starts all over again at the first one.  This is probably a 
      crummy algorithm, whose only merit is that it distributes the load 
      across various servers, and I may have revised it by the time you read 
      this!  The behavious is modified by various timer settings - see 
      below.

      You may find out which server is currently in use by using the "TCP 
      STATUS" command.


      Connection Timers
      ~~~~~~~~~~~~~~~~~
      There are various keywords which may be used in IGATE.CFG to control 
      the timings associated with connections to the Internet servers, and 
      they are as follows:

          WAIT <secs> -- Time to wait for connection establishment.

          Specifies the number of seconds to wait for connection after 
          sending a connect request.  If not specified, the default is 60.  
          If you have a permanent Internet connection, you may wish to set a 
          lower value, but if you're using dialup you may wish to make it 
          longer, e.g. 90 secs to allow time for dialling and modem 
          negotiation.  If no response is received from the server within 
          the WAIT interval, the next server in the SERVER list will be 
          tried.

          PAUSE <secs> -- Interval between sucessive tries.

          Specifies the number of seconds to wait between sucessive 
          connection attempts to the same server.  Default is 60 secs.  If a 
          server goes down or fails to respond, there's no point in 
          aggressively trying to connect. For one thing, if you have 
          connection logging enabled you will build a big logfile! This 
          timer is mainly of use when you have only one server in you 
          SERVERS list, or when several servers go down.

          MAXTRIES <n> -- No. of failed connect attempts allowed.

          If a server consistently fails to respond to connect attempts, 
          there's a good chance it has gone temporarily or permanently off 
          line.  The MAXTRIES value specifies the maximum number of failed 
          connect attempts allowed before a server is ignored, and the 
          default is 10.  If the limit is reached, that particular server 
          will not be retried until the SKIP interval (see below) expires.

          SKIP <secs> -- "Blacklist" interval.

          Specifies the amount of time for which a server will not be tried 
          after MAXTRIES failed connect attempts.  This effectively removes 
          a server from the list for the SKIP interval, after which it is 
          placed back on the list. Default is 3600 secs (1 hour).







      XROUTER Sysop Manual Revision 2.0                          Page 50
      APRS Internet Gateway


      Packet Filtering
      ~~~~~~~~~~~~~~~~
      It is unlikely that you will find an internet server which 
      provides a feed tailored exactly to your needs, so the Igate 
      contains powerful packet filters, which can be applied to traffic 
      gated in both directions.  The filtering rules are specified in 
      IGATE.CFG using IFILTER (internet to packet) and PFILTER (Packet to 
      internet) statements, the general form of which are as follows:

               xFILTER <from_call> <to_call> <text>

      Each field may include the following wildcards:

               *     Matches zero or more characters.
               ?     Matches any single character.
               #     Matches a single digit.
               @     Matches a single alphabetic character.
               \     Escape - interpret next character literally.

               The '*' character may only be used at the end of a field.

      For example:  "IFILTER G#@@@*  *  :*" will accept from the internet 
      feed only those packets sent by valid G0 to G9 + 3 letter callsigns, 
      addressed to anyone, which contain APRS messages.

      The '\' (escape) character causes the next character to be interpreted 
      literally, instead of as a wildcard, e.g. "\*" will match '*' and "\\" 
      will match '\'.  A caret '^' at the start of any field will invert the 
      sense of the whole test, causing matching packets to be REJECTED, e.g. 

               IFILTER ^M7ABC  *    *
               IFILTER *       ^APZ244*   !*

      The first statement will reject all packets from M7ABC, and the second 
      will reject all static position reports sent to the destination APZ244 
      (e.g. if they can't be trusted).  Rejection statements MUST be placed 
      at the beginning of the filter rules, before any catch-alls.

      The maximum length of each field (pattern) is currently 10 characters.  
      If you feel this isn't enough, let me know.  There is no limit to the 
      number of xFILTER statements you may specify.  If no rules are 
      specified, nothing will be gated.

      All valid APRS and UI-View packets (except 3rd party packets, and 
      those with NOGATE or RFONLY somewhere in the digi path) received 
      by the router are offered to the PFILTER, providing the appropriate 
      DIGIFLAGS are set (see below). Mic-E packets are decoded to text 
      before being offered to the Internet servers because they may contain 
      characters which won't pass through the servers.  It's debateable 
      whether or not this ought to happen - if you know better, let me know.  
      This decoding takes place before filtering.

      You should be VERY careful when designing your fiter rules, as you 
      could quite easily overload the RF channel by attempting to gate too 
      much data to it.  There is little point in gating non-local data to 
      RF, so I suggest as a start you include only traffic FROM your 
      compatriots, and TO them (to include UI-VIEW messages).





      XROUTER Sysop Manual Revision 2.0                          Page 51
      APRS Internet Gateway


      Controlling gating direction / port(s)
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Regardless of any other settings, an Xrouter port will not broadcast 
      packets received from the Internet, or offer received packets to the 
      internet, unless the appropriate bits are set in the port DIGIFLAG.  
      You should add the following values:

                64   Enable gating from Packet to Internet.
               128   Enable gating from Internet to Packet.

      Packets accepted (i.e. passing IFILTER) from the Internet will be 
      broadcast on ALL ports which have bit 7 of DIGIFLAG set, so be 
      careful not to lazily set a value of 255!


      Activity logging
      ~~~~~~~~~~~~~~~~
      Igate activity can be recorded in the file ./LOG/IGATE.LOG by 
      including a LOG keyword with non zero argument in IGATE.CFG. The 
      argument is a number made up as follows:

               1     Record Igate daemon start and stop events.
               2     Record Inet server connections / disconnections.
               4     Record frames sent from Internet to Packet.
               8     Record frames sent from Packet to Internet.

      The "record frames" options can generate a lot of data, so they're 
      intended mainly for testing purposes, e.g. making sure your filters 
      are correctly set.  If the logfile grows too big, DOS may take an 
      appreciable time to perform the disk writes if you aren't running a 
      write cache.  This might affect router performance, so you are advised 
      to periodically rename or otherwise remove the logfile, allowing a 
      fresh one to start.


      Starting and stopping the Igate daemon
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      The daemon may be started and stopped at any time with the commands 
      "START IGATE" and "STOP IGATE".  If the daemon is already running, 
      attempting to restart it will simply produce an error message, as will 
      trying to stop it if already stopped.

      The IGATE.CFG file is re-read each time the daemon is started, so it 
      is simple to change the configuration simply by editing the file using 
      the PZTDOS line editor, then re-starting the daemon.  Editing can take 
      place while the daemon is running because the file is only read at 
      start up.

      The daemon may be started automatically when Xrouter boots, by 
      including the line IGATE=1 somewhere in the "global" section of 
      XROUTER.CFG.











      XROUTER Sysop Manual Revision 2.0                          Page 52
      APRS Internet Gateway


      Getting an Internet Connection
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      None of the above is of any use if you haven't got some means of 
      getting a connection to an Internet APRS server.  For the moment, you 
      have no choice but to use an external router to make the actual 
      connection, unless you are fortunate enough to have an "always-on" net 
      connection with a spare static IP address.  Windows 98 (and presumably 
      Linux) can be configured to "share" an internet connection, be it of 
      the "dial-up" or "always-on" type.

      I chose to use Windows 98 with a dial-up connection, since the machine 
      was already in use for my email and web activities.  You will need an 
      Ethernet connection between your Windows machine and your Xrouter 
      machine (unless win98 supports non-dialup SLIP ??).  If Xrouter is 
      located on the Windows machine, you will need two Ethernet cards in 
      that machine, as it can't share a card - sorry :-(

      You will also need to install (if not already installed) Windows 
      "Internet Connection Sharing" (ICS).  A wizard will guide you 
      painlessly through the process of screwing up your machine :-) No, 
      seriously I think my troubles arose because I already had several IP 
      addresses in use on that machine and was unsure what I was doing.  If 
      you know anything about ICS, please share your wisdom to make this 
      document more useful! (I know next to nothing about Windows)

      Basically, ICS configures your windows machine's Ethernet port with 
      the "private" IP address 192.168.0.1, and you simply configure other 
      computers on the Ethernet LAN to use any address between 192.168.0.2 
      and 192.168.0.255. You should choose the option to use a static IP 
      address not a "server assigned" address.

      On the Xrouter machine you need to install a suitable Ethernet card 
      driver plus ETHDRV.EXE, and set up an Ethernet port (see XROUTER.DOC 
      for details).  The port should be configured to use one of the 
      "private" IP addresses other than 192.168.0.1 - you may do this by 
      setting the "global" IP address and overriding it on the radio ports, 
      or by setting only the Ethernet port to use the private address.

      Finally, you need to set up IP routing to and from the Windows 
      machine.  If the wizard has done its job properly, Windows 98 will 
      automatically route all "private" IP packets to the ethernet port, and 
      all you have to do is tell Xrouter how to route stuff to Windows.  I 
      can't be precise on this, since your requirements will be different to 
      mine. Basically you must arrange to route Iteret-bound packets towards 
      192.168.0.1 on the Ethernet port.  You can either do this using a 
      ROUTE DEFAULT or using ROUTE ADD's for specific addresses.

      In my case I have ROUTE ADD statements which route radio-reachable 44-
      land datagrams out on the appropriate radio port.  I then have a 
      "ROUTE ADD 192.168.0.0/24 * 14 d" which allows Xrouter to send 
      datagrams directly to my other machines on port 14 (the ethernet LAN), 
      a "ROUTE ADD 44.0.0.0/8 x x" which routes the rest of 44-land to my 
      neighbour, and finally a "ROUTE DEFAULT 14 192.168.0.1 d" which routes 
      everything else to the Windows machine for sending to the Internet.

      If it doesn't work, it's because you haven't configured it correctly!






      XROUTER Sysop Manual Revision 2.0                          Page 53
      APRS Internet Gateway


      AXIP Tunnelling
      AXIP TUNNELLING
      ===============

      AXIP is AX25 "encapsulated" within IP datagrams.  This enables AX25 
      systems to communicate with each other via TCP/IP networks such as the 
      Internet.  At present you may only do this if you and your AXIP peers 
      have STATIC IP addresses.  It will not work via firewalls or internet 
      connection sharing systems which use dynamic address translation.

      In order to set up an AXIP wormhole you need to do the following:

      1)  Find yourself one or more AXIP partners with STATIC ip addresses.

      2)  Set up and test IP routing between you and your partners.
          If you dont have reliable IP routing there's no point in 
          proceeding!

      3)  Add an AXIP interface to XROUTER.CFG as follows:


          INTERFACE=7
              TYPE=AXIP
              MTU=256
          ENDINTERFACE

          (Choose the interface number to suit yourself).

          This interface can support up to 16 AXIP ports, or you may define 
          more than one AXIP interface if your ports need differing MTU's.

          Only TYPE=AXIP and MTU= are required, all other parameters will be 
          ignored (at present).

      4) For each AXIP partner, add an AXIP port similar to this:

          PORT=5
              ID=AXIP link with WA3DXX
              INTERFACENUM=7
              CHANNEL=A
              IPADDRESS=63.31.194.21
              IPLINK=55.73.88.69
          ENDPORT

          You must specify at least ID, INTERFACENUM, CHANNEL and IPLINK.  
          IPADDRESS is the IP address you want to use at your end of the 
          link, if different from the router's main address, and IPLINK is 
          the remost host's IP address.  The IP "protocol number" is fixed 
          at 93 (decimal).

          MAC parameters such as TXDELAY, TXTAIL, SLOTTIME, PERSIST, 
          FULLDUP, SOFTDCD etc. are meaningless for AXIP, but FRACK, 
          RESPTIME, PACLEN, MAXFRAME, QUALITY etc. operate as normal.

      5)  Have fun!







      XROUTER Sysop Manual Revision 2.0                          Page 54
      AXUDP Tunnelling


      AXUDP TUNNELLING
      ================

      AXUDP is AX25 "encapsulated" within UDP datagrams.  This enables AX25 
      systems to communicate with each other via TCP/IP networks such as the 
      Internet.  At present you may only do this if you and your AXUDP peers 
      have STATIC IP addresses.  It will not work via firewalls or internet 
      connection sharing systems which use dynamic address translation.
        
      AXUDP is less efficient than AXIP, as there is an extra protocol 
      overhead due to the UDP layer between the IP and the AX25, and I don't 
      really see any advantage - but I was asked to support it!

      In order to set up an AXUDP wormhole you need to do the following:

      1)  Find yourself one or more AXUDP partners with STATIC ip addresses.

      2)  Set up and test IP routing between you and your partners.
          If you dont have reliable IP routing there's no point in 
          proceeding!

      3)  Add an AXUDP interface to XROUTER.CFG as follows:

          INTERFACE=9
              TYPE=AXUDP
              MTU=256
          ENDINTERFACE

          (Choose the interface number to suit yourself).

          This interface can support up to 16 AXUDP ports.

      4) For each AXUDP partner, add an AXUDP port similar to this:

          PORT=8
              ID=AXUDP link with VK1UDP
              INTERFACENUM=9
              CHANNEL=A
              IPADDRESS=136.65.91.77
              UDPLOCAL=93
              IPLINK=27.69.88.73
              UDPREMOTE=93
          ENDPORT

          You must specify at least ID, INTERFACENUM, CHANNEL and IPLINK.  
          IPADDRESS is the IP address you want to use at your end of the 
          link, if different from the router's main address, and IPLINK is 
          the remost host's IP address.

          UDPLOCAL and UDPREMOTE are the UDP port numbers for each end of 
          the link, and if omitted they default to 93.

          MAC parameters such as TXDELAY, TXTAIL, SLOTTIME, PERSIST, 
          FULLDUP, SOFTDCD etc. are meaningless for AXUDP, but FRACK, 
          RESPTIME, PACLEN, MAXFRAME, QUALITY etc. operate as normal.

      5)  Try it!





      XROUTER Sysop Manual Revision 2.0                          Page 55
      File Formats


                                   FILE FORMATS
                                   ============

      All configuration files are commented to aid setting up, but I will 
      document them in more detail here too, just in case you damage a file 
      or wish to study a paper copy in the garden!  They are presented in 
      alphabetical order....

      DOMAIN.SYS
      ~~~~~~~~~~
      This optional file is used by Xrouter to resolve host names such as 
      "g8jvm.ampr.org" and aliases such as "lgsbbs" into their corresponding 
      IP addresses.  If not present, and an external DNS is not specified, 
      you will have to enter the full IP address of any target host when 
      using the PING, TELNET, TTY, and FINGER commands.  It is read every 
      time an address needs resolving, so any changes you make will take 
      effect immediately.

      Although DOMAIN.SYS was originally designed to be simpler than the 
      more standard DOMAIN.TXT format, Xrouter is capable of understanding 
      both formats, so you may use an existing DOMAIN.TXT simply by renaming 
      it to DOMAIN.SYS.

      Name resolution using an external DNS (Domain Name Server), if 
      enabled, takes a finite time so you should add entries to this file 
      for frequently contacted hosts whose addresses are stable.  Externally 
      resolved names are added automatically to DOMAIN.SYS at regular 
      intervals, and expired entries are purged.

      Each host is listed on a separate line.  Each field should be 
      separated by one or more spaces or tabs.  Comments, spaces, tabs and 
      blank lines are permissible to aid clarity.  The records are case-
      insensitive, but most people use lower case for hostnames.  The format 
      of each record is as follows:

             <hostname> [ttl] IN A <ip-address>

             <alias>    [ttl] IN CNAME <hostname>
             
             <hostname> [ttl] IN MX [pref] <hostname>

      The first form maps a hostname to an IP address, and the second and 
      third forms map an alternative hostname to a host already defined.  

      For example, the IP address for the GB7PZT mailbox is 44.131.91.2 so 
      it would have an Internet Address (IN A) record like so:

             gb7pzt  IN   A    44.131.91.2

      But gb7pzt is also known locally as "pztbbs", and "kdrbbs".  While 
      there is nothing to stop you adding further "IN A" records for gb7pzt, 
      one for each alias, but you could instead use the second form shown 
      above, the CNAME or "Canonical Name" record like so:

             pztbbs. IN CNAME  gb7pzt
             kdrbbs. IN CNAME  gb7pzt






      XROUTER Sysop Manual Revision 2.0                          Page 56
      File Formats


      Thus if the user types "TEL pztbbs" or "TEL kdrbbs", the 
      gb7pzt record is used.  This removes the need to keep repeating the IP 
      address in multiple "A" records, and makes it easier if the IP address 
      is changed.

      The MX or "Mail Exchange" records are usually used for defining 
      alternate names for mail servers, but as Xrouter is not concerned 
      with mail you can use them in the same way as CNAME entries, although 
      there would be no point in doing so. The format of the additional 
      records would be:

             pztbbs.   IN   MX   gb7pzt
             kdrbbs.   IN   MX   gb7pzt

      The optional "preference" field of MX records is ignored.  The DNS 
      server doesn't currently respond to MX queries, but will eventually do 
      so.

      The optional [ttl] field in all types of ebntry is the "time to live" 
      of the entry in seconds, used to expire records whose addresses are 
      liable to change.  If omitted or set to zero, the record has an 
      unlimited lifetime. 

      In order to simplify the file, the ".ampr.org" is usually omitted from 
      the records, and appended automatically when the file is read.  
      However, hostnames which contain or end with a dot will not be 
      extended in this manner.  Thus "gb7pzt" will be extended to 
      "gb7pzt.ampr.org", whereas "lgs." and "ns.cyberphile.co.uk" will be 
      left alone.

































      XROUTER Sysop Manual Revision 2.0                          Page 57
      File Formats


      IPROUTE.SYS
      ~~~~~~~~~~~
      This optional file defines how IP datagrams should be routed, and is 
      not required if you don't intend to route IP traffic.  It is read only 
      at boot-up, so if you make changes to it, they won't have any effect 
      until the next reboot.  If present, it saves you having to enter all 
      the IP routing by hand.  In order to keep the number of files down, 
      this file also contains the permanent ARP (Address Resolution 
      Protocol) entries.

      If you are familiar with IP you can skip this paragraph....  All IP 
      addresses consist of a 32 bit binary number, which is composed of four 
      8 bit binary numbers.  For clarity they are usually expressed as four 
      decimal numbers separated by dots, the so called "dotted quad" form, 
      for example 44.131.91.2 is the address for gb7pzt.  Each of the 
      numbers which make up the quad can range from 0 to 255, i.e. 256 in 
      all.  0, 128 and 255 are usually reserved for special purposes.  The 
      most significant number identifies the "network" within the whole 
      Internet.  44 is allocated to Amateur Packet Radio, or "ampr.org".   
      Within ampr, the second number identifies the country, and in our 
      example 131 is the code for UK.  The third number identifies the 
      "region", and in our example region 91 is North Worcestershire.  The 
      last number identifies up to 256 separate users within the region.   
      The addresses within a region are sometimes allocated on a first come 
      first served" basis, or sometimes in groups to allow further 
      subdivision of a region.  Unlike NetRom, IP routing has to be 
      explicitly defined by the sysop, in our case using entries in 
      IPROUTE.SYS.

      Each record should be on a separate line, and there should be one or 
      more spaces or tabs between each field.  Records are not case 
      sensitive.  Comments are allowed in the file, providing they are on a 
      line beginning with a semicolon.

      All IP routing records begin with the word "route", and there are two 
      types.  A "Route default" entry defines how datagrams should be routed 
      if no other route can be found.  "Route add" entries add routes to the 
      table (what a surprise! ;-)

      The general form of a route default entry is:

             ROUTE DEFAULT <portnum> [<gateway> [<d|v|n|e>] ]

      <portnum>  is the port number on which to route the datagram.

      <gateway>  is the IP address of the neighbouring router to whom
                 datagrams should be routed if there is no other applicable 
                 route.  If this address is not specified, the destination 
                 will be tried directly on the default port.

      <d|v|n|e>  Mode: (d)atagram, (v)irtual circuit, (n)etrom or (e)ncap.
                 If omitted, the default is "Datagram".  Datagram mode 
                 should be used on links with low loss rates.  Better 
                 performance can be obtained on lossy links by using Virtual 
                 Circuit mode.  Netrom mode is inefficient, but can "tunnel" 
                 datagrams across non-ip parts of the network.  Encap mode 
                 is used for IP/IP encapsulation, i.e. sending 44-net 
                 datagrams across the internet by "wrapping" them in 
                 datagrams with internet addresses.



      XROUTER Sysop Manual Revision 2.0                          Page 58
      File Formats



      At least a port number must be specified. A typical entry would look 
      like:

             route default 11 44.131.90.6 d

      which means "route all unknown destinations via neighbouring router 
      44.131.90.6, on port 11, using datagram mode".

      The general form of the route add entry is:

             ROUTE ADD <host/bits> <gateway> <portnum> <d|v|n|e>

      <host>     is the target host IP address in dotted quad form.

      <bits>     is the number of bits to be matched (subnet mask)

      If the <gateway> address is 0.0.0.0 or just "*", the destination will 
      be tried direct on the specified port.

      When making routing decisions, only the specified number of bits (0-
      32) of the address are compared, the remainder being ignored.  This 
      allows a group of IP addresses to be matched by a single entry.  For 
      instance, a setting of 24 would cause only the most significant 24 
      bits of the address to be compared, allowing a whole region (256 
      addresses) to be routed to a single gateway.  Important - You must not 
      omit the subnet mask!

      A typical routing entry would look like this:

             route add 44.131.93.0/24   44.131.93.240   5  d

      which would route all region 93 traffic (44.131.93.0 - 44.131.93.255) 
      to the gateway 44.131.93.240 on port 5 using datagram mode.

      You may specify more than one route to the same group of addresses 
      using different bit masks.  For each address within the group, Xrouter 
      will choose the route with the highest number of matching bits.


      ARP entries are responsible for mapping gateway IP addresses to 
      "hardware" (i.e. AX25 or Ethernet) addresses.  In order to send an IP 
      datagram over an AX25 or Ethernet network, it must be "wrapped" in an 
      AX25, Ethernet, or Netrom packet, and that packet will need a 
      destination address appropriate to that network.  For example, if I 
      want to route a datagram to 44.131.91.2 it must be wrapped in an AX25 
      packet addressed to GB7PZT-5.

      The system *will* sometimes work without any ARP entries, due to the 
      process of "ARP resolution", whereby a router can make a broadcast 
      asking adjacent systems if they know the hardware address for a given 
      IP address, but this process takes time and the adjacent routers may 
      not know the answer.  Thus it is advisable at least to have one ARP 
      entry for each of your direct RF neighbours.  The general form of an 
      ARP entry is:







      XROUTER Sysop Manual Revision 2.0                          Page 59
      File Formats


         ARP ADD <host> <ax25 | ether | netrom> <callsign | ether_address>

         or

         ARP PUBLISH <host> <ax25 | ether | netrom> <callsign | ethaddr>

      Example ARP entries:

      This one causes datagrams bound for 44.131.90.6 to be wrapped in AX25 
      packets addressed to GB7IPT-9:

             arp add 44.131.90.6  ax25  GB7IPT-9

      Whereas the following will send datagrams bound for 44.131.95.7 to the 
      G7GHP-5 system via the GB7DIG digipeater.  Up to 8 digipeaters may be 
      used in a single comma-delimited string:

             arp add 44.131.95.7  ax25  G7GHP-5,GB7DIG

      And this one will wrap datagrams destined for 44.131.24.1 in Netrom 
      packets addressed to a distant system GB7CX:

             arp add 44.131.24.1  netrom  GB7CX

      The following will wrap the datagrams in ethernet packets.
             arp add 44.131.91.9  ether  00:00:1B:2C:04:81

      ARP PUBLISH is used in cases where one system is "hidden" behind 
      another, and allows other systems to discover the correct hardware 
      address to use.

      For example, my 44.131.91.127 system is only reachable via my main 
      router 44.131.91.245.  Unless all the local systems were specifically 
      configured to route to 91.127 via 91.245, they wouldn't know how to do 
      it.

      Including the entry: "arp publish 44.131.91.127 ax25 g8pzt" on 
      the 91.245 (g8pzt) router causes it to respond to anyone who asks for 
      the hardware address for 91.127, giving its own ax25 address.























      XROUTER Sysop Manual Revision 2.0                          Page 60
      File Formats


      PASSWORD.SYS
      ~~~~~~~~~~~~
      This optional file contains the passwords for remote sysop access.  If 
      not present, remote sysop access will not be possible.

      There should be one entry for each remote sysop.  Each entry should be 
      on a separate line and consists of two fields separated by one or more 
      spaces or tabs.  The first field is the remote sysop's callsign 
      (without an SSID) and the second field is the corresponding password 
      string.  For example:

             G8PZT   thisispaulaspassword
             G1LOA   thisisrobertspassword

      The fields are not case sensitive, and the passwords can be anything 
      you like, with a couple of limitations, namely PASSWORDS MUST NOT 
      CONTAIN SPACES, and the TOTAL LINE LENGTH MUST NOT EXCEED 80 
      CHARACTERS.  You should try to choose a password that you can easily 
      remember, but that others would find hard to guess.  It should 
      preferably be longer than 5 characters, to reduce the chances of 
      someone guessing it.  The longer you make it, the more secure it will 
      be.  A random string is the most secure, because even if someone works 
      out part of it, they won't be able to guess the remainder.

      You may have a different password for each sysop, or you might choose 
      to give everyone the same password.  Obviously the former is the most 
      secure, but it's completely up to you.



































      XROUTER Sysop Manual Revision 2.0                          Page 61
      File Formats


      XROUTER.CFG
      ~~~~~~~~~~~
      This file is mandatory, and contains most of the configuration info 
      for Xrouter.  It is read only when the program starts.

      It consists of entries of the general form <keyword>=<value>, each on 
      a separate line.  Keywords are not case sensitive, and in general they 
      may be in any order, but interfaces MUST be defined before ports.  
      Blank lines are allowed, and comment lines must begin with a semicolon 
      (;) in the leftmost column.  Lines must not exceed 255 characters.
       
      Note that some timings are in millisecs, some are secs.

      The following example is for illustration purposes only, and I have 
      "borrowed" a few callsigns for use in the EXCLUDE, ROUTES and 
      VALIDCALLS fields.  This does not represent my setup.

      ; XROUTER.CFG  Configuration file for Xrouter version 1.72
      ; ========================================================
      ;
      ; The XROUTER.EXE program reads this file only when it starts.
      ;
      ; Keywords can be in almost any order, but interfaces MUST be defined
      ; before ports.
      ;
      ; Note some timings are in millisecs, some are secs.
      ;
      ; Blank lines are allowed.  Comment lines must begin with semicolon in
      ; the leftmost column.  Lines must not exceed 255 characters in length.
      ;
      ; This is a sample, to illustrate all the options and typical settings.
      ; You *must* edit it to your requirements!  I suggest you de-activate
      ; the bits you don't need by putting semicolons at the beginning of
      ; the lines.
      ;-------------------------------------------------------------------
      ;
      ;       Interrupt number to use for the BPQ-compatible host interface.
      ;       The host interface may only be used in a Windows 95 or Desqview
      ;       environment. To use it you must load PZTSOCK.EXE before Windows
      ;       then run XROUTER.EXE and each application within separate dos
      ;       windows.
      ;       If you are not using host interface, comment this parameter out,
      ;       or set it to 0.
      ;
      ;HOSTINTERRUPT=127
      ;
      ;       Station Identification:
      ;       ~~~~~~~~~~~~~~~~~~~~~~~
      ;
      ;       Node callsign: Up to 6 chars plus optional SSID between 1 and 15
      ;       This is the callsign used for all L3/4 operations, and the default
      ;       for L2 operations on each port.
      ;
      NODECALL=G8PZT-6
      ;
      ;       Node alias: Up to 6 characters.
      ;       Aliases beginning with "#" are not displayed in node lists, and
      ;       are typically used for "linking only" nodes.
      ;       You should preferably choose an alias which is geographically
      ;       relevant beyond your own local area, for example BRSTOL, LEEDS,


      XROUTER Sysop Manual Revision 2.0                          Page 62
      File Formats


      ;       or BRUM are good, because users can recognise them in node tables,
      ;       whereas GAB1 and WBA are bad - where on earth are they?
      ;
      NODEALIAS=KDRMIN
      ;
      ;       Callsign for console operations.  You can set this independantly
      ;       of NODECALL or you may set them the same.  You may at any time
      ;       override this callsign using the "linked as" command.
      ;
      CONSOLECALL=G8PZT
      ;
      ;       IP address for IP routing.  Your local IP co-ordinator should
      ;       be able to assign you one.  If you aren't routing IP (shame on
      ;       you!) comment this out or set it to 0.0.0.0
      ;       Xrouter normally uses a single IP address for all ports, but
      ;       you may specify additional addresses for each port.
      ;       (If you are routing, remember to define routes and hostnames in
      ;       IPROUTE.SYS and DOMAIN.SYS respectively)
      ;
      IPADDRESS=44.131.91.4
      ;
      ;       IP address of primary Domain Name Server, which will be consulted
      ;       when trying to resolve hostnames which aren't in DOMAIN.SYS
      ;       If not specified, resolution will use DOMAIN.SYS only.
      ;
      ; DNS=62.31.176.115
      ;
      ;       Host name for TCP (optional).  If you omit this, it will default
      ;       to "NODEALIAS:NODECALL".
      ;
      HOSTNAME=g8pzt.ampr.org
      ;
      ;       Station location (32 chars max).
      ;
      QTH=Kidderminster, Worc's
      ;
      ;       IGATE controls whether or not the APRS Packet<>internet gateway
      ;       is started at boot-up. A zero value (default) doesn't start the
      ;       igate (but it can be started anytime using "start igate"), and
      ;       a non-zero value starts it immediately.
      ;       Leave this commented out, or set to zero if you aren't running
      ;       a gateway.
      ;
      ; IGATE=1
      ;
      ;       Chat Server parameters:
      ;       ~~~~~~~~~~~~~~~~~~~~~~~
      ;       Note - the chat server is an integral part of the system and
      ;       cannot be disabled.  You may prevent it from being directly
      ;       connectible (if you wish to deprive users of facilities) by
      ;       setting CHATCALL and CHATALIAS the same as NODECALL and
      ;       NODEALIAS, but it will still be available to all users via
      ;       the "chat" command.
      ;
      ;       Chat server callsign. This may be the same as the nodecall, but
      ;       must use a different SSID, otherwise the chat server will not
      ;       be directly conectible.
      ;
      CHATCALL=G8PZT-8
      ;


      XROUTER Sysop Manual Revision 2.0                          Page 63
      File Formats


      ;       Alias for chat server (6 chars max).  I suggest this should end
      ;       with "CHT" and begin with something geographically relevant,
      ;       e.g. BHMCHT for Birmingham, LDSCHT for Leeds etc., so it can be
      ;       easily identified in node tables. If you specify the NODEALIAS
      ;       here, the chat server will not be directly connectible.
      ;
      CHATALIAS=KDRCHT
      ;
      ;       List of chat servers to which this server will link.  You must
      ;       supply the *callsigns* not the aliases.  Unilateral links are not
      ;       allowed - each partner in this list must place your CHATCALL in
      ;       their CHATLINKS list.  You may only use partners who are in your
      ;       node tables.  Xrouter chat servers may be interconnected with each
      ;       other, but *NOT* with "Ping-Pong Converse" servers.  Don't link
      ;       with distant servers - if the links are too slow your users will
      ;       get poor service. You may disable all outgoing and incoming
      ;       linking by omitting this line (or commenting it out).
      ;
      CHATLINKS=G9XOT-8,G7DTY-8
      ;
      ;       Chatcall quality to broadcast.  This can be used to limit the
      ;       visibility of your server to a reasonable geographical area,
      ;       and discourage chat server "dxing". Default is 255, i.e. chat
      ;       call is visible over same distance as nodecall.
      ;
      CHATQUAL=150
      ;
      ;       Optional Software Watchdog.  If you set a non-zero value here,
      ;       the router will attempt to reboot if the code goes into an
      ;       endless loop.  The value is in seconds.  Note: the watchdog
      ;       keeps running if you shell to DOS using Alt-F9, so keep shell
      ;       sessions short or the router will think you've forgotten to
      ;       return and will reboot!
      ;
      WATCHDOG=120
      ;
      ;       Address (hex) of parallel port used to drive hardware watchdog.
      ;       If you set a valid address here, the least significant data bit
      ;       of the port will be toggled several times per second if the router
      ;       is working correctly.  You can use external circuitry to detect
      ;       if the output stops toggling for more than a few seconds, and use
      ;       it to reboot the computer.  Note that your circuit must look for
      ;       an AC signal, because the output could lock up high or low if
      ;       the computer crashes.
      ;
      ; WATCHADDR=378
      ;
      ;       Address (hex) of parallel port used for controlling / monitoring
      ;       external hardware.  If this is the same as WATCHADDR, only the
      ;       most significant 7 bits will be available for control if the
      ;       hardware watchdog is enabled.
      ;
      ; CTRLADDR=378
      ;
      ;       IPTTL overrides the default "Time To Live" (TTL) of 255.  This
      ;       is the maximum number of hops an IP datagram can make before it
      ;       is killed.  A low value ensures that datgrams stuck in routing
      ;       loops will die quickly, but be aware that internet-routed packets
      ;       may easily make 20 or 30 hops, so don't set it too low.  Ignore
      ;       this if you haven't enabled IP routing.


      XROUTER Sysop Manual Revision 2.0                          Page 64
      File Formats


      ;
      ; IPTTL=100
      ;
      ;       Colour Settings:
      ;
      ;       Note the defaults have been chosen for their relative luminances
      ;       and contrast, and you may find certain combinations may not be
      ;       visible.
      ;
      ;       Permissible TEXT Colours are:
      ;
      ;       BLACK, NAVY, GREEN, CYAN,     RED, MAGENTA, BROWN, SILVER,
      ;       GREY,  BLUE, LIME, TURQUOISE, PINK, CERISE, YELLOW, WHITE
      ;
      ;       Permissible BACKGROUND colours are:
      ;
      ;       BLACK, NAVY, GREEN, CYAN, RED, MAGENTA, BROWN, SILVER
      ;
      ;
      ;       Top status bar background colour
      ;
      TopWinBgColor=CYAN
      ;
      ;       Top status bar text colour
      ;
      TopWinTxtColor=BLACK
      ;
      ;       Main window background colour
      ;
      MidWinBgColor=BLACK
      ;
      ;       Main window text colour
      ;
      MidWinTxtColor=WHITE
      ;
      ;       Command line background colour
      ;
      CmdWinBgColor=NAVY
      ;
      ;       Command line text colour
      ;
      CmdWinTxtColor=YELLOW
      ;
      ;       Bottom menu bar background colour
      ;
      BotWinBgColor=CYAN
      ;
      ;       Bottom menu bar text colour
      ;
      BotWinTxtColor=BLACK
      ;
      ;       Colour for displaying outgoing (transmitted) data
      ;
      TxColor=RED
      ;
      ;       Colour for displaying incoming (received) data
      ;
      RxColor=GREEN
      ;
      ;       Colour used for echoing Sysop's commands to main window.


      XROUTER Sysop Manual Revision 2.0                          Page 65
      File Formats


      ;
      EchoColor=YELLOW
      ;
      ;       The default console settings may be overridden on a per-console
      ;       basis by using an optional console definition block as shown
      ;       in the example below.  Only the values which differ from the
      ;       globals defined above need be specified. (You may note that I
      ;       have omitted some values from the gaudy example below).
      ;       Alternatively you may omit the globals and fully specify each
      ;       console.
      ;
      CONSOLE=3
              TOPWINBGCOLOR=SILVER
              MIDWINBGCOLOR=NAVY
              MIDWINTXTCOLOR=WHITE
              CMDWINBGCOLOR=GREEN
              BOTWINBGCOLOR=SILVER
              CONSOLECALL=G8PZT-4
              TXCOLOR=PINK
              RXCOLOR=LIME
      ENDCONSOLE
      ;
      ;       Screen saver interval in seconds. (0 = disable screen saver)
      ;
      SAVER=300
      ;
      ;       In the following section there is no limit on the number of
      ;       lines of text you can specify, but no line must exceed 255
      ;       characters.  The end of text is marked by *** on a line by itself.
      ;
      ;       This text is sent to an incoming caller.  CTFLAGS controls which
      ;       callers receive the text.
      ;
      CTEXT
      Kidderminster spur AX25/IP Router.
      Type ? for list of commands.
      ***
      ;
      ;       This text is the response to the plain 'I' command.
      ;       Note that you may create info "topics" which the user can access
      ;       using the "I <topic>" command.  Each topic should occupy a
      ;       seperate, appropriately named file in a directory named "INFO",
      ;       and the filenames must have the extension ".INF"
      ;
      INFOTEXT

      You are connected to part of the Kidderminster Packet Radio Network,
      run on behalf of Fourpak by Paula G8PZT.

      For information on Fourpak, contact G4FPV @ GB7GLO, or see the website at
      www.g8pzt.pwp.blueyonder.co.uk/fourpak/index.htm

      IP = 44.131.91.4 CHAT = G8PZT-8:KDRCHT or telnet port 3600

      This system runs Xrouter software - Type ? for list of commands.

      ***
      ;
      ;       This ID message is sent every IDINTERVAL.
      ;       Only the first line is sent.


      XROUTER Sysop Manual Revision 2.0                          Page 66
      File Formats


      ;       If your APRS-format static position code is included, starting
      ;       within the first 40 characters, you will be visible on APRS maps
      ;       and the MHeard function will record distances to heard stations.
      ;       The format is "!ddmm.mmN/dddmm.mmE#" where dd represents degrees
      ;       of latitude/longitude and mm.mm represents minutes to two decimal
      ;       places. "N" and "E" may be replaced by "S" and "W" as appropriate.
      ;
      IDTEXT
      !5224.00N/00215.00W# Kidderminster Router (KDRMIN) 44.131.91.4, Chat=KDRCHT:G8PZT-8
      ***
      ;
      ;       CTFLAGS controls which connects receive CTEXT.
      ;       Add together the following numbers:
      ;
      ;               1       Send ctext if connect is to Node/port alias
      ;               2       Send ctext if call is to Node/port call
      ;               4       Send ctext on L4 connects.
      ;               8       Send ctext to TCP (TELNET) callers.
      ;
      ;       Default is 9 (Alias and TCP only).
      ;
      ; CTFLAGS=1
      ;
      ;       You may have up to 5 "virtual" consoles, upon which the sysop
      ;       may conduct independent sessions.  Consoles are selected by
      ;       using Alt-1 through alt-5, or the left and right arrow keys.
      ;       Setting this to 0 disables all console activity, saving memory
      ;       and preventing the direct screen writes which upset Desqview.
      ;
      NUMCONSOLES=3           ; No. of virtual consoles (max=5)
      ;
      ;       Usage Log:
      ;       Setting LOG=1 will log all connects, disconnects, user-entered
      ;       commands and chat server activity. LOG=0 disables this function.
      ;       Make sure you have enough disk space.  Not recommended for long
      ;       term use on floppy-based machines.  Can be overridden by LOG
      ;       command at the command line.
      ;
      LOG=0
      ;
      ;       Overall limit on no. of concurrent sessions per user, across
      ;       all ports.  You might like to restrict "troublesome" users
      ;       this way! Max setting = default = 255
      ;
      SESSLIMIT=255
      ;
      ;       Optional flags to control the DX heard display (default=0)
      ;       Add together:
      ;
      ;               0       Show directly heard stations
      ;               1       Show digipeated stations
      ;
      DXFLAGS=0
      ;
      ;       L4 PARAMETERS
      ;       =============
      ;
      ;       (Don't adjust these unles you *really* understand all the
      ;       implications.  I've set them the same as BPQ)
      ;


      XROUTER Sysop Manual Revision 2.0                          Page 67
      File Formats


      ;       No. of seconds between L4 retries and L4 connect/disconnect
      ;       attempts.
      ;
      L4TIMEOUT=90
      ;
      ;       No. of seconds to delay a L4 ack in case further frames arrive.
      ;       10 secs is probably OK on normal AX25 links, but is excessive
      ;       on wire links.  However, the system will attempt to adjust this
      ;       this value to cope with prevailing conditions.
      ;
      L4DELAY=10
      ;
      ;       No. of unacked L4 frames allowed before we stop to await an
      ;       ack.
      ;
      L4WINDOW=4
      ;
      ;       No. of L4 connect/disconnect or retransmission attempts before
      ;       link is abandoned.
      ;
      L4RETRIES=3
      ;
      ;       L3 PARAMETERS
      ;       =============
      ;
      ;       Obsolescence counter initial value
      ;
      OBSINIT=5
      ;
      ;       Obsolescence counter minimum to broadcast
      ;
      OBSMIN=3
      ;
      NODESINTERVAL=60        ; Mins between nodes b/casts. (0 = disable)
      L3TTL=25                ; Max L3 hops
      ;
      ;       If this is set to 1, nodes whose alias begins with "#" will
      ;       not be displayed.
      ;
      HIDENODES=1
      ;
      ;       Minimum quality to add to node table.  This is the global value
      ;       which will apply to all ports unless overridden by a port minqual.
      ;       If not specified, the default is 10.
      ;
      MINQUAL=10
      ;
      ; =======================================================================
      ;       Ax25 Level 2 Global Parameters
      ; =======================================================================
      ;
      T3=180                  ; Link check interval (180 secs).
      IDLETIME=900            ; Idle link shutdown timer (900 secs)
      IDINTERVAL=15           ; Minutes between ID broadcasts (0=disable)
      ;
      ; =======================================================================
      ; Interface definitions - These MUST come before any port definitions
      ; =======================================================================
      ;
      ;       Unlike BPQ, you first define the interfaces with the outside world,


      XROUTER Sysop Manual Revision 2.0                          Page 68
      File Formats


      ;       then you define the ports that use those interfaces.  This is
      ;       because some interfaces (e.g. ASYNC) can support several channels
      ;       by use of the appropriate protocol (e.g. KISS).
      ;       Each interface has a number by which the ports identify it.  With
      ;       this method you may easily switch a whole group of ports onto a
      ;       different com port if you get a hardware breakdown for example.
      ;
      ;       TYPE:           ASYNC           ; Serial port
      ;                       LOOPBACK        ; For test purposes
      ;                       EXTERNAL        ; User supplied driver (as BPQ)
      ;                       BAYCOM          ; Baycom USCC card.
      ;                       RLC100          ; Thorcom RLC100 scc card.
      ;                       DRSI            ; DRSI scc card
      ;                       PC100           ; Pac-comm PC100/120 scc card
      ;                       PA0HZP          ; PA0HZP opto-scc card
      ;                       AXIP            ; For AX25 over IP wormhole
      ;                       AXUDP           ; For AX25 over UDP wormhole
      ;                       YAM             ; YAM 1200/2400/9600 modem
      ;
      ;       COM:            For ASYNC interfaces, this is the Com number (1 - 16)
      ;                       For SCC cards, it is the channel (1 - 4)
      ;
      ;       (For ASYNC interfaces, ioaddr and intnum are optional for com 1 - 4)
      ;       (For SCC cards, use same IOADDR and INTNUM for all channels on card)
      ;       IOADDR          IO device address (hex)
      ;       INTNUM          Interrupt number (decimal)
      ;
      ;       SPEED           The serial port baud rate for ASYNC interfaces, or
      ;                       the radio baud rate for HDLC cards.
      ;                       50-115200 bauds (Decimal). Don't include a comma.
      ;                       If set to zero (HDLC cards only), the modem must
      ;                       supply a x1 clock (TXC on RTXC pin, RXC on TRXC pin).
      ;
      ;
      ;       PROTOCOL:       Protocol to use on the interface:
      ;                       NONE    - Use this with type=loopback
      ;                       ASCII   - Remote consoles (TTY) via ASYNC ports
      ;                       SLIP    - For TCP/IP over wire
      ;                       KISS    - For driving KISS TNCs or wired links.
      ;                       NETROM  - Netrom backend serial link.
      ;                       ETHER   - Ethernet (requires ETHDRV.EXE)
      ;                       HDLC    - For use with SCC cards, and some EXTERNAL
      ;                                 drivers.
      ;
      ;       KISSOPTIONS:    Options for KISS interfaces only...
      ;                       POLLED   - For TNCs which send data to router only
      ;                                  when polled (e.g. BPQKISS).
      ;                       CHECKSUM - Packets protected by checksum.  You can
      ;                                  only use this option if your TNC supports it.
      ;                       ACKMODE  - The TNC tells the router when the packet
      ;                                  is transmitted, giving better timing.  Not
      ;                                  all TNC's support ackmode (BPQKISS does)
      ;                       SLAVE    - The router will act like a polled KISS TNC,
      ;                                  sending only when commanded to do so.
      ;                                  (Polled and slave are mutually exclusive)
      ;                       (BPQKISS eproms require POLLED and CHECKSUM.)
      ;
      ;       FLOW:           Flow control options (ASYNC interfaces only):
      ;                       0 = No flow control
      ;                       1 = Hardware (RTS/CTS) flow control


      XROUTER Sysop Manual Revision 2.0                          Page 69
      File Formats


      ;                       2 = Software (XON/XOFF) flow control (TTY link only)
      ;                       3 = Hardware AND software flow control
      ;                       If not specified, flow control defaults to NONE.
      ;                       Don't use Xon/Xoff with KISS.
      ;
      ;       MTU:            Specifies largest IP packet.  Setting this over 256
      ;                       will crash most BPQ nodes, or at the very least cause
      ;                       the packet to be lost.
      ;                       The router can handle single frames up to 1500 bytes,
      ;                       but BPQKISS TNC's are limited by 340 byte buffers.
      ;                       Received IP datagrams larger than MTU are
      ;                       fragmented to suit the outgoing link MTU.
      ;
      ;       Each interface definition starts with INTERFACE= and ends with
      ;       ENDINTERFACE.  The number following INTERFACE= is merely a label
      ;       allowing ports to refer to the interface.  It must be specified,
      ;       but the numbers themselves, and the order in which they're defined
      ;       are not important.
      ;
      INTERFACE=1
              TYPE=ASYNC
              COM=1
      ;       IOADDR=3F8
      ;       INTNUM=4
              SPEED=9600
              PROTOCOL=KISS
              KISSOPTIONS=CHECKSUM
              MTU=256
      ENDINTERFACE
      ;
      ;
      INTERFACE=2
              TYPE=ASYNC
              COM=2
              SPEED=4800
              PROTOCOL=KISS
              KISSOPTIONS=CHECKSUM
              MTU=256
      ENDINTERFACE
      ;
      ;
      ;       Example "loopback" interface, allowing self-connects without going
      ;       via an external system
      ;
      INTERFACE=3
              TYPE=LOOPBACK
              PROTOCOL=KISS
              MTU=576
      ENDINTERFACE
      ;
      ;       Example interface for drivers conforming to BPQ's "external"
      ;       spec such as baycom modem driver or ODIDRV ethernet driver.
      ;
      ;INTERFACE=4
      ;       TYPE=EXTERNAL           ; BPQ-compatible "External" driver
      ;       PROTOCOL=HDLC
      ;       INTNUM=96
      ;ENDINTERFACE
      ;
      ;       Example of an interface for TTY (remote console).  You would


      XROUTER Sysop Manual Revision 2.0                          Page 70
      File Formats


      ;       connect the com port via a null modem to a dumb terminal or
      ;       computer running a terminal emulator program, such as TELIX.
      ;
      ;INTERFACE=5
      ;       TYPE=ASYNC
      ;       COM=1
      ;       SPEED=19200
      ;       MTU=256
      ;       PROTOCOL=ASCII
      ;       Flow control is optional. Be VERY careful if you are monitoring
      ;       over a flow controlled link, because if you pause the display for
      ;       a long time, the data will back-up in the router until it becomes
      ;       strangled.
      ;       FLOW=2          ; Xon/xoff flow control
      ;ENDINTERFACE
      ;
      ;       Example of an interface for SCC card - in this case BAYCOM USCC.
      ;       You require one interface per channel on the card.
      ;       Use the same base address for all channels.
      ;
      ;INTERFACE=6
      ;       TYPE=BAYCOM
      ;       COM=2           ; Channel B
      ;       IOADDR=300      ; Card base address=300H
      ;       INTNUM=5        ; Card IRQ=5
      ;       SPEED=0         ; DF9IC 1200/9600 NRZ modem
      ;       PROTOCOL=HDLC   ; Only HDLC supported at present
      ;       MTU=256
      ;ENDINTERFACE
      ;
      ;       Example AXIP pseudo-interface. Only TYPE=AXIP and MTU required,
      ;       all other parameters will be ignored (at present).
      ;       At least one AXIP interface is needed if you intend to do AX over IP.
      ;       You can attach up to 16 ports to one AXIP interface, or you can
      ;       use separate interfaces if you need different MTU's.
      ;
      ;INTERFACE=7
      ;       TYPE=AXIP
      ;       MTU=256
      ;ENDINTERFACE
      ;
      ;       Example multi-protocol Ethernet interface using PZT's ETHDRV.EXE
      ;       driver. You must first load the appropriate driver for your
      ;       ethernet card (such as NE2000.COM), then ETHDRV.EXE, before
      ;       starting Xrouter.  See documentation for further details.
      ;       This interface will directly support IP, ARP and AX25.
      ;
      ;INTERFACE=8
      ;       TYPE=EXTERNAL
      ;       PROTOCOL=ETHER
      ;       MTU=1600
      ;       INTNUM=125
      ;ENDINTERFACE
      ;
      ;       Example AXUDP pseudo-interface. Apart from "TYPE=AXUDP" see the
      ;       comments relating to AXIP interface.
      ;
      ;INTERFACE=9
      ;       TYPE=AXUDP
      ;       MTU=256


      XROUTER Sysop Manual Revision 2.0                          Page 71
      File Formats


      ;ENDINTERFACE
      ;
      ;       Example YAM interface. One of these required for each YAM port.
      ;       Modem must be initialised with YAMINIT.EXE before starting Xrouter.
      ;
      ;INTERFACE=10
      ;       TYPE=YAM
      ;       COM=1           ; 1-4 or specify IOADDR/INTNUM instead
      ;       MTU=256
      ;       SPEED=1200      ; Radio speed
      ;       PROTOCOL=HDLC   ; Only HDLC supported at present
      ;ENDINTERFACE
      ;
      ;
      ;
      ; =====================================================================
      ; Port definitions. Each one begins with PORT=n and ends with ENDPORT
      ; =====================================================================
      ;
      ;       The number following PORT= is the port number as displayed by
      ;       the P[orts] command. They do not need to be sequential, you
      ;       may use any number, but you must define them in the order in
      ;       which they are to appear in the list.
      ;
      PORT=1
      ;
      ;       Text string to identify port on "PORTS" display
      ;
              ID=Link to KIDDER
      ;
      ;       Interfacenum specifies which interface this port should use.
      ;
              INTERFACENUM=1
      ;
      ;       The rest of these are optional, since there are defaults
      ;       built into the program.
      ;
      ;       PORTCALL=G8PZT-1        ; Additional L2 callsign for port
      ;       PORTALIAS=PZT1          ; Additional L2 alias for this port
      ;       PORTALIAS2=RELAY        ; Yet another alias, for APRS
              CHANNEL=A               ; Channel to use on interface (A - P)
      ;       PACLEN=160              ; Overrides global paclen for this port
              MAXFRAME=2              ; Only 1-7 at present.
      ;       TXDELAY=300             ; Tx keyup delay (millisecs)
      ;       TXTAIL=100              ; TX keydown delay (millisecs)
      ;                               ; Don't go less than 100 for SCC cards!
      ;       SLOTTIME=100            ; (millisecs)
      ;
      ;       I strongly recommend frack=7000 for 1200 bauds. (see manual)
      ;
              FRACK=7000              ; L2 T1 time (millisecs)
      ;
      ;       Resptime should be *at least* ((paclen * 10000) / RFbauds) millisecs,
      ;       where "paclen" is the other end's paclen, otherwise you will send
      ;       unnecessary poll frames. 1500 is OK for 1200 bauds with paclen=120
      ;
              RESPTIME=1500           ; L2 delayed ack T2 (millisecs)
      ;
      ;       Persist should be set to (255 / (no. of users on frequency)).
      ;       e.g. for a frequency with an average of 10 users on at any one


      XROUTER Sysop Manual Revision 2.0                          Page 72
      File Formats


      ;       time you'd set it to 25. Default is 64.
      ;
              PERSIST=64              ; Probability to transmit (0-255)
      ;
      ;       I can't see any point in setting retries more than 10, other than
      ;       for test purposes.  If you need so many retries it's a useless
      ;       link and you're just wasting everyone elses airtime.  The higher
      ;       you set this value, the longer users will have to wait to get
      ;       a "failure with" for a non-contactable destination.
      ;
              RETRIES=10
      ;
      ;       If you set fulldup=1, the router will transmit whenever it needs
      ;       to, without waiting for the other end to stop.  Used only for
      ;       hardware which is capable of simultaneous transmission and
      ;       reception, such as full duplex radio or wire links.
      ;
              FULLDUP=0               ; 1 = Full duplex, 0 = simplex/half duplex
      ;
      ;       Softdcd is used only by SCC cards.  If set to non-zero, the real
      ;       dcd will be ignored, and the driver will use the presence of
      ;       hdlc data as a DCD indication.  Using SOFTDCD with an open squelch
      ;       generates a *huge* interrupt loading on the PC, which may cause
      ;       degradation of performance, depending on the PC type, so I don't
      ;       recommend it.
      ;
      ;       SOFTDCD=0
      ;
      ;       Rfbauds defaults to 1200 if not specified.  It is intended for use
      ;       with "real" tnc's attached via RS232, because the RF baud rate is
      ;       usually different to the serial baud rate.  It simply helps the
      ;       router make timing decisions.
      ;
      ;       RFBAUDS=2400
      ;
      ;       L3ONLY=0                ; 1 = Ban L2 downlinks on this port.
      ;
      ;       Enable/disable the MHEARD function on this port. The number
      ;       specifies how many callsigns to maintain in the list. Set to 0
      ;       to disable MHEARD.
      ;
              MHEARD=10               ; Mheard enabled, 10 calls

      ;       MHFLAGS controls which callsigns are recorded in the MH list,
      ;       and defaults to 255 (show everything).
      ;       The number is formed by adding the following values:
      ;
      ;               1       Show directly heard stations
      ;               2       Show directly heard digipeaters
      ;               4       Show digipeated stations
      ;
      ;       MHFLAGS=1       ; show directly heard stations only
      ;
      ;       Digipeat flag for this port.  0 = no digipeat.  Default=7
      ;       Add together:
      ;
      ;               1       Digipeat UI frames
      ;               2       Digipeat non-UI frames
      ;               4       Enable RELAY generic APRS digipeating
      ;               8       Enable TRACE and TRACEn-N APRS digipeating.


      XROUTER Sysop Manual Revision 2.0                          Page 73
      File Formats


      ;               16      Enable WIDE and WIDEn-N (Well sited stations only!)
      ;               64      Enable gating from Packet to Internet.
                      128     Enable gating from Internet to Packet.
      ;
              DIGIFLAG=7              ; Normal digi + RELAY.
      ;
      ;       DIGIPORT=0              ; Port to relay digipeated frames on
      ;                               ; (0=this port)
      ;
      ;       List of destinations for "broadcasting".
      ;       Received non-digipeater UI frames, addressed to one of these
      ;       destinations, will be re-broadcasted on all ports which have a
      ;       matching address in their BCAST list.  This would for example be
      ;       used to broadcast mail beacons from a BBS onto several frequencies.
      ;
      ;       BCAST=MAIL,ALL
      ;
      ;       List of approved broadcasters.
      ;       If you wish to restrict the broadcast facility to certain senders
      ;       only, list the callsigns here.  If no calls are specified, the
      ;       facility is unrestricted.  Separate the calls by commas, and don't
      ;       include any spaces in the list.
      ;
      ;       BCFROM=GB7PZT,GB7MAX
      ;
      ;       Default quality for nodes whose broadcasts are received on this
      ;       port. Set to 0 to disable all L3/4 activity on this port.
      ;
              QUALITY=10
      ;
      ;       Minimum quality to add to node table for nodes received via this
      ;       port.  If specified, this overrides the global minqual, and can
      ;       be used to exclude unreachable and marginal nodes.
      ;
      ;       MINQUAL=10
      ;
      ;       Port to transmit on. 0=this port.  You would typically use this
      ;       where a single transmitter is used in conjunction with several
      ;       receivers
      ;
      ;       TXPORT=0
      ;
      ;       Interlock is only used by SCC cards - KISS TNC's make their own
      ;       decisions when to transmit, and the router has no control over
      ;       that process.  If a non-zero value is specified, no two ports
      ;       with the same value will transmit at the same time.
      ;
      ;       INTERLOCK=4
      ;
      ;       Maximum no. of simultaneous users on this port. Default is 255
      ;       which means "no limit".
      ;
              USERS=255
      ;
      ;       Sesslimit specifies the maximum simultaneous connects each user
      ;       is allowed.  You may wish to set a low value if you are a
      ;       control freak.
      ;
      ;       SESSLIMIT=5
      ;


      XROUTER Sysop Manual Revision 2.0                          Page 74
      File Formats


      ;       The following two commands are mutually exclusive... Use one or
      ;       the other, but not both!
      ;       Callsigns should be seperated by commas or spaces, and there is no
      ;       limit to the number of calls. You can have multiple validcalls= or
      ;       exclude= lines, but you should be aware that, depending on your
      ;       hardware, there may be a performance penalty if you use long lists.
      ;
      ;       Validcalls allows L2 frames only from the specified users, and is
      ;       typically used to keep users from connecting to link-only ports.
      ;
      ;       VALIDCALLS=G6YAK,G6AMU  ; Accept only these users
      ;
      ;       Exclude allows L2 frames from everyone EXCEPT specified users,
      ;       and would typically be used on a user-access port to prevent
      ;       connections from trouble-makers and pirates.  Just because I
      ;       provide this command it doesn't mean I condone its use.
      ;
      ;       EXCLUDE=NOCALL,P1RAT     ; Ignore these users
      ;
              CWID=G8PZT              ; Used only by SCC cards.
                                      ; Callsign is sent every 30 mins.
      ;
      ;       PIPE allows frames received (and optionally sent) on this port to
      ;       be copied to another port.  A typical use would be to allow a PMS
      ;       connected to one port to see the traffic on another port.  A
      ;       pipe is one way - in order to have two way traffic you must set up
      ;       a reverse pipe on the other port.  You may pipe several ports to
      ;       a single destination port, but you can only have one *outgoing* pipe
      ;       from any port.  This feature is capable of generating an immense
      ;       amount of traffic, so use it with care - your target port MUST be
      ;       capable of dealing with the traffic load.
      ;       To disable piping, set PIPE=0 or just omit the command.
      ;
      ;       PIPE=2                  ; Pipe frames from this port to port 2
      ;
      ;       PIPEFLAG is only used when piping is active, and controls which
      ;       frames are piped.  The default if not specified is 3.  The value
      ;       is made up by adding together the following numbers:
      ;
      ;               1       - UI frames *not* addressed to nodecall/alias.
      ;               2       - Non-UI frames *not* addressed to nodecall/alias.
      ;               4       - UI frames addressed to nodecall/alias.
      ;               8       - Non-UI frames addressed to nodecall/alias.
      ;               16      - UI frames transmitted by us.
      ;               32      - Non-UI frames transmitted by us.
      ;               64      - Allow budlisted users to be piped.
      ;               128     - Netrom frames
      ;               256     - IP / ARP frames
      ;
      ;       PIPEFLAG=5              ; Pipe all rcvd UI frames only
      ;
      ;       UNPROTO=CQ,G6YAK
      ;
      ;       Optional alternative IP address for use on this port.  If this
      ;       is specified, it will be used instead of the global IP address
      ;       for this port only.
      ;
      ;       IPADDRESS=44.131.91.5
      ;
      ;       If you set SYSOP=1, all users who connect on this port will get


      XROUTER Sysop Manual Revision 2.0                          Page 75
      File Formats


      ;       full sysop status without answering a password challenge.  This
      ;       is intended ONLY FOR USE ON SECURE LINKS, such as RS232 or
      ;       Ethernet.  Be aware that, if the remote system is capable of
      ;       gatewaying or digipeating, users could downlink via the remote
      ;       system back into this port, thus gaining sysop status.  The default
      ;       for this parameter is of course zero!!
      ;
      ;       SYSOP=0
      ;
      ;       The APPLMASK parameter is used only if you are running applications
      ;       via the host interface.  It specifies which applications will be
      ;       directly connectible on this port.  Default is 255, which allows
      ;       all applications.  The value is made up by adding together the
      ;       following numbers:
      ;
      ;               1       - Enable Application 1
      ;               2       - Enable Application 2
      ;               4       - Enable Application 3
      ;               8       - Enable Application 4
      ;               16      - Enable Application 5
      ;               32      - Enable Application 6
      ;               64      - Enable Application 7
      ;               128     - Enable Application 8
      ;
      ;       If you want an application to be directly connectible on a port,
      ;       it must have a callsign, an alias or both, and the corresponding
      ;       bit in that port's applmask must be set.
      ;
      ;       APPLMASK=3
      ;
      ;       Optional port-specific ID text, sent every IDINTERVAL in place of
      ;       the global IDTEXT (e.g. for APRS-only ports).  Only one line may
      ;       be sent.
      ;
      ;       IDTEXT=!5224.00N/00215.00W# (Kidder)
      ;
      ;       CFLAGS allows level 2 uplinking and/or downlinking to be prevented,
      ;       e.g. on digipeat-only ports. Use VERY carefully! Default is 3.
      ;       Sysop can always downlink.  Add together:
      ;
      ;               1       Allow incoming connections (uplinks)
      ;               2       Allow outgoing connections (downlinks)
      ;
      ;       CFLAGS=3
      ;
      ;       Remote NET/ROM systems to whom we will tunnel L2 frames.
      ;       (See manual or PROXY.TXT for full explanation)
      ;
      ;       PROXY=GB7PZT,GB7BBS
      ;
      ;       Override the default destination & path for ID beacons
      ;
      ;       IDPATH=APRS,RELAY,WIDE
      ;
      ;       Default digipeater path for APRS frames originated by APRS
      ;       messaging shell and Igate. If you omit this, the frames will
      ;       be sent without any digipeaters. Messaging shell users may
      ;       override this path.
      ;
      ;       APRSPATH=RELAY


      XROUTER Sysop Manual Revision 2.0                          Page 76
      File Formats


      ;
      ENDPORT
      ;
      ; ---------------------------------------------------
      PORT=2
              ID=Link to BRUM
              INTERFACENUM=2
              CHANNEL=M
              FRACK=7000
              RESPTIME=1500
              MHEARD=10
              QUALITY=100
              TXDELAY=500     ; Synthesiser is slow to lock!
      ENDPORT
      ;
      ; ---------------------------------------------------
      PORT=3
              ID=Internal Loopback
              INTERFACENUM=3
      ENDPORT
      ;
      ; ---------------------------------------------------
      ;PORT=4
      ;       ID=External loopback
      ;       INTERFACENUM=4
      ;ENDPORT
      ;
      ; ---------------------------------------------------
      ;       Example AXIP (AX25 over IP wormhole) port.
      ;       You need one of these for each axip link
      ;       At least ID, INTERFACENUM, CHANNEL and IPLINK must be specified.
      ;       The IPLINK address is the remost host's IP address.
      ;       Parameters such as TXDELAY, TXTAIL, SLOTTIME, PERSIST, FULLDUP,
      ;       SOFTDCD etc. are meaningless for AXIP, but FRACK, RESPTIME, PACLEN,
      ;       MAXFRAME, QUALITY etc. operate as normal.
      ;
      ;
      ;PORT=5
      ;       ID=AXIP link with WA3DXX
      ;       INTERFACENUM=7
      ;       CHANNEL=A
      ;       IPLINK=44.73.88.69
      ;ENDPORT
      ;
      ; -----------------------------------------
      ;       Example Ethernet port, supporting IP, ARP and AX25.
      ;       Note the reduced timings (only used for ax25 connections), as
      ;       the defaults are a bit too relaxed for ethernet.
      ;
      ;PORT=6
      ;       ID=Ethernet LAN
      ;       INTERFACENUM=8
      ;       CHANNEL=A               ; Ignored
      ;       FRACK=1000
      ;       RESPTIME=200
      ;       MAXFRAME=7
      ;       PACLEN=240
      ;ENDPORT
      ;
      ; -------------------------------------


      XROUTER Sysop Manual Revision 2.0                          Page 77
      File Formats


      ;       Example APRS-only port.
      ;       Note the use of an alternate IDTEXT, and the use of CFLAGS to
      ;       disable connected mode operations, thus MAXFRAME,FRACK,PACLEN
      ;       etc are not needed.
      ;
      ;PORT=7
      ;       ID=144.800 MHz 1200 baud APRS
      ;       INTERFACENUM=2
      ;       CHANNEL=B
      ;       CFLAGS=0                ; Prevent up/downlinks on this port
      ;       DIGIFLAG=5              ; Digi only UI frames addressed via RELAY
      ;       MHEARD=22               ; Nice big MH list
      ;       IDTEXT=!5224.00N/00215.00W#PHG3021 Kidderminster APRS digi
      ;ENDPORT
      ;
      ; ---------------------------------------------------
      ;       Example AXUDP (AX25 over UDP wormhole) port.
      ;       You need one of these for each axudp link
      ;       At least ID, INTERFACENUM, CHANNEL and IPLINK must be specified.
      ;       The IPLINK address is the remost host's IP address.
      ;       UDPLOCAL and UDPREMOTE are the UDP port numbers for each end of
      ;       the link, and if omitted they default to 93
      ;       Parameters such as TXDELAY, TXTAIL, SLOTTIME, PERSIST, FULLDUP,
      ;       SOFTDCD etc. are meaningless for AXUDP, but FRACK, RESPTIME, PACLEN,
      ;       MAXFRAME, QUALITY etc. operate as normal.
      ;
      ;PORT=8
      ;       ID=AXUDP link with VK1UDP
      ;       INTERFACENUM=9
      ;       CHANNEL=A
      ;       IPADDRESS=44.131.91.77
      ;       UDPLOCAL=93
      ;       IPLINK=44.69.88.73
      ;       UDPREMOTE=93
      ;ENDPORT
      ;
      ; ====================================================================
      ;       Applications. Each must begin with APPL= and end with ENDAPPL
      ;       Application number must be between 1 and 8.
      ;       Most BBS/PMS applications have to use appl=1, and HOST (e.g. PAC4,
      ;       TERM4) must use APPL=2
      ;       Each field is optional - you may have an applname without a call
      APPL=1
              APPLNAME=PMS
              APPLCALL=G8PZT-2
              APPLALIAS=PZTPMS
              APPLQUAL=50             ; Netrom quality to broadcast
      ENDAPPL
      ;
      ;       In this example, the application has no callsigns or quality, so
      ;       it can only be reached by issuing the command "HOST" during a
      ;       command session.
      APPL=2
              APPLNAME=HOST
      ENDAPPL
      ;
      ; ===================================================================
      ROUTES
      ;
      ;       Routes to lock in - Syntax is as follows:


      XROUTER Sysop Manual Revision 2.0                          Page 78
      File Formats


      ;
      ;       <callsign> <port> <quality> [! [maxframe [frack [paclen]]]]
      ;
      ;       You must specify at least Callsign, port and quality.  If you
      ;       include the lock flag ( ! ) the route will be locked in, and
      ;       will only be changed by a replacement entry with the lock flag
      ;       set. If you don't include the lock flag, the route will
      ;       eventually expire if not confirmed by the reception of nodes
      ;       broadcasts.  In either case, if the file PZTNODES is present,
      ;       its contents will override the entries here, subject to the
      ;       locking rules above, and the sysop may also edit routes while
      ;       the router is running.
      ;       Maxframe, frack and paclen are optional.  If specified they
      ;       override port defaults for that route.
      ;       Note FRACK is expressed in millisecs, e.g. 7000 = 7 secs.
      ;       Maxframe > 7 will cause Modulo-128 to be attempted on that route.
      ;
      ;       End the section with *** as usual.
      ;
      ; Lock in a link to g6yak on port 1 with quality 100 and maxframe 32 :-
      ;
      g6yak 1 100 ! 32
      ***
      ;
      ;       Sysop-defined commands:
      ;
      ;       Up to 8 commands can be defined, allowing the sysop to set up
      ;       single-word aliases for frequently used command strings.  For
      ;       example you might wish to set up BBS, CONV and DXCLUSTER to
      ;       point to local systems.
      ;
      ;       Each command is defined using a seperate "COMMAND=" string,
      ;       and the arguments are <alias> <real_cmd>.
      ;       e.g. "COMMAND=BBS C 7 GB7PZT" means "create a new command
      ;       called BBS, which translates to the sequence C 7 GB7PZT"
      ;
      COMMAND=BBS C 1 GB7PZT
      COMMAND=CONV TELNET 44.131.90.1 3600
      COMMAND=DXCLUSTER C GB7DXC
      ;






















      XROUTER Sysop Manual Revision 2.0                          Page 79
      File Formats


      PZTNODES
      ~~~~~~~~
      This file is identical in format and function to the BPQNODES file 
      used by BPQ for node & route table saving and recovery, except that it 
      doesn't allow digipeaters in ROUTE entries.

      The nodes and routes tables are saved to this file every 
      NODESINTERVAL, at closedown, and whenever the SAVENODES command is 
      used (unless a different filename is specified).


      The ROUTE entries are first, and have the following format:

      ROUTE ADD <call> <port> <quality> [!] [<maxframe> <frack> <paclen>]

      Where <call> is the callsign of the neighbour node, <port> is the port 
      upon which it is reached, and <quality> is a figure between 0 and 255 
      indicating how "good" the route is. The remaining parameters are 
      optional.  "!" indicates a locked route (i.e. one which will not 
      expire), and the rest are "non-standard" values which can override the 
      port defaults for that route.

      For example:

      ROUTE ADD G8UZV 1 240 ! 5 7000 120 shows that 
      neighbour node G8UZV is locked in on port 1 with a quality of 240, and 
      will use maxframe=3, frack=7000, paclen=120.


      Following the ROUTE entries, the remainder of the file consists of 
      NODE entries, one per line. The format is as follows:

      NODE ADD <alias:call> <route1> <port1> <qual1> [!] [<route2> ... ]

      Where <alias:call> is the alias and callsign of the distant node, 
      <route1> is the callsign of the primary route to that node, for which 
      there must be a route entry, <port1> is the port used to reach that 
      neighbour and <qual1> is the quality of that route. "!" indicates a 
      locked route.  There can be up to 3 different routes listed for each 
      node.

      For example:

      NODE ADD #TLFRD:GB7IPT-7 G8PZT 1 142 ! G8UZV 1 139
      NODE ADD BRUM:GB7BM G8PZT 1 94 G8UZV 1 92
      NODE ADD BUXTON:GB7DAD-8 G8PZT 1 22 G8UZV 1 21
















      XROUTER Sysop Manual Revision 2.0                          Page 80
      Command Reference - User Commands


                          SECTION 3 - COMMAND REFERENCE
                          =============================


      COMMANDS AVAILABLE TO EVERYONE
      ==============================

      The following user commands are available on Xrouter:

      @        ?         AMsg      Arp       Bye       CHat      Connect
      Dx       Echo      Finger    Help      Host      Info      IProutes
      J        Links     MHeard    Nodes     NPing     NRr       Ports
      PIng     Quit      Routes    Stats     Send      Telnet    TTylink
      Users    Version

      Commands are not case-sensitive, and only the portion shown in UPPER-
      CASE is required.


      @        Request sysop status

               Syntax:    @ [string]

               In order to gain access to sensitive commands, remote sysops 
               must first complete a password challenge.  Firstly, the 
               remote sysop enters "@" alone, and the system replies with a 
               matrix consisting of 5 lines of 5 numbers thus:

                     4 1 6 3 7
                     3 5 2 6 3
                     7 1 9 2 4
                     2 7 1 4 6
                     3 5 2 6 1

               The remote sysop must then choose ONE of the lines, and send 
               the "@" command again, followed by the 5 characters from the 
               password string which correspond to the 5 numbers on the 
               chosen line.  There must be a space after the "@" but no 
               spaces between the characters.  The first character of the 
               password string is numbered zero.

               If the challenge is correctly answered, the system replies 
               with "Ok", and the user has remote sysop status.

               If the user does not have a password registered in 
               PASSWORD.SYS, the response to this command will be "Bad 
               command".

               Note:  Console sysops already have full access and don't need 
               to use this command.


      ?        Obtain command list or syntax help

               Syntax:    ? [cmd]

               If used without arguments, this command sends a list of the 
               basic commands available to the user.




      XROUTER Sysop Manual Revision 2.0                          Page 81
      Command Reference - User Commands


               If the argument is an asterisk (e.g. "? *") it lists all the 
               available commands.

               Using the form "? cmd" shows the syntax for "cmd".


      AMSG     Enter APRS Messaging mode.

               Syntax:  AM[sg] <portnum>

               The AMSG command switches the user's session into APRS 
               messaging mode, enabling him to exchange messages and 
               bulletins with APRS and UI-View users.

               The <portnum> argument specifies the radio port
               upon which traffic will be sent and received. e.g. "AM 13" 
               will use port 13.

               APRS Messaging mode has it's own commands, detailed elsewhere 
               in this document.



      ARP      Display Address Resolution Protocol table

               Syntax:    ARP [ LIST ]

               The ARP command is used to display the Address Resolution 
               Table, which is responsible for mapping IP addresses to 
               callsigns.

               The LIST subcommand is available to everyone, and has the 
               same effect as using ARP by itself.  Other subcommands are 
               available to sysops only (see sysop command section).  The 
               response may look like this:

               G8PZT:KIDDER}
               Host             type        Hw Address
               44.131.74.131    AX25        GB7WV-12
               44.131.90.6      AX25        GB7IPT-9
               44.131.95.240    AX25        GB7GH
               (End of list)

               <host> is the neighbour's IP address, <type> is either "ax25" 
               or "ether" (Ethernet) and <hw_address> is the hardware 
               address or callsign of the neighbour.

               In order for this command to have any meaning, the router 
               must have an IP address and be connected to an IP-capable 
               network.  


      BYE      Disconnect from the router.

               The BYE command forces a disconnection, and is useful when 
               the user does not have easy access to a TNC's "command mode", 
               or when the uplink is from another node with the "stay" 
               option enabled.




      XROUTER Sysop Manual Revision 2.0                          Page 82
      Command Reference - User Commands


               Disconnection of an uplink terminates all dependent sessions.


      CHAT     Connect to the chat server.

               Syntax: CH[AT]

               The CHAT command connects the user to the integral chat 
               server, which has its own set of commands detailed in a 
               separate section.

               The chat server may also be reached directly by telnetting to 
               the router's TCP port 3600.


      CONNECT  -- Make an outgoing AX25 connection

               Syntax: C[ONNECT] [port] <call> [V[ia] digi[,digi...]] [S]

               The CONNECT command, which may be abbreviated to "C", 
               instructs the router to make an outgoing (downlink) AX25 
               level 2 or 4 connection with another system.

               If the target is a known node (i.e. one which is in the nodes 
               table) a port number is not required, and will be ignored if 
               supplied.  The router will attempt to make a level 4 
               connection with the target, using information from the 
               routing tables.  However, a level 2 connection with an 
               immediately adjacent node may be forced by using the target's 
               alias with an arbitrary SSID, specifying a port number if 
               required (e.g. C 4 MLVN-1)

               If the target is not a known node, the router will attempt to 
               make a level 2 connection.  On multi-port systems, a port 
               number must be specified.

               The "V" (via) parameter allows up to 7 digipeaters to be 
               specified, e.g.:  "C 3 G6YAK V G8NTU G8EPR"

               The "S" (stay) parameter, e.g. "C <nodecall> S" causes the 
               uplink session to stay connected when the downlink session to 
               the target node is terminated.

               See also:  TELNET (nake TCP connections)


      DX       Show best APRS DX

               Syntax: DX [port]

               Providing the router's position is defined, APRS position 
               reports heard by the router will be logged in the DX list, in 
               order of distance.  The sysop may set this up to show only 
               the directly heard stations, or may choose to include those 
               heard via digipeaters.  The response to the DX command looks 
               like this:






      XROUTER Sysop Manual Revision 2.0                          Page 83
      Command Reference - User Commands


          G8PZT:KIDDER} Dx list:
          Port Callsign  Dist  Dir  Date  Time  Frames      Position       Via
           9   GB7GH     62Km  170  22/08 10:59     72 5151.20N 00205.80W
           4   G6GUH     21Km  325  22/08 05:41      1 5233.38N 00225.80W
           1   G3KFD     13Km   36  21/08 17:38      5 5229.65N 00208.28W
          (End of list)


      DISCARD  Start a sink session.

               Syntax: DI[scard]

               The DISCARD command starts a "sink" session, whereby the 
               router ignores (discards) everything subsequently sent to it.  
               This is useful for testing TNC's, link throughputs etc.

               A DISCARD session can only be ended by disconnection.


      ECHO     Starts an echo session.

               Syntax: ECHO

               After issuing the ECHO command the router will echo back to 
               you anything you send to it, which is useful for link testing 
               etc.  The session is terminated only by disconnection.


      FINGER -- Display information about users.

               Syntax:    FINGER <user | user@host | @host>

               If the command is of the form "FINGER <user>", the router 
               searches the FINGER sub-directory for a text file which 
               matches "user", and sends the contents of that file if it 
               exists.  The file may contain anything you like, and "user" 
               may be a callsign, nickname or other form of hostname 
               consisting of up to 8 legal DOS characters

               If the form "user@host" or "@host" is used, the router will 
               attempt to resolve "host" into an IP address and establish a 
               TCP/IP contact with the finger server on that host.

               Examples:  FINGER g8pzt        Info on local user g8pzt
                          FINGER g8jvm@iptlfd

               Limitations:  This feature is very rudimentary at present, 
                             requiring the user account files to be created 
                             by the sysop.


      HELP      Displays help for commands and other topics

               Syntax:    H[ELP] [cmd | topic]

               If no arguments are given, a short text gives directions on 
               how to access help.





      XROUTER Sysop Manual Revision 2.0                          Page 84
      Command Reference - User Commands


               If the argument is a topic or a command name, the contents of 
               the appropriate file in the HELP sub-directory are displayed.

               The argument "*" will list all the help topics available.

               Example:   H PING    will give help for the PING command.

               Limitations:  The command or topic name must at present be
                             given in full, thus "H NODES" is acceptable, 
                             but "H N" is not (unless you duplicate the 
                             NODES.HLP file to N.HLP).  Future versions will 
                             search for the closest match.

               Note: The help available using the HELP command is intended 
                     to be of use to both sysops and users alike, and is 
                     kept brief in order to avoid wasting airtime.  The MAN 
                     system gives more detailed information for sysops.

                     The sysop may customise the help files, or add his/her 
                     own help topics to the HELP directory as required.  The 
                     HELP directory is located beneath the router's working 
                     directory, and the files are simply plain text files 
                     with the .HLP extension.  Files without the .HLP 
                     extension will not be listed or accessible.

               See also:  ?, MAN, INFO


      HOST     Display information about a TCP/IP host

               Syntax:  HO[st] <hostname> | <ip address>

               Example: ho kidder

               G8PZT:KIDDER} Host name information for kidder:
               Hostname: kidder.ampr.org.
               Address:  44.131.91.245


      INFO     Displays information about the router and other topics.

               Syntax:    INFO [topic]

               If no arguments are given, the INFOMSG text is sent to the 
               user.

               If the sysop has created other INFO topics, the user will 
               then be prompted to enter "INFO *" to display the list of 
               topics.

               If [topic] is specified, the contents of the appropriate .INF 
               file, if it exists, are sent to the user.

               Example:   I FOURPAK      Displays fourpak.inf file.

               Note: The sysop may create INFO topics as required, and
                     there is no need to restart in order to activate them.





      XROUTER Sysop Manual Revision 2.0                          Page 85
      Command Reference - User Commands


                     Each topic should be created as a plain text file with 
                     the .INF extension and should be placed in the INFO 
                     sub-directory located immediately under the router's 
                     working directory.

                     Files without the .INF extension will not be listed or 
                     accessible.

               Limitations:  Topic names must consist of a maximum of 8
                             legal DOS characters.

               See also:  ?,  HELP,  MAN


      IPROUTE -- Display IP routing table.

               Syntax: IPR[OUTE]

               The IPROUTE command, which may be abbreviated to IPR, 
               displays the contents of the table responsible for routing of 
               IP datagrams.

               This table is initialised from file IPROUTE.SYS when the 
               router is started, and may contain other entries "learned" by 
               the system, or entered by the sysop.  It is not required in 
               any way for normal AX25 and NETROM activities.

               For each route it displays the IP address, the subnet mask, 
               the gateway address, the port and the mode (Datagram, VC or 
               Netrom).

               The command "IP ROUTES" produces an identical result.


      J        Displays recently connected stations.

               Syntax: J

               The J command lists the callsigns of the last 20 stations who 
               have connected to the router since it was booted.  The 
               display looks like this:

          G8PZT:KIDDER} Recent users:
          Typ  Usercall               Logoff-time  Mins    From-bytes-To
          L4   G1WXA-6@GB7BHM         22/08 11:06  1          8     1674
          L2   GB7COV-14              22/08 11:06  1        696       93
          L4   GB7PZT@GB7PZT          22/08 10:57  0       1370      236
          L2   G4YUD                  22/08 10:54  2         13      765
          (End of list)


      LINKS -- Displays the currently active level 2 sessions.

               The LINKS command lists level 2 user up/downlinks and inter-
               node links.  It is mainly of interest to sysops, and shows 
               the callsigns being used at both ends of the link plus some 
               other data, for example:





      XROUTER Sysop Manual Revision 2.0                          Page 86
      Command Reference - User Commands


               G8PZT:KIDDER} Links:
                Remote Local  Prt Sta Ver Try  T3   Pac  Max  T/o  Txq Rxq Asm
                G4FPV  G8PZT   5   5   2   0   177  160   1   904    0   0   0
                GB7PZT G8PZT   7   5   2   0   181  240   7   908    0   0   0
                GB7GH  G8PZT   9   5   2   0   176  120   1   903    3   1   0
               (End of list)

               Remote and Local are the L2 callsigns in use at either end of 
               the link.

               Prt   - Port number
               Sta   - Link state (2 = connecting, 4 = disconnecting,                      
               5 = connected)
               Ver   - AX25 version number
               Try   - Retry count
               T3    - Current state of the LAPB T3 countdown
               Pac   - Paclen
               Max   - Maxframe
               T/o   - Timeout
               Txq   - No. of L2 frames queued for transmission
               Rxq   - No. of L2 frames on receive queue
               Asm   - No. of frame fragments awaiting reassembly

               Note: The exact format of this response may differ in future 
               versions.


      MHEARD -- List recently heard stations.

               Syntax:    MH[EARD] <portnum>

               If the facility is enabled on the specified port, the MHEARD 
               command lists the most recently heard stations on that port, 
               along with the date / time of reception, and the number of 
               frames heard.

               This is useful for users to discover who else the router can 
               hear, to aid the search for suitable digipeaters, and to 
               diagnose problems.  Even on linking-only ports, where there 
               is only usually one partner, it provides a useful indication 
               when the frequency is being encroached, either by deliberate 
               squatting, unauthorised attempts to link, or lift conditions.

               If you have included an APRS-style position report in your ID 
               beacon, the router will know its own position and will 
               display position, distance and bearing for any stations 
               which broadcast APRS positions.

               The command may be abbreviated to "MH".

               Example: MH 3 gives a heard list for port 3....

                  G8PZT:KIDDER} Heard list for port 3:
                  Callsign Last-Date/Time  Frames
                  G1LOA-10     09/06 13:42   309        NODE
                  G3TQG-2    * 09/06 13:19   599
                  GB7PZT-15  * 09/06 13:18   708
                  DY25         09/06 10:19   4




      XROUTER Sysop Manual Revision 2.0                          Page 87
      Command Reference - User Commands


               An asterisk (*) indicates a digipeated signal.  The far right 
               column indicates the reception of Netrom, IP and ARP frames.

               Note: For each port, the MH facility can be enabled /
                     disabled and the maximum length of the list specified 
                     by appropriate entries in the .CFG file.  


      NODES -- Display contents of the Nodes table.

               Syntax:  N[odes] [call | * | T]

               When used without arguments, this command lists all the 
               NetRom nodes (but not KA nodes) known to the router, except 
               the "hidden" nodes whose alias begins with the hash (#) 
               character.

               If the argument is an asterisk (*), all nodes, including 
               "hidden" nodes will be displayed.

               If the argument is a known node call or alias, the preferred 
               route to the specified node, and up to two alternative routes 
               will be displayed.  Example: N MLVN  The response looks like 
               this:

               G8PZT:KIDDER} Routes to: MLVN:G4FPV  RTT=28  FR=3538  Q=0
               > 150  5  5 G4FPV
                 110  5  9 GB7GH
                   0  4  2 G1DKI-7

               RTT stands for Round Trip Time and is a running average of 
               the time taken to get a response from that node.

               FR indicates the number of level 3 frames sent to that node.

               Q is the number of Level 3 frames currently queued for that 
               destination.

               A chevron ">" in the left-most column indicates the currently 
               active route.

               The first number shows the overall path quality to the target 
               node, the second is the "obsolescence count", and the third 
               number is the port designator.
               The obsolescence count is a measure of how recently the route 
               was heard about or used.  It is usually reset to 5 upon 
               hearing a nodes broadcast from the neighbour node, and 
               decrements by one every time this router makes a node 
               broadcast (typically once per hour). If it drops below 4 the 
               route is considered to be obsolete.

               If the requested nodecall or alias is not in the table, an 
               error message results.

               Entering  N T  will list the round trip times and frame 
               counts for all nodes which have non-zero figures, producing a 
               display like this:





      XROUTER Sysop Manual Revision 2.0                          Page 88
      Command Reference - User Commands


               G8PZT:KIDDER} Nodes:
                WV12:GB7WV-12     RTT=20  FR=255
                WV13:GB7WV-13     RTT=14  FR=26  Q=2
                WV22:GB7WV-2      RTT=14  FR=31

               Examples:
               N           - List nodes except those beginning with #
               N *         - List nodes including those beginning with #
               N MLVN      - Display routes to MLVN node
               N F         - List nodes to whom frames have been sent
               N H         - List the nodes for whom a hop count is known
               N P         - List all nodes whose APRS position is known
               N Q         - List the nodes for whom data is queued
               N R         - List the nodes for whom an RTT is known
               N T         - List all nodes with any non-zero counts
               N V MLVN    - List nodes routed via MLVN


      NPING    Send a Netrom echo request

               Syntax: NP[ing] <nodecall | nodealias> [bytes [secs]]

               The NPING command sends an NCMP (Network Control Message 
               Protocol) echo request to the specified target system.  If 
               the target understands NCMP, a reply will be returned, 
               allowing the round-trip-time and number of hops to be 
               determined.  It is intended mainly as a network diagnostic.

               NCMP is under development and is currently implemented only 
               in PZT systems, so you can only NPING another Xrouter.

               The command allows the user to specify an additional data 
               payload, and an interval between pings.  This can be used to 
               assess the consistency of link performance.

               Examples:

               nping gb7gc

               G8PZT:KIDDER} NPING: hit <RETURN> to quit...

               Pinging gb7gc with 0 bytes of data:

               GB7GC: echo reply - rtt 17985 msec, 3 hop(s)

               nping  gb7gc 10 20

               G8PZT:KIDDER} NPING: hit <RETURN> to quit...

               Pinging gb7gc with 10 bytes of data:

               Target             Interval   Sent   Rcvd   %  Ave Rtt
               GB7GC                 20020      1      1  100 5170
               GB7GC                 20020      2      2  100 6930
               GB7GC                 20020      3      3  100 6765







      XROUTER Sysop Manual Revision 2.0                          Page 89
      Command Reference - User Commands


      NRR      Netrom Record Route

               Syntax:  NRR <nodecall | nodealias>

               This command sends a "record route" packet to the specified 
               netrom target system.  It the target is NRR-capable (e.g. 
               Xrouter, Xnet, Flexnet?), the packet is returned otherwise 
               the packet is ignored by the target.

               Each NRR-capable router along the path inserts its own 
               callsign into the packet, and these are displayed when the 
               reply is received.  Non-capable systems are shown by a 
               question mark "?".  The target is marked by a "*" and both 
               the outgoing and return routes are displayed because they may 
               differ.

               Example: nrr gb7gc

               G8PZT:KIDDER} Request sent
               Route reply:  G8PZT ? GB7GC* ? G8PZT


      PING -- Send ICMP echo request(s).

               Syntax:  PING <hostname | ipaddr> [length [interval]]

               The PING command sends ICMP echo request(s) to the specified 
               IP address or hostname for the purposes of route testing.

               An optional data portion of "length" bytes may be specified, 
               and the echo request may optionally be repeated every 
               "interval" seconds.

               If there is a reply it will be displayed.  For repeating 
               pings the system displays the number sent/rcvd, the average 
               round trip time in milliseconds, and the success rate.  The 
               "wait for reply" process may be cancelled at any time by 
               entering <CR> by itself.

               If you specify a hostname (e.g. gb7pzt.ampr.org) instead of a 
               numeric IP address the request may take longer to action if 
               the hostname isn't found in DOMAIN.SYS, because the name will 
               have to be resolved by sending a DNS request.

               Examples:
                  PING 44.131.91.2           Single ping of minimum size
                  PING 44.131.91.2 50        Single ping with 50 bytes data
                  PING gb7pzt                Uses DNS to resolve host.
                  PING 44.131.91.2 512 10    Ping 512 bytes every 10 secs

               The response for a single ping looks like this:

                  G8PZT:KIDDER} PING: Pinging 44.131.91.2: hit <RETURN> to    
               quit...

                  44.131.91.2: echo reply - rtt 495 msec






      XROUTER Sysop Manual Revision 2.0                          Page 90
      Command Reference - User Commands


               And for a repeating ping it looks like this:

               G8PZT:KIDDER} PING:
                 Target             Interval   Sent   Rcvd   %  Ave Rtt
                 44.131.91.2            9955      1      1  100  880
                 44.131.91.2            9955      2      2  100  880
                 44.131.91.2            9955      3      3  100  880

               Limitations: The ROUTER must have an IP address and have IP
                            routing defined for this command to work.  
                            Unrealistic ping rates are prevented.

               Availability: The PING command is currently available to all
                             users, but due to the potential for abuse the 
                             repeating ping option may be made sysop-only in 
                             future versions.


      PORTS -- List the available ports.

               Syntax:  P[ORTS]

               Displays the router's port numbers along with their brief 
               descriptions as specified by the PORTID fields in the CFG 
               file.

               The command may be abbreviated to "P".


      QUIT     Disconnect from the router.

               Syntax:  Q[uit]

               The QUIT command performs the same function as BYE, namely to 
               terminate your session with the router.  The disconnection 
               will occur only when all outstanding data has been sent to 
               you.


      ROUTES -- List neighbouring nodes which can be heard directly.  

               Syntax:  R[OUTES] [<R <port>> | * ]

               The ROUTES command, which may be abbreviated to "R", lists 
               the immediately adjacent NetRom nodes, i.e. those who can be 
               heard directly, providing those nodes are making NetRom nodes 
               broadcasts.

               For each neighbour node the display shows the port number, 
               the neighbour's callsign, the route quality, and the number 
               of nodes accessible through that neighbour.

               A chevron (>) in the left-most column indicates a route which 
               is in use, and an exclamation mark (!) in the right-most 
               column indicates that the data has been "locked in" by the 
               sysop. See example...






      XROUTER Sysop Manual Revision 2.0                          Page 91
      Command Reference - User Commands


               If any argument is supplied, it will give additional 
               information mainly of interest to sysops.  The additional 
               fields are the current MAXFRAME, FRACK and PACLEN settings, 
               the number of information frames sent, the number of 
               information frames re-sent, the retry rate, which is the 
               ratio of the two preceding figures (or * if both are zero), 
               and the time a nodes broadcast was last heard from the 
               neighbour.

               Examples:
               If no arguments are supplied, the output looks like this:

               G8PZT:KIDDER} Routes:
               Port Callsign  Qty Nod
               >  5 G4FPV     150  70!
               >  7 GB7PZT    250   1!
               >  8 GB7WV-12  100  32!
               >  9 GB7GH     150 104!
                 10 GB7CL     150   1!
               > 11 GB7IPT-7  150   3!
                 12 G1LOA-10  150   2!

               The R R form produces an output similar to this:

              G8PZT:KIDDER} Routes:
              Port Callsign Qty Nod Max Frack Pac  Sent Resent Rty%  Last Heard
              >  5 G4FPV    150  70! 5   7000 160 15550   1507   9% 09/06 13:46
              >  7 GB7PZT   250   1! 7   5000 240 25387      4   0% 09/06 13:47
              >  8 GB7WV-12 100  32! 1   4000 120 12170   3426  28% 09/06 13:35
              >  9 GB7GH    150 104! 4   7000 120  7442   1335  17% 09/06 13:47
                10 GB7CL    150   1! 3   7000 240   330      1   0% 09/06 13:23
              > 11 GB7IPT-7 150   3! 2   7000 120 19401   2928  15% 09/06 13:47
                12 G1LOA-10 150   2! 4   7000 120 10745   3379  31% 09/06 13:39

               The "R R 2" form will display only the routes which use port 
               2.

               The "R X" form shows the long term average retry rate, plus a 
               "running average".  It also records the peak value of the 
               running average and the date/time when it occurred.  For 
               example:

      G8PZT:KIDDER} Routes:
      Port Callsign  Qty Nod    Sent  Resent  Rty%  Now%   Max% @dd/mm hh:mm
      >  7 GB7PZT    250   1!  10067       0    0%   0.0    0.0  
      >  9 GB7GH     150  93!    333      17    5%   5.3    5.6  26/08 20:26
      > 12 G1WXA-1   150   2    1231      83    6%   1.6   24.4  26/08 12:37
      (End of list)


      SEND     Send unproto text

               Syntax: SE[nd] <port> <destcall> [V digi,digi,..] <text>

               Sends an unproto (UI) packet on the specified port.  The 
               destination address and up to 8 digis may be specified.  This 
               command is included to facilitate tests.





      XROUTER Sysop Manual Revision 2.0                          Page 92
      Command Reference - User Commands


               Example:  Send 7 CQ V G8EPR,G8AKX Meet me on 144.800!


      STATS -- Display router statistics.

               Syntax:    S[TATS] [L1 | L2 | L3 | *]

               Displays information about the performance of the router, 
               such as the uptime, the no. of packets routed, error rates 
               etc.  See elsewhere in this manual for a detailed explanation 
               of the output.

               Entering S by itself will give a single page synopsis, 
               whereas "S *" will produce the full stats.  "S L1" will show 
               the layer 1 (interface) stats, such as hardware errors.

               Note: On multi-port systems the display may wrap, and on busy
                     systems some of the fields may run together.  The exact 
                     format of the display is not yet finalised and the 
                     problems will be addressed in future versions.


      TELNET -- Establish a TCP "connection".

               Syntax:    TEL[NET] <hostname | ipaddress> [port]

               The TELNET command allows users to "connect" to other TCP/IP 
               systems, using a "shell" account, i.e. the user does not need 
               to be running TCP/IP as the router does all the TCP/IP <> 
               AX25 translation.

               The optional <port> parameter specifies the desired service 
               on the target host.  If not supplied, the default is 23, i.e. 
               the Telnet (remote login) port.  Common port numbers are 21 
               (FTP), 23 (Rlogin), 25 (SMTP), and 87 (TTYLINK).

               Examples:  TEL 44.131.90.6  21  - Connect to gb7ipt FTP.
                          TEL gb7lgs.ampr.org  - Remote login to gb7lgs
                          TEL gb7pzt 25        - Connect to gb7pzt SMTP 

               Limitations: This command will only work if the router has an
                            IP address and IP routing has been defined.  It 
                            should be obvious that the router also needs to 
                            be connected to an IP-capable network!

               Notes: Specifying target hosts by their IP addresses will
                      often result in faster connection if the hostname is 
                      not in domain.sys, as it will not have to wait for DNS 
                      resolution.

               See also: PING


      TTYLINK -- Chat directly to another TCP/IP station

               Syntax:  TT[YLINK] <hostname | ipaddress> [port]

               The TTYLINK command allows users of any type (i.e. AX25, 
               console, wire link, TCP/IP) to chat directly to TCP/IP users.



      XROUTER Sysop Manual Revision 2.0                          Page 93
      Command Reference - User Commands


               This is similar to TELNET, except that the default port 
               number is 87, which is reserved for keyboard to keyboard 
               chat.  Other port numbers may be specified.

               Examples:  TTY 44.131.91.4
                          TTY g8pzt

               Limitations: In order for this command to work, the router
                             must have an IP address and have IP routing 
                             defined.

               Note: If the target hostname is not known to the router, it
                     will be more efficient to specify the target as an IP 
                     address, since this will not require DNS resolution.

               See also:  TELNET


      USERS Shows who is using the router.

               Syntax: U[SERS]

               The USERS command displays the circuits which originate or 
               terminate at the router.  "Through" connections are not 
               shown.

               No arguments are required, and a typical response is as 
               follows:

               G8PZT:KIDDER} Users:
               Session Start time  S Uplink type/user
                 807  09/06 13:25  1 L4  (G8PZT@GB7PZT) <--> (G6YAK-1) L2

               UPLINK is an incoming connection, and DOWNLINK is an outgoing 
               connection.  The type may be L2 (ax25 level 2), L4 (ax25 
               level 4), TCP (TCP/IP), CON (console i.e. sysop), TTY 
               (Teletype, i.e. an ASCII wire link), or HST (Host 
               application). 

               Established circuits are shown by <-->  and circuits being 
               set up are shown thus:  <~~>.

               SESSION is a unique session number for the circuit.

               For TCP/IP connections the IP address and TCP port number are 
               displayed in place of callsign - this may be subject to 
               future review if I decide to make TCP users supply a callsign 
               at login.

               Unlike the equivalent BPQ command, this does not show the 
               version number - use the VERSION command for that, or buffer 
               count (this system does not use fixed buffers).


      VERSION  Display software version.

               Syntax: V[ERSION]





      XROUTER Sysop Manual Revision 2.0                          Page 94
      Command Reference - User Commands


               The VERSION command displays the router version, author and 
               compilation date.  You should quote the version number when 
               reporting any bugs.



























































      XROUTER Sysop Manual Revision 2.0                          Page 95
      Command Reference - APRS Messaging


      APRS MESSAGING COMMANDS
      =======================

      The APRS messaging system accepts the following commands:

               /A[nnouncements]    Show announcements
               /B[ulletins]        Show bulletins
               /C[ancel] [#]       List / cancel unacked message(s)
               /D[irects]          Show directly heard stations
               /H[elp] [cmd]       Display command help
               /Monitor [on|off]   Query / set traffic Monitor mode
               /Q[uit]             Quit (exit)
               /T[arget] [call]    Query / set target for msg
               /U[iview] [on|off]  Query / set UI-View mode
               /V[ia] [digis]      Query / set digipeater path
               /X                  Exit

      All commands and arguments are case-insensitive, and only the first
      letter of the command needs to be given, thus "/H" and "/help" are
      equally valid.

      APRS Messaging Commands In Detail
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      /A       Show Announcements

               Syntax:  /A 

               The /A command lists the APRS announcements received by the 
               router.  They are listed in alphabetical order by sender.

               Announcements have a destination address of the form 
               BLNxCCCCC where x represents a single non-digit and CCCCC 
               represents the category (up to 5 characters). They are 
               transmitted once per hour for 4 days, and incoming 
               announcements are retained for 4 days after last reception.

      /B       Show Bulletins

               Syntax:  /B

               The /B command lists the APRS bulletins received by the 
               router.  They are listed in alphabetical order by sender.

               Bulletins have a destination address of the form BLN#CCCCC 
               where # represents a single digit (0-9) and CCCCC represents 
               the category (up to 5 characters).  They are transmitted 
               every 20 minutes for 4 hours, and incoming bulletins are 
               retained for 4 hours after last reception.

      /C       List / Cancel Undelivered Message(s)

               Syntax:  /C [message #]

               The /C (Cancel) command is used to cancel re-transmission of 
               outgoing messages originated by the user, e.g. "/C 12345" 
               will cancel message number 12345.  Entering /C by itself will 
               list the messages which may be cancelled.




      XROUTER Sysop Manual Revision 2.0                          Page 96
      Command Reference - APRS Messaging


      /D       List directly heard stations.

               Syntax:  /D

               The /D command gives a brief list of the stations 
               heard directly.


      /H       Obtain help.

               Syntax:  /H [cmd]

               Entering /H alone produces a brief list of the commands and 
               their syntax.

               More detailed help on any of these commands is available by 
               using the "/H <command>" form, e.g. "/H /T" will display 
               help for the /T command.

               The form "H *" will list all the commands and aprs messaging 
               topics for which help is available.


      /M       Query or set traffic monitor mode.

               Syntax:  /M [on | off]

               The /M (Monitor) command controls message traffic monitoring.

               If monitoring is ON, all APRS messages will be displayed.  If 
               monitoring is OFF, only the messages addressed to the user 
               will be displayed.  The default is OFF, and the current state 
               is reported by using /M alone.


      /Q       Quit messaging mode.

               The /Q command quits the APRS messaging session and returns 
               you to the router's main prompt. The /x (exit) command 
               performs the same function.


      /T       Query / Set message target.

               Syntax:  /T [call]

               The /T command displays the current message target or sets a 
               new one.  Messaging is not possible until a target has been 
               set. The target remains in force until cleared or a new one 
               is set.

               The argument can take the following forms:

               CALLSIGN      "message" mode will be used.
               BLN#xxxxx   (# = 0-9) "bulletin" mode, category xxxxx
               BLN@xxxxx   (@ = non-digit) "announcement" category  xxxxx
               .           Any punctuation character clears target.





      XROUTER Sysop Manual Revision 2.0                          Page 97
      Command Reference - APRS Messaging


      /U       Query / Set UI-View messaging mode.

               Syntax:  /U [on | off]

               The /U (UI-View) command displays and sets "UI-View" 
               messaging mode.  If no argument is given, the current mode is 
               reported.  If UI-View mode is on, outgoing msgs use UI-View 
               format, and if UI-View mode is of, outgoing msgs use APRS 
               format.

               The default mode is "off".  In either mode, both types of 
               message can be received.  UI-View messages will display with 
               a tilde (~) between the message and its ID, whereas APRS-
               format messages will display with a curly opening bracket ({) 
               if a message ID was supplied.


      /V       Query / Set digipeater (via) path.

               Syntax:  /V [digi,digi,...]

               The /V (Via) command queries or sets the digipeater path for 
               outgoing messages as follows:

                  /V               Display current path
                  /V RELAY,WIDE    Set path to RELAY,WIDE
                  /V .             Clear path (no digipeaters)

               The path remains in force until cleared or a new path is 
               specified.


      /X       Exit messaging mode.

               Syntax:  /X

               The /X command quits the APRS messaging session and returns 
               the user to the router's main prompt. The /q (quit) command 
               performs the same function.























      XROUTER Sysop Manual Revision 2.0                          Page 98
      Command Reference - Chat Server


      CHAT SERVER COMMANDS
      ====================

      The following commands are available within the chat server only.

      /?       /BYE      /CHANNEL  /EXIT   /HELP     /JOIN     /LEAVE
      /LINKS   /MSG      /NAME     /PERSONAL /QUIT   /TOPIC    /USER
      /WHO     /VERSION


      CHAT SERVER COMMANDS IN DETAIL
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Note that the server is still experimental, and the syntax of these 
      commands may be changed in future versions.  Additional commands will 
      be added as required.


      /?       Display commands / syntax help.

               Syntax: /? [cmd]

               When used without arguments, the /? command lists the 
               available commands.  The syntax for any of the commands thus 
               listed may be shown by specifying the command as an argument 
               to the /? command.

               Examples:  /?          List available commands.
                          /? /who     Display syntax for the /WHO command.



      /BYE    Exit the chat server.

               Syntax: /B[ye]

               The /BYE command, which may be shortened to /B, disconnects 
               the user from the chat server, and informs everyone that he's 
               left.  There is no need for the user to /leave any logged 
               channels before issuing this command.

               If the user accessed the server via the router's CHAT 
               command, he will be returned to the router's main command 
               prompt, otherwise he will be completely disconnected.

               The /EXIT and /QUIT commands also perform this function.


      /CHANNEL  Display / Change logged channel(s).

               Syntax: /C[hannel] [number]

               The /CHANNEL command displays / changes the channel(s) the 
               user is logged to.  When no argument is supplied, the logged 
               channel(s) is / are displayed.  If a valid numeric argument 
               is supplied, the user is logged to the specified channel.

               Examples: /C        Displays current logged channel(s)
                         /C 22     Change to channel 22




      XROUTER Sysop Manual Revision 2.0                          Page 99
      Command Reference - Chat Server


               When a new channel is selected, the user remains logged to 
               any previous channels, (so he can "monitor" several channels 
               at once) but any subsequent text he sends will go to the new 
               channel (unless targeted otherwise).

               Note: Channels 0 to 255 are "local" to each chat server, and 
               channels 256-32767 are "global", i.e. they are linked with 
               all other servers. 

               The /JOIN command has a similar function, and /LEAVE is used 
               to de-select unwanted channels.


      /EXIT    Exit the chat server.

               Syntax: /E[xit]

               The /EXIT command, which may be shortened to /E, disconnects 
               the user from the chat server, and informs everyone that he's 
               left.  There is no need for the user to /leave any logged 
               channels before issuing this command.

               If the user accessed the server via the router's CHAT 
               command, he will be returned to the router's main command 
               prompt, otherwise he will be completely disconnected.

               The /BYE and /QUIT commands also perform this function.


      /HELP    Obtain help.

               Syntax: /HELP [topic]

               When used without arguments, the /HELP command gives brief 
               instruction on how to access various levels of help.

               If a topic is specified, detailed help for that topic (if 
               available) is displayed.  The topic may be a command name, or 
               any other chat server related topic.  A list of the available 
               help topics can be obtained by specifying "*" as a topic.

               Examples:  /H          Display general instructions.
                          /H *        List available help topics.
                          /H /who     Display help for /WHO command.

               Note:  When using /H to display help for a command, the         
               leading slash for that command may be omitted.  Thus         
               "/H /who" and "/H who" are equally permissible.


      /JOIN    Join (log onto) a channel.

               Syntax: /J[oin] <channel>

               The /JOIN command logs the user to a channel, and performs a 
               similar function to the /CHANNEL command.






      XROUTER Sysop Manual Revision 2.0                          Page 100
      Command Reference - Chat Server


               When a new channel is selected, the user remains logged to 
               any previous channels, (so he can "monitor" several channels 
               at once) but any subsequent text he sends will go to the new 
               channel (unless targeted otherwise).  (Unwanted channels may 
               be de-selected using the complementary /LEAVE command.)

               Example:  /J 22   Join channel 22

               Note: Channels 0 to 255 are "local" to each chat server, and 
               channels 256-32767 are "global", i.e. they are linked with 
               all other servers. 


      /LEAVE   Leave (log off) a channel.

               Syntax: /L[eave] <channel>

               The /LEAVE command logs the user off the specified channel.  
               When a user joins a channel, he remains logged to any 
               previous channels, so this command allows him to de-select 
               unwanted channels.

               Example:  /L 22   - Leave channel 22


      /MSG     Send a short message to a channel or a single user.

               Syntax: /M[sg] <channel | callsign> <text>

               The /Msg command is used to send a short message (70 chars 
               max.) to any specified channel or single user.  You may for 
               example use this command to direct a message to a channel you 
               are monitoring, but not actually logged to.

               If you direct a message to a specific user, he may be on this 
               or any other chat server.  The private nature of the message 
               will be indicated to the recipient by asterisks around the 
               sender's call, e.g. <*g8pzt@kdchat*> (Paula): Meet me on 
               channel 69.

               Examples: /M 32 Hello People
                         /M g6yak Meet me on channel 69

               The first form sends "Hello People" to all the users of 
               channel 32, and the second form sends a private msg to g6yak 
               only. Providing G6YAK is logged on to any chat server, the 
               message will find him.

               Note: As with all things Packet, the term "private" is 
               relative, as nothing is truly private when it is broadcast!


      /NAME    Set name.

               Syntax:  /N[ame] <your name> [channel]

               The /NAME command sets the user's name, which will be 
               displayed on the user list and prefixed to everything he 
               sends to others.



      XROUTER Sysop Manual Revision 2.0                          Page 101
      Command Reference - Chat Server


               Users are not allowed to join any channels until they have 
               supplied a name (12 chars max), so it acts as a "log on" 
               command.  The name need be supplied only at the initial 
               logon, and may be changed as the user wishes.

               On the first use of this command, the user may optionally 
               specify a channel to join instead of the default (channel 0).

               TCP/IP users must first use the /USER command (see below) to 
               enter their callsign.

               Examples: /N Paula       Set name to "Paula"
                         /N Paula 23    Set name and join channel 23


      /PERSONAL  Display / change personal description.

               Syntax: /P[ersonal] [text | @]

               The /PERSONAL command is used to display or change the user's 
               personal description.  This is a short text of up to 32 
               characters, which is displayed on the user list.  It may 
               typically contain the user's home town and "brag" 
               information.  If the user logs onto any "public" channels 
               (i.e. those above channel 255), this information will appear 
               on the user lists of all other chat servers.

               If used without arguments, the /PERSONAL command displays the 
               user's current text.  

               If the argument is "@", the existing text is removed.

               Examples: /P                        - Displays current text
                         /P Kidderminster, sysop   - Set new text.
                         /P @                      - Clear previous text.


      /QUIT    Exit the chat server.

               Syntax: /Q[uit]

               The /QUIT command, which may be shortened to /Q, disconnects 
               the user from the chat server, and informs everyone that he's 
               left.  There is no need for the user to /leave any logged 
               channels before issuing this command.

               If the user accessed the server via the router's CHAT 
               command, he will be returned to the router's main command 
               prompt, otherwise he will be completely disconnected.

               The /BYE and /EXIT commands also perform this function.


      /TOPIC   Display / Change channel topic.

               Syntax: /T[opic] [channel] [text | @]






      XROUTER Sysop Manual Revision 2.0                          Page 102
      Command Reference - Chat Server


               Every channel has an optional topic, and the /TOPIC command 
               can be used to display the existing topic or change it.  The 
               topic can be up to 12 characters, and is displayed on the 
               /Who list.

               Examples: /T                        - Show current ch. topic
                         /T 32                     - Show channel 32 topic
                         /T 32 TCP/IP discussion   - Set topic for ch. 32
                         /T @                      - Clear topic.


      /USER    TCP/IP logon.

               Syntax:  /U[ser] <callsign> [name]

               The /USER command is available only to TCP/IP users.  It sets 
               the user's callsign (and optionally his name), which will be 
               displayed on the user list and prefixed to everything he 
               sends to others.

               The user will not be able to join the conference without 
               supplying both callsign (9 chars max) and name (12 chars 
               max), but if the name is omitted from this command he may 
               enter it in the normal way with the /Name command.

               Examples: /U g8pzt          - Set callsign to "g8pzt".
                         /U g8pzt Paula    - Set callsign and name.


      /VERSION  Display chat server version.

               Syntax: /V[ersion]

               The /VERSION command displays the chat server version, author 
               and compilation date.  Please quote it if reporting bugs.


      /WHO     List channels and users.

               Syntax: /W[ho] [*]

               The /WHO command lists who is logged onto the chat server, 
               and what channels they are on.

               If no arguments are supplied, the active channels are listed, 
               along with the callsigns of their users.

               If an asterisk is supplied as the argument, each user is 
               displayed in more detail.  The display would typically show 
               the user's callsign, name, personal text and logon date/time.

               Examples:  /W     Lists channels & users in brief format
                          /W *   Lists users in detail









      XROUTER Sysop Manual Revision 2.0                          Page 103
      Command Reference - Sysop-only Commands


      SYSOP-ONLY COMMANDS
      ===================

      The following commands are available only to sysops.  Some of them, 
      e.g. ARP are repeated from above, but with extra facilities.


      ARP -- Display / Edit the ARP table.

               Syntax: ARP [ADD <host> <hwtype> <addr>]
                       ARP [DROP <host> <hwtype>]
                       ARP [LIST] 

               The ARP command is used to display and edit the Address 
               Resolution Table, responsible for mapping IP datagrams to 
               callsigns.

               If no arguments are supplied, the table is listed.

               ADD        adds an entry to the table. 
               DROP       deletes an entry.
               LIST       lists the table.
               FLUSH      Removes temporary (learned) entries
               PUBLISH    Adds an entry on behalf of a hidden system

               <host> is an IP address in dotted quad form.

               <hwtype> is the hardware address type, i.e. "ax25", "ether", 
               or "netrom".

               <addr> is the hardware address, i.e. callsign or ethernet 
               address.  It is possible to route IP through digipeaters, by 
               including the digipeaters callsigns as part of the ax25 
               address.  The ax25 destination and digis must form a single 
               comma-delimited string. 

               The PUBLISH option is typically used in cases where one 
               system is "hidden" (i.e. only routable via) a "front end" 
               router, and instructs the front end router to respond to ARP 
               requests for the hidden system's address.  In this case 
               <host> is the IP address of the hidden system, and <addr> is 
               the hardware address of the front end router.

               Examples:
               ARP ADD 44.131.91.2 ax25 gb7pzt-5         Add ax25 entry
               ARP ADD 44.131.91.66 ax25 g8bkl,g6yak     Use digis
               ARP DROP 44.131.91.7 ax25                 Delete ax25 entry
               ARP PUB 44.131.91.77 ax25 g8pzt-7         Publish 91.77
               ARP LIST                                  List the table
               ARP                                       List the table


               Availability:
               The LIST subcommand is available to everyone, but ADD and 
               DROP are sysop-only.







      XROUTER Sysop Manual Revision 2.0                          Page 104
      Command Reference - Sysop-only Commands


               Note: 
               In order for this command to have any meaning, the router 
               must have an IP address and be connected to an IP-capable 
               network.


      AXROUTES -- Display AX25 level 2 circuits

               Syntax: AX[ROUTES]

               The AXROUTES command displays information about active and 
               recently active AX25 level 2 connections, allowing the sysop 
               to monitor the performance of the links between the router 
               and its users.

               Entries are purged 24 hours after they were last active, 
               unless they are "locked" (indicated by "!" after the 
               callsign), i.e. in use by level 3.

               A typical display looks like this:

      Por Callsign   M Pac  F RTT   Sent Resent  Rty   Rcvd   Lost  Rol Date/Time
      >5  G4FPV    ! 5 160  7   5  24217   1265   5%  24010    984   4% 28/01 09:46
      >7  GB7PZT   ! 7 240  5   1 100884      0   0% 129788      0   0% 28/01 09:46
      >8  GB7WV-12 ! 1 120  4   2  14456   3348  23%  14218    753   5% 28/01 09:46
      >9  GB7GH    ! 4 120  7   3  16591    511   3%  14965      4   0% 28/01 09:43
       10 GB7CL    ! 3 240  7   2   1122     55   4%   1009      5   0% 27/01 23:32
      >11 GB7IPT-7 ! 2 120  7   5 104483  15436  14%  46589   8344  17% 28/01 09:46
       12 GB7BM    ! 4 120  7   4  13562   1598  11%   5626     57   1% 28/01 09:36
       8  WV12-1     1 120  7   2   3362    999  29%    918     38   4% 28/01 08:07
       12 BRUM-1     4 120  7   5  10730    593   5%   1503     52   3% 28/01 09:45
       1  G1ZRN      2 160  7   2   3693    164   4%    949     14   1% 28/01 02:24
       4  G3MRC      2 120  7   5   4937    160   3%     35      0   0% 27/01 23:38
       1  G0NXB      2 160  7   3   1485     89   5%     96      0   0% 27/01 19:37
       1  G6YAK-2    2 160  7   3     26      2   7%     23      0   0% 27/01 22:46
       1  G0EWH      2 160  7   4   1687    325  19%    213      2   0% 27/01 16:46
       1  G4SPZ      2 160  7   2    222     10   4%     83      8   9% 27/01 20:43
       1  G4MTG-2    2 160  7   3     10      0   0%      5      0   0% 27/01 11:17
       1  G0HTF      2 160  7   4    332     13   3%     63     11  17% 28/01 09:45
       6  G3PWJ      2 160  7   3     18      0   0%      3      0   0% 27/01 23:56
       1  G7UBX      2 160  7   2     27      1   3%      6      0   0% 28/01 08:46
       1  M0ALH      2 160  7   4      8      1  12%      5      2  40% 28/01 09:24
      (End of list)

               The display shows the port number and callsign, with a 
               chevron ">" in the leftmost column in the link is currently 
               active. "M", "Pac" and  "F" are the Maxframe, Paclen and 
               Frack last used on that link.  They may be the same as the 
               port or global defaults, or they may have been modified by 
               the router to suit link conditions

               "RTT" is the Round Trip Time in seconds, i.e the average time 
               from sending a packet to receiving an ack for that packet.  
               This is dependant on many variables, such as the packet size, 
               the quality of the link, the data rate, the amount of queued 
               data, the TXdelay and Resptime intervals at each end etc...






      XROUTER Sysop Manual Revision 2.0                          Page 105
      Command Reference - Sysop-only Commands


               "Sent" is the total no. of L2 frames sent to that staion, and 
               "Resent" is the number of frames which had to be retried. 
               "RTY%" is the ratio of these expressed as a percentage.

               "Rcvd" is the total no. of L2 frames received from that 
               station and "Lost" is the number which were lost and had to 
               be re-sent from the other end.  "Rol" is "Rate Of Loss", 
               which is effectively the retry rate which would be seen by 
               the other station.

               Finally, Date/Time shows when the station was last heard.


      CAPTURE -- Enable / disable tracing to disk file.

               Syntax:  CAP[TURE] [on | off]

               The CAPTURE command is used to enable or disable the tracing 
               to disk of incoming and outgoing traffic. 

               When capture is enabled, anything which is displayed in the 
               central 22 line window is written also to disk.  This 
               includes session activity and TRACE'd data.  Whereas the 
               screen display is filtered to prevent it being garbled by 
               binary data, the capture is pure binary, so it is useful for 
               diagnostics.

               The optional argument may be "ON" or "OFF".  If no argument 
               is supplied, the current setting is reported.

               This command overrides the <F5> (toggle capture) key.

               The console may override a remote sysop's settings.

               Example:  CAP ON  -  Enables capture.

               Note: You are advised not to enable long-term capture on a 
               floppy based system otherwise performance will be 
               compromised.

               See also:  MONITOR


      CTRL     Read / Write remote hardware control port.

               Syntax: CTRL [0-255]

               The CTRL command reads from and writes to the CTRL port 
               defined in the CFG file (e.g. CTRL=0378 to use LPT1).  This 
               is used for controlling external hardware devices via logic, 
               and reading status from them, for example transmitter 
               bank switching or temperature alarm monitoring.

               "CTRL" by itself reads the port, and "CTRL <value>" writes 
               it.  The read value is the OR of last written value and 
               external levels, so a bit must be written to 0 in order to use 
               it as an input.  If written to 1, a bit will always return 1.





      XROUTER Sysop Manual Revision 2.0                          Page 106
      Command Reference - Sysop-only Commands


      DATE -- Enquire / set system date

               Syntax:  DATE [dd/mm/yy[yy]]

               If no argument is supplied, the existing system date is 
               shown.

               If the user is a sysop, and the argument is a valid date of 
               form dd/mm/yy or dd/mm/yyyy the system date is set to the new 
               value.

               Example:  DATE 24/2/99

               See also: TIME


      DIGIFLAG -- Display / Set digipeat options.

               Syntax: DIGIFLAG <port> [0-255]

               The DIGIFLAG command is used to display and/or set the 
               digipeat options for a port.

               New settings override those read from the CFG file, and 
               remain in force until changed, or the system is restarted.

               The digipeat options value is the sum of the following:

                     0        No digipeating on this port
                     1        Digipeat UI frames
                     2        Digipeat non-UI frames
                     4        Enable RELAY generic APRS digipeating
                     8        Enable TRACE and TRACEn-N APRS digipeating.
                     16       Enable WIDE and WIDEn-N
                     64       Enable gating from Packet to Internet.
                     128      Enable gating from Internet to Packet.

               The minimum abbreviation of this command is DIGIF.

               Examples: DIGIF 3        - Enquire setting for port 3
                         DIGIF 3 255    - Set port 3 digiflag to 255

               See also: DIGIPORT - Set port to digipeat on


      DIGIPORT -- Display / Set port to digipeat on.

               Syntax:  DIGIPORT <port> [destport]

               Displays or specifies the port upon which digipeated frames 
               should be transmitted.

               If "destport" is not specified, the current setting is 
               displayed.

               If "destport" is zero, frames are transmitted on the port 
               upon which they are received, otherwise they are transmitted 
               on the port specified.




      XROUTER Sysop Manual Revision 2.0                          Page 107
      Command Reference - Sysop-only Commands


               The minimum abbreviation of this command is DIGIP.

               Example: DIGIP 3 5   - Digipeat from port 3 to port 5

               Limitations:  Frames may currently be digipeated only to one
                             port, therefore it is not possible for a BBS on 
                             one port to broadcast unproto headers to 
                             several ports at once.

               See also:  DIGIFLAG - Control type of frames digipeated


      DOS -- Enter PZTDOS command mode.

               Syntax: DOS

               The DOS command switches the command interpreter into "DOS 
               mode", allowing local and remote sysops to use familiar DOS 
               commands to maintain the system without taking it off line.

               In this mode, the normal command prompt is replaced by a DOS-
               style $P$G prompt showing the current drive and directory, 
               and only the PZTDOS commands are understood.

               The operator must use the EXIT command to return to normal 
               command mode.

               Sessions automatically return to command mode upon 
               disconnection. 

               PZTDOS accepts both the MSDOS backslash (\) and the UNIX 
               forward slash (/) pathname separator characters, and they may 
               be freely mixed.  For the sake of clarity however, the prompt 
               always displays the path using the MSDOS convention, as this 
               is familiar to the most users.

               As in MSDOS and UNIX, when specifying pathnames, a single dot 
               (.) represents the current directory, and a double dot 
               represents the parent directory.  Thus a command such as "CD 
               ../FRED" would change to directory FRED, which is located off 
               the current directory's parent.

               Unlike MSDOS, PZTDOS does not maintain a separate "current 
               directory" on each drive, and you will be logged to the root 
               when changing drives.  The normal A: B: etc. commands can be 
               used to change drive, and the CD (change directory) command 
               can also accept a drive letter.

               Notes:
               PZTDOS is fully multitasking, i.e. normal router operation 
               continues while PZTDOS mode is operating.

               Console sysops may also invoke a conventional dos "shell" 
               using the <F9> key, for running commands and programs not 
               available within PZTDOS.
               This mode is NOT multitasking and normal router operation is 
               suspended for the duration of the shell.  The operator must 
               limit the duration of the shell session otherwise the 
               software watchdog (if enabled) will reboot the system.



      XROUTER Sysop Manual Revision 2.0                          Page 108
      Command Reference - Sysop-only Commands


               TSR's and programs which interfere with the timer or serial 
               ports should not be invoked from a shell as they may lock up 
               the router or affect its performance.  Shell sessions are 
               ended with the EXIT command.


      FRACK -- Display / Set FRACK for a port.

               Syntax:  FRACK <port> [msec]

               Displays the current FRACK (AX25 level 2 T1 timer) setting 
               for the specified port, or allows it to be changed.

               If the second argument is omitted, the current value is 
               displayed, otherwise the value in milliseconds is used.

               The new setting overrides the value specified in the CFG 
               file, and remains in force until changed or the next restart.

               Examples:  FRACK 2          - Display port 2 frack setting
                          FRACK 2 6000     - Set port 2 frack to 6 seconds

               Note: A typical FRACK setting for 1200 baud is 7000 (7 secs),
                     and specifies how long AX25 will wait for a level 2 ack 
                     before requesting confirmation.  Setting this figure 
                     too low is antisocial, achieves nothing, and could 
                     result in the link retrying out.


      FULLDUP -- Display / Set full duplex mode.

               Syntax:  FULLDUP <port> [0 | 1]

               Displays the current duplex setting for a port, and allows it 
               to be changed without restarting the system.  If port is 
               operating in full duplex mode, DCD is ignored and the port 
               will transmit whenever it has anything to send.

               If two numeric arguments are supplied, the duplex flag is set 
               to the second argument, otherwise the current setting for the 
               specified port is displayed.  Values are: 0 - simplex, 1 - 
               full duplex.

               Modified settings remain in force until changed or system is 
               restarted.

               Example:  FULLDUP 3    - Display current setting for port 3
                         FULLDUP 3 1  - Set port 3 into full duplex mode

               Note: On KISS ports, allow up to 5 minutes for modified
                     settings to reach the TNC.











      XROUTER Sysop Manual Revision 2.0                          Page 109
      Command Reference - Sysop-only Commands


      IP -- Display / Change contents of IP routing table.

               Syntax: IP ROUTES
                       IP ROUTE ADD <host>[/len] <gateway> <port>
                       IP ROUTE DROP <host> <len>
                       IP ROUTE DEFAULT <port> [gateway [d|v|n]]
                       IP ROUTE LOOKUP <host>
                       IP TTL [1-255]

               The IP commands are used to display and alter the contents of 
               the table responsible for routing of IP datagrams.

               This table contains a series of entries which are checked 
               whenever a datagram is routed.  The search stops at the first 
               entry which matches the address and mask.

               The command arguments are as follows:

               <host>      Target host IP address in dotted quad form.
               <len>       No. of bits to be matched (from left) 0-32
               <gateway>   Destination gateway IP address in dotted quad. 
               <port>      Port number on which to route the datagram.
               <d|v|n|e>   Mode: (d)atagram, (v)irtual circuit, (n)etrom
                           (e)ncapsulated

               The DEFAULT subcommand sets up a default route which is used 
               when no other route is found.  If no gateway is specified, 
               the target will be assumed to be a direct neighbour.  If not 
               specified, the mode defaults to datagram.

               The ADD subcommand adds an entry to the routing table.  The 
               first argument is the target host IP address, with optional 
               mask. e.g. 44.131.90.1/32 means "match all 32 bits", whereas 
               44.131.90.0/24 means "match the most significant 24 bits", 
               and would route all 256 addresses from 44.131.90.0 to 
               44.131.90.255.
               The second argument is the "gateway" address, i.e. the 
               address of the system which can handle the datagram.  
               The third argument is the port to route the datagram on, and 
               the last argument is the mode.
               Datagram mode should be used on links with low loss rates.  
               Better performance can be obtained on lossy links by using 
               Virtual Circuit mode.  Netrom mode is inefficient, but can 
               "tunnel" datagrams across non-ip-capable parts of the ax25 
               network.  Encap mode (IP/IP) is for tunnelling amateur IP 
               across non-amateur IP networks.

               The DROP subcommand removes an entry from the table.  Both 
               the target host and the mask must match.

               The LOOKUP command is used to checks if there is a known 
               route to a specified host.

               The TTL command displays or sets the "Time To Live" for IP 
               datagrams, overriding the value specified in the .CFG file.







      XROUTER Sysop Manual Revision 2.0                          Page 110
      Command Reference - Sysop-only Commands


               Examples:  IP ROUTE DEFAULT 3 44.131.90.6 v
                          IP ROUTE ADD 44.131.95.0/24 44.131.95.240 9 d
                          IP ROUTE DROP 44.131.97.1 32
                          IP ROUTE LOOKUP 44.131.244.31
                          IP TTL 30

               Availability: The ADD DROP and DEFAULT subcommands are not
                             available to non-sysops.

               Note: The IP routing table is necessary only for IP, and does
                     not take any part in normal ax25 and Netrom activities.  
                     See elsewhere for details on how to set up the IP 
                     system.

               See also: IPROUTE, ARP.


      KILL -- Terminate any session

               Syntax:  KILL <session>

               KILL immediately terminates the specified session, 
               disconnecting any links involved.  Useful for disconnecting 
               troublemakers or failed sessions.

               Session numbers are shown by the U(sers) command.

               Example:  K 301  - Terminate session numbered 301

               Limitations:  You cannot kill your own session.


      LOADNODES -- Load the nodes and routes tables from a disk file.

               Syntax:  LO[ADNODES] [filename]

               The LOADNODES command loads the nodes and routes tables from 
               a "recovery" file.  If a filename isn't specified, PZTNODES 
               is the default.  It can be used to reconstruct the tables 
               without having to wait for nodes broadcasts to be received.

               This occurs automatically when the router is started, but if 
               the PZTNODES file was empty, you may wish to quick start from 
               a daily or weekly backup file which you previously created 
               with SAVENODES.


      LOG -- Enable / disable activity logging.

               Syntax:  LOG [on | off]

               The LOG command is used to enable or disable the logging of 
               router activity, such as connections, disconnections, errors, 
               user commands etc.  It overrides the default setting 
               specified in XROUTER.CFG.

               The optional argument may be "ON" or "OFF".  The former 
               enables logging, and the latter disables it.  If no argument 
               is supplied, the current setting is reported.



      XROUTER Sysop Manual Revision 2.0                          Page 111
      Command Reference - Sysop-only Commands


               The console may override a remote sysop's settings.

               Examples:  LOG ON  -  Enables logging.
                          LOG OFF -  Disables logging.

               Note: Do not enable long-term logging if you are running a 
               floppy based system, as you will seriously compromise system 
               performance.


      MAN -- Display Online Sysop's Manual pages.

               Syntax:  MAN [command | topic]

               The MAN command is used to access the online sysop's manual, 
               which is a collection of pages, each covering a different 
               command or topic.

               The MAN pages are designed for sysop use, and usually give 
               more detail than the corresponding HELP pages.

               Entering MAN alone displays a list of available pages.

               To read a specific page enter MAN followed by the command or 
               topic for which you require help.

               The manual is divided into several sections.  Section 1 is 
               the command reference section.

               Example:  MAN ARP      Display manual page for ARP command.

               The following conventions are used in MAN pages:

               < >   Command argument - These braces and the text enclosed
                     within them represent any piece of text typed after the 
                     command.  The <> do not form part of the argument.

               [ ]   Optional argument - These braces enclose anything
                     which is not always present. If used within a command 
                     name (e.g. N[ODES]), it indicates that the command may 
                     be abbreviated to a minimum form while remaining 
                     unique.

               Availability: Although this command is currently available to
                             all users, it is not shown in the list of 
                             normal commands because it generates a lot of 
                             output, some of which is not relevant to non-
                             sysops.  Its use by non-sysops may be withdrawn 
                             at a later date if it proves to be a problem.

               Limitations: Although most commands may be abbreviated, it is
                            not currently possible for the MAN command to 
                            correctly identify the required page from an 
                            abbreviated argument.  Thus "MAN NODES" is 
                            acceptable, whereas "MAN NO" is not.







      XROUTER Sysop Manual Revision 2.0                          Page 112
      Command Reference - Sysop-only Commands


                            This problem will be addressed in a later 
                            version, but a temporary work-around might be to 
                            make several copies of each MAN file for all 
                            permutations of the command.  Beware though, 
                            this may make the list very confusing!

               Note: Due to its size it is difficult to ensure that everyone
                     has a completely up to date sysop document, but the MAN 
                     pages will always contain the latest information.  They 
                     will be kept updated by distributing new pages as 
                     required.

               See also:  H -- General help system.


      MAXFRAME -- Display / Set port MAXFRAME value.

               Syntax: MAX[FRAME] <port> [n]

               The MAXFRAME command is used to display and set the AX25 L2 
               MAXFRAME (window) value for the specified port.  This is the 
               maximum number of unacknowledged frames allowed before the 
               link must stop and wait for an ack.  The normal range is 
               between 1 and 7, although maxframes of up to 127 are allowed 
               in Modulo-128 links.

               If the second argument is omitted, the current value is 
               displayed.

               If the setting is changed, the new setting remains in force 
               until it is changed again, or until the router is restarted, 
               in which case it returns to the default value specified in 
               the port entry in the CFG file.

               Examples: MAX 2     - Display current setting for port 2
                         MAX 2 6   - Set maxframe for port 2 to 6.


      MHCLEAR  Clear MHeard list

               Syntax:  MHC[lear] <portnum>

               The MHCLEAR command clears the MH list for the specified 
               port, and would typically be used if the radio had been 
               changed from one frequency to another.  If <portnum> is zero, 
               all MH lists are cleared.


      MINQUAL  Display / Set port minimum quality

               Syntax: MIN[qual] <port> [n]

               The MINQUAL command is used to display and set the Net/rom 
               minqual value for the specified port.  Within nodes 
               broadcasts received on that port, any node whose quality is 
               less than the minqual will not be accepted into the nodes 
               table.





      XROUTER Sysop Manual Revision 2.0                          Page 113
      Command Reference - Sysop-only Commands


               If the second argument is omitted, the current value is 
               displayed.

               If the setting is changed, the new setting remains in force 
               until it is changed again, or until the router is restarted, 
               in which case it returns to the default value specified in 
               the port entry in the CFG file.

               Examples: MIN 2      - Display current setting for port 2
                         MIN 2 30   - Set minqual for port 2 to 30.


      MMASK -- Select which protocol(s) to monitor (trace)

               Syntax:  MM[ASK] [0 - FFFFh]

               The MMASK command selects which protocol layers will be 
               monitored when traffic tracing is enabled.

               The optional argument is a HEX number between 0000h and 
               FFFFh, which is calculated by adding together the desired 
               values from this table:

                  0001 - Incoming frames          0100 - ICMP
                  0002 - Outgoing frames          0200 - TCP
                  0004 - AX25 layer 2             0400 - KISS
                  0008 - AX25 info frames         0800 - SLIP
                  0010 - AX25 layer 3             1000 - PASSALL
                  0020 - AX25 layer 4             2000 - Hex Dump
                  0040 - IP frames
                  0080 - ARP frames

               If no argument is supplied, the current setting is reported.

               The default setting for the first console is 03FF, which 
               displays all incoming and outgoing traffic from AX25 layer 2 
               upwards.

               This command duplicates the function of the <F4> key.

               The console can override a remote sysop's settings.

               The PASSALL option enables frames which fail the validity 
               checks at one layer (e.g. KISS checksum) to be passed to the 
               next layer above for tracing.

               Examples:  MMASK 0201  -  display incoming TCP frames only 
                          MMASK 0242  -  display outgoing TCP and IP

               Note: Don't try to trace too much detail via a remote link -
               see warning in MONITOR below.

               See also:  MONITOR  -  Enable / disable monitoring.
                          MPORT    -  Select port(s) to monitor.


      MONITOR -- Enable / disable traffic monitoring (tracing)

               Syntax: MON[ITOR] [on | off]



      XROUTER Sysop Manual Revision 2.0                          Page 114
      Command Reference - Sysop-only Commands


               The MONITOR command is used to enable or disable the display 
               of incoming and outgoing traffic.

               The optional argument may be "ON" or "OFF".  The former 
               enables the display, and the latter disables it.  If no 
               argument is supplied, the current setting is reported.

               If used at the console, this command enables and disables 
               tracing to the console window, and works in conjunction with 
               the <F2> (monitor toggle) key.

               If used by a remote sysop, monitored frames are sent to him 
               instead of the console window.  In order to avoid overloading 
               the link, the MPORT setting is cleared every time monitoring 
               is enabled, so the sysop must then issue the MPORT command to 
               select which port(s) to monitor.

               The console may override a remote sysop's settings.

               Examples:  MON ON  -  Enables tracing.
                          MON OFF -  Disables tracing.

               Only one sysop may receive the trace display at any one time.

               Note:  Remote sysops must ensure that their link with the 
               router is capable of carrying the large volume of traffic 
               resulting from tracing.  Attempting to trace too many ports / 
               too much detail on a slow link may result in poor 
               performance.  You have been warned!

               See Also:  MPORT  -  Select port(s) to monitor.
                          MMASK  -  Select type of activity to monitor.


      MOTD  -- Maintain "Message Of The Day"

               Syntax:  "MOTD [<days> <text>] | [ @ ]"

               The MOTD command displays, sets or clears the "Message Of The 
               day", which is a single line of text sent only after L2 ctext.
               If Ctext isn't sent, Motd isn't sent.

               The <days> count is decremented at midnight, and the message 
               stops being displayed when it reaches 0.  It is meant for 
               displaying urgent notifications, rally adverts etc.  Anything 
               more permanent should go in ctext.

               If no arguments are supplied, the current motd (if any) is 
               displayed.

               If the first argument is "@", the current motd (if any) is 
               cleared.

               If two arguments are supplied, the first one should be the 
               number of days to display the message, and the second should 
               be the message itself, which can be up to 80 characters and 
               may include spaces.  A "days" count of 1 will display the 
               motd until midnight.




      XROUTER Sysop Manual Revision 2.0                          Page 115
      Command Reference - Sysop-only Commands


               Examples:

               MOTD 3 WyrePak Meeting Tues 21/8 8pm Sutton Arms
               MOTD @


      MPORT -- Select which port(s) to monitor (trace)

               Syntax:  MP[ORT] [0 - FFFFh]

               The MPORT command selects which ports will be monitored when 
               traffic tracing is enabled.

               The optional argument is a HEX number between 0000h and 
               FFFFh, which is calculated by adding together the desired 
               values from this table:

               Port  HEX    Port  HEX    Port  HEX     Port  HEX
                1   0001      5  0010      9  0100      13   1000
                2   0002      6  0020     10  0200      14   2000
                3   0004      7  0040     11  0400      15   4000
                4   0008      8  0080     12  0800      16   8000

              If no argument is supplied, the current setting is reported.

              This command duplicates the function of the <F3> key.

              If used by a remote sysop, monitored frames are sent to him 
              instead of the console window.  In order to avoid overloading 
              the link, the MPORT setting is cleared every time monitoring 
              is enabled, so the sysop must then issue the MPORT command to 
              select which port(s) to monitor.

              The console can override a remote sysop's settings.

               Examples:  MPORT 800  -  Trace port 12.
                          MPORT 1803 -  Trace ports 13, 12, 2 and 1.
          
               Note:  Remote sysops cannot trace activity on the port on 
               which they are uplinked

               See also:  MONITOR  -  Enable / disable monitoring.
                          MMASK    -  Select type of activity to monitor.


      PACLEN -- Display / Set global or port paclen values.

               Syntax: PACLEN <port> [value]

               The PACLEN command allows the global and port-specific PACLEN 
               settings to be displayed and changed.  Paclen is the maximum 
               data field length within a packet.

               The global PACLEN is specified in the L2 global parameters 
               section of the config file, and is the default value, used 
               where not overridden by a port-specific paclen.  






      XROUTER Sysop Manual Revision 2.0                          Page 116
      Command Reference - Sysop-only Commands


               All frames originating at the router use the global or port 
               paclens specified, but Netrom frames originating at other 
               systems can not be fragmented, so we have no control over 
               them, and they may be larger than our paclen.

               If a single numeric argument is supplied, and its value is 
               greater than 0, the current paclen for that port number is 
               displayed.  If the argument is 0 the global paclen is 
               displayed instead.

               If two numeric arguments are supplied, the first specifies a 
               port number and the second specifies a new paclen value for 
               that port.  Port 0 sets the global paclen.

               Examples:  PACLEN 0          - Display global default paclen
                          PACLEN 0 120      - Set default paclen to 120
                          PACLEN 10        - Display paclen for port 10
                          PACLEN 10 160    - Set port 10 paclen to 160


      PERSIST -- Display / Set the persist value for a port.

               Syntax:  PER[SIST] <port> [0-255]

               The PERSIST command is used to display and set the PERSIST 
               value for a port.  This is the "probability to transmit", 
               used as part of the CSMA channel access procedure.  A low 
               value is used when there are several stations sharing the 
               channel, giving each a fair chance to transmit.  A high value 
               is used when the channel isn't shared.  The optimum setting 
               is 256/n where n is the number of station sharing the 
               channel.

               If the command is used with a single numeric argument, the 
               current setting for that port number is displayed.

               If two arguments are supplied, the PERSIST value for the port 
               specified by the first is set to the value of the second.  
               The new setting remains in force until changed again or until 
               the router is restarted, in which case the value specified in 
               the CFG file will apply.

               Examples:  PERSIST 5        - Display value for port 5
                          PERSIST 5 64     - Set port 5 PERSIST to 64

               Note: On KISS ports, you should allow up to 5 minutes for a
                     new setting to become active.

               See also:  SLOTTIME -- CSMA interval timer


      QUALITY -- Display / Set default quality value for a port.

               Syntax: Q[UALITY] <port> [0-255]

               Displays or sets the default quality for nodes heard on the 
               specified port.  It should be set to zero to suppress all 
               level 3/4 activity on a port, e.g. on user access 
               frequencies.



      XROUTER Sysop Manual Revision 2.0                          Page 117
      Command Reference - Sysop-only Commands


               If a single numeric argument is supplied, the current quality 
               for that port number is displayed.

               If two numeric arguments are supplied, the quality for the 
               port specified by the first is set to the value of the 
               second.  The new setting remains in force until changed, or 
               until the router is restarted, in which case the setting 
               reverts to that specified in the config file.

               Example:  QUALITY 3      - Display quality for port 3
                         QUALITY 3 40   - Set port 3 default quality to 40


      REBOOT -- Reboot the computer.

               Syntax: RE[BOOT]

               Reboots the machine immediately and un-gracefully.

               It is typically used by remote sysops to restart the machine 
               after editing autoexec.bat/config.sys, installing a new 
               version of the software, or to recover from potentially 
               dangerous situations such as a corrupt hard drive.

               Console sysops can use the "Vulcan Nerve Pinch" (Ctrl-alt-
               del) or interrupt the power instead.

               Notes:  Remote sysops should only use this command if the
                       router program has been started from AUTOEXEC.BAT, 
                       otherwise it won't restart.

                       It is recommended that you include an automatic disk 
                       check and repair utility within AUTOEXEC.BAT to 
                       remove any problems which resulted in the REBOOT 
                       command being used.

                       See also:  RESTART - restart without reboot


      RESPTIME -- Display / Set L2 delayed ack timer for port.

               Syntax: RESPTIME <port> [millisecs]

               The RESPTIME command allows the value of the AX25 T2 (delayed 
               ack) timer for a port to be displayed or altered.

               If a single numeric argument is supplied, the current value 
               for that port number is displayed.

               If two numeric arguments are supplied, the first specifies 
               the port number, and the second specifies the new value for 
               the parameter.  The new setting remains in force until 
               changed, or until the router is restarted, in which case the 
               value specified in the CFG file is re-applied.

               Example:  RESPTIME 3       - Display resptime for port 3
                         RESPTIME 3 150   - Set port 3 resptime to 1500 ms





      XROUTER Sysop Manual Revision 2.0                          Page 118
      Command Reference - Sysop-only Commands


               Notes:
               The RESPTIME parameter specifies how long the router will 
               wait, after receiving a frame, before sending an ack for that 
               frame.  It helps to improve the efficiency by cutting out 
               unnecessary acks.  It allows a single ack to be sent when a 
               transmission contains several frames, instead of acking each 
               frame in turn.

               The value must therefore be at least the length of time it 
               takes to transmit a single packet.  At 1200 bauds (120 
               bytes/sec) a 120 byte packet lasts 1 second, a 180 byte 
               packet lasts 1500 millisecs and a 256 byte packet lasts just 
               over 2 secs.  Therefore resptime should reflect the paclen 
               used by the sender.
               1500 millisecs is a good compromise, but if the other end 
               regularly uses high paclens, 2000 or 2500 ms would be more 
               appropriate.  At 9600 baud, 200 millisecs is probably 
               adequate.

               Too high a value will cause the link to be too "relaxed", 
               whereas too low a value will cause too many acks.  Both 
               extremes reduce the link efficiency.

               See also:  FRACK, SLOTTIME


      RESTART -- Restart the program.

               Syntax:  RES[tart]

               The RESTART command re-starts the router without rebooting 
               the machine.  It would typically be used by remote sysops to 
               start a new version or read a modified .cfg file.

               Each restart results in the loss of a couple of hundred bytes 
               of memory, so once in a while you should do a reboot to 
               reclaim it.

               See also: REBOOT


      RETRIES -- Display / Set the retries parameter for a port.

               Syntax: RETRIES <port> [value]

               The RETRIES command allows the value of the level 2 maximum 
               retry value for a port to be displayed or altered, i.e. the 
               maximum no. of attempts at sending a frame without a reply 
               being received.  The usual setting is 10.  A setting of 0 
               means "try forever", and should be avoided except for 
               testing.

               If a single numeric argument is supplied, the current value 
               for that port number is displayed.








      XROUTER Sysop Manual Revision 2.0                          Page 119
      Command Reference - Sysop-only Commands


               If two numeric arguments are supplied, the first specifies 
               the port number, and the second specifies the new value for 
               the parameter.  The new setting remains in force until 
               changed, or until the router is restarted, in which case the 
               value specified in the CFG file is re-applied.

               Example:  RETRIES 3       - Display setting for port 3
                         RETRIES 3 15    - Set port 3 max retries to 15


      SAVENODES -- Save the nodes and routes tables to disk.

               Syntax:  SAVENODES [filename]

               The SAVENODES command dumps the nodes and routes tables to 
               a file.  If a filename isn't specified, PZTNODES is the 
               default.  This file is read by the router at start up, and 
               used to reconstruct the tables without having to wait for 
               nodes broadcasts to be received.

               Table dumping occurs automatically every hour, and when the 
               router is closed down using Alt-x, but this command allows 
               you to dump and examine the tables at any time, without 
               taking the router off line.

               Note: The PZTNODES file is identical to the BPQNODES file
                     used with BPQ node, and may be used to "quick start" 
                     when changing between the two systems.


      SHELL -- Run a command or program in a DOS shell.

               Syntax:  SHELL <cmd> [args...]

               The SHELL command is used for running DOS commands and simple 
               programs in a temporary DOS shell which terminates upon 
               completion of the program or command.

               Example:  SHELL DIR /W

               Limitations:  Trying to run interactive commands or programs
                             via this means may fail, and may crash the 
                             router.

                             At least 60k of free memory is required for the 
                             DOS shell itself in addition to any program 
                             loaded above it.

               Notes:  This command is not yet functional.

                       Console users may use the F9 key to invoke a DOS 
                       shell which persists until closed.


      SLOTTIME -- Display / Set the slottime parameter for a port.

               Syntax: SLOTTIME <port> [millisecs]





      XROUTER Sysop Manual Revision 2.0                          Page 120
      Command Reference - Sysop-only Commands


               The SLOTTIME command allows the value of the CSMA interval 
               timer for a port to be displayed or altered.  The usual 
               setting is 100 milliseconds.

               If a single numeric argument is supplied, the slottime value 
               for that port number is displayed.

               If two numeric arguments are supplied, the first specifies 
               the port number, and the second specifies the new value for 
               the parameter.  The new setting remains in force until 
               changed, or until the router is restarted, in which case the 
               value specified in the CFG file is re-applied.

               Example:  SLOTTIME 3       - Display slottime for port 3
                         SLOTTIME 3 150   - Set port 3 slottime to 150

               See also:  PERSIST


      TCP  -- TCP status / configuration commands.

               Syntax:  TCP S[TATUS] [sock#]

               The TCP command will eventually be used to display and 
               dynamically configure various parameters of the TCP module. 
               It currently accepts only the STATUS sub-command, which 
               displays the status of the TCP sockets.

               If [sock#] is not supplied, all the active sockets are 
               displayed, otherwise only the matching socket is displayed.

               The display shows the socket number, the remote and local 
               addresses, the state, and the amount of queued data in bytes. 
               The states are as follows (see RFC793):

                     0    Closed              6    FINWAIT2
                     1    Listen              7    Close wait
                     2    SYN sent            8    Closing
                     3    SYN Received        9    Last ACK
                     4    Established         10   Time Wait
                     5    FINWAIT1


      TIME -- Display / set system time.

               Syntax:  TIME [hh:mm]

               If no argument is supplied, this command displays the current 
               setting of the DOS clock.

               If an argument of the form HH:MM is used, it sets the DOS 
               clock to the specified time. (24 hour format)

               Example:  TIME        - Display current time.
                         TIME 23:06  - Sets DOS time to 23:06

               See also:  DATE -- set system date





      XROUTER Sysop Manual Revision 2.0                          Page 121
      Command Reference - Sysop-only Commands


      TXDELAY -- Display / Set the transmit keyup delay for a port.

               Syntax:  TXD[ELAY] <port> [millisecs]

               The TXDELAY command allows the value of the transmit keyup 
               delay for a port to be displayed or altered.

               If a single numeric argument is supplied, the current value 
               for that port number is displayed.

               If two numeric arguments are supplied, the first specifies 
               the port number, and the second specifies the new value for 
               the parameter in milliseconds.  The new setting remains in 
               force until changed, or until the router is restarted, in 
               which case the value specified in the CFG file is re-applied.

               Example: TXDELAY 3       - Display txdelay for port 3
                        TXDELAY 3 300   - Set port 3 txdelay to 300 ms

               Notes:
               TXDELAY is the interval between the transmitter being keyed 
               up and the start of a transmitted packet.  It allows time for 
               the RF to reach its full value, and for the TX audio circuits 
               to stabilise.
               Some synthesised rigs require a large txdelay (500 or more) 
               to allow the synthesiser to swing between RX and TX 
               frequencies, and many rigs have audio stages which take 100 
               ms to stabilise while oversized electrolytics charge up.

               One factor which is often overlooked is the other end's 
               receiver.  It takes a finite time for the squelch to open, 
               and if the rig has just been transmitting it may take a while 
               to stabilise back to receiving, especially with synthesised 
               rigs.  If your txd is too short, you will be sending replies 
               before the other end is ready to hear you, and unnecessary 
               retries will result.

               On KISS TNC's, you should allow up to 5 minutes for any new 
               setting to take effect.

               See also:  TXTAIL


      TXOK -- Display / Set "ok to tx" for a port.

               Syntax:  TXO[k] <port> [0 | 1]

               The TXOK command displays the current txok flag setting for a 
               port, and allows it to be changed.  This flag controls 
               whether or not the transmitter is allowed to key up.  If set 
               to zero, nothing will be sent on the port (see notes).  By 
               default, all ports have this flag set to a non-zero value.

               If two numeric arguments are supplied, the txok flag is set 
               to the second argument, otherwise the current setting for the 
               specified port is displayed.  Values are: 0=don't transmit, 
               anything else=ok to transmit.





      XROUTER Sysop Manual Revision 2.0                          Page 122
      Command Reference - Sysop-only Commands


               Modified settings remain in force until changed or system is 
               restarted.

               Examples: TXOK 3        - Display current setting for port 3
                         TXOK 3 0      - Stop port 3 transmissions.

               Notes:
                       Setting TXOK=0 does not actually disable the 
                       transmitter itself, it merely prevents any frames 
                       being sent to the TNC, so if the latter has a built-
                       in CWID, it will still key up the TX so send the 
                       CWID.

                       It should be obvious, but if you set TXOK=0 for the 
                       port you are using to send commands, you will lose 
                       control of the router!


      TXTAIL -- Display / Set the transmit keyup delay.

               Syntax:  TXT[AIL] <port> [millisecs]

               The TXTAIL command allows the value of the transmit keyup 
               delay for a port to be displayed or altered.  This is a 
               parameter used only by KISS TNC's and SCC cards, and it 
               controls the length of time the TX is held on after the last 
               character has been sent to the SIO / SCC shift register.
               It allows time for the last character plus two CRC bytes and 
               a closing flag to be sent, and should therefore be set no 
               lower than the time required to send 4 bytes.  Due to the 
               granularity of PC timing, for SCC cards it should be at least 
               60 ms.

               If a single numeric argument is supplied, the current value 
               for that port number is displayed.

               If two numeric arguments are supplied, the first specifies 
               the port number, and the second specifies the new value for 
               the parameter in milliseconds.  The new setting remains in 
               force until changed, or until the router is restarted, in 
               which case the value specified in the CFG file is re-applied.

               Example:  TXTAIL 3       - Display txtail for port 3
                         TXTAIL 3 100   - Set port 3 txtail to 100 ms

               Note: After modifying this value, you may have to wait up to
                     5 minutes for it to take effect.

               See also:  TXDELAY


      UDP   -- UDP status and configuration commands.

               Syntax:  UDP S[tatus]

               The UDP command currently accepts only the STATUS sub-
               command, which displays the active UDP sockets and their 
               status.




      XROUTER Sysop Manual Revision 2.0                          Page 123
      Command Reference - PZTDOS


      PZTDOS COMMANDS
      ===============

      The following commands are available only within PZTDOS mode, i.e. 
      after issuing the "DOS" command.

               CD    -- Change Working Directory
               COPY  -- Copy file(s).
               DEL   -- Delete one or more files
               DIR   -- Obtain a directory listing.
               EDIT  -- Edit a text file.
               EXIT  -- Leave PZTDOS mode
               MD    -- Make Directory.
               MOVE  -- Move file(s).
               REN   -- Rename file(s).
               RMDIR -- Remove Directory.
               TYPE  -- Display a text file.

      Each command is discussed in more detail in the following section:


      PZTDOS COMMANDS IN DETAIL
      ~~~~~~~~~~~~~~~~~~~~~~~~~

      CD -- Change Working Directory.

               Syntax: CD <[drive:]<dir>

               The CD command changes the "working directory" to the one 
               specified by <dir>.  It is available only within PZTDOS.

               If <dir> is an absolute pathname, beginning with \ or /, it 
               is used as specified, otherwise it is interpreted relative to 
               the current working directory.  The command recognises "." 
               and "..", and both forward and reverse slashes may be freely 
               mixed.

               Unlike the MSDOS command of the same name, if <dir> is 
               preceded by a drive spec the PZTDOS version will also change 
               the current drive.

               Examples: CD ../FRED    CD C:\WINDOWS\SYSTEM


      COPY -- Copy file(s).

               Syntax: COPY <source> [dest]

               The COPY command copies the file(s) specified by the pathname 
               <source> into the file(s) or directory specified by [dest].

               <source> may be a directory, a single file, or multiple files 
               specified using wildcards, and may contain a drive and path 
               spec.  If <source> is a directory, all the files in that 
               directory will be copied.  If <source> contains wildcards, 
               all matching files will be copied.






      XROUTER Sysop Manual Revision 2.0                          Page 124
      Command Reference - PZTDOS


               [dest] may be a directory, a single file, or blank.  If 
               [dest] is a directory, the source file(s) are copied into it 
               as separate files.  If [dest] is a single file, the source 
               file(s) are concatenated into it.  If [dest] is not 
               specified, the file is copied into the working directory and 
               retains the original filename.

               Examples:  COPY C:\MYPROG.EXE  A:TESTPROG.EXE  
                          COPY A:FWD.SYS                      
                          COPY WHAT.SYS  A:                   
                          COPY C:\TMP1 D:\TMP2
                          COPY *.HLP HELP.DOC

               Portability:  Normal dos syntax is followed, except that
                             concatenation using the "+" operator is not 
                             supported.

               Note:  Overwrites destination files without warning.


      DEL -- Delete one or more files.

               Syntax:  DEL <filespec>

               If <filespec> describes one or more files, they are deleted. 
               The number of files deleted is reported upon completion.

               Examples:  DEL FRED.TXT
                          DEL \TMP\LOG??98.*


      DF -- Display free space on drive.

               Syntax:  DF [drive]

               The DF command displays the free and total space in bytes on 
               the specified drive, plus sector and cluster size 
               information.

               If no drive is specified, the current drive is assumed.

               The drive letter need not include the colon.

               Examples:  DF
                          DF E:


      DIR -- Obtain a directory listing.

               Syntax:  DIR [drive:][path\][mask]

               The DIR command lists the contents of the specified directory 
               using the optional specified mask.

               If a drive is not specified, the "current drive" is assumed.

               If a path is not specified, the "current working directory" 
               is assumed. 




      XROUTER Sysop Manual Revision 2.0                          Page 125
      Command Reference - PZTDOS


               If mask is not specified, "*.*" is assumed.  If only the 
               filename part is specified, the extension ".*" is assumed.

               Examples:  DIR MSGHDR??.*
                          DIR \LOGS\
                          DIR E:\PUB\DOCS\*.TXT

               Limitations:  Does not at present accept pipes, redirection 
                             or switches.


      EDIT -- Edit a Text File

               Syntax: E[DIT] [drive:][path\]<filename>

               Invokes the text editor, allowing text files to be viewed or 
               edited.

               See separate section detailing Line Editor commands.


      EXIT -- Leave PZTDOS mode

               Syntax:  EXIT

               Closes a PZTDOS session and returns to normal command mode.

               The complementary command is "DOS", which causes entry to 
               PZTDOS mode.


      MD -- Make Directory.

               Syntax: MD [drive:][path\]<dirname>

               MD creates a directory with the specified pathname.  It is 
               identical to the MSDOS version.

               If drive or path are not specified, the current working drive 
               and/or path are assumed.

               The specified path may be absolute, or relative to the 
               current directory.

               Examples:  MD fred                    
                          MD d:\usr\pub\packet

               See also:  RMDIR -- Remove Directory.


      MOVE -- Move file(s).

               Syntax: MOVE [drive:][path\]<filename1> 
                            [drive:][path\][filename2]

               Moves the file(s) specified by the first argument (source) to 
               the new location and/or name(s) specified by the second 
               argument (target).  Both filenames may contain wildcards.




      XROUTER Sysop Manual Revision 2.0                          Page 126
      Command Reference - PZTDOS


               "source" must not be a directory.  If it doesn't contain a 
               path, the current working directory is assumed.

               "target" may be a directory.  If a filename is not specified, 
               the original name(s) are used.  If target is a single file, 
               the source must also be a single file.

               If source and target filenames are different the file(s) will 
               be renamed at the same time.

               Examples:  MOVE fred.bat test.bat            - Rename only.
                          MOVE test.bat c:\                 - Move only.
                          MOVE c:\test.bat d:\tmp\fred.bat  - Move & rename.

               Portability: This command follows normal MSDOS v 7 syntax, 
                            apart from the ability to rename a directory, 
                            which is not implemented.

               See also: COPY, REN


      REN -- Rename file(s).

               Syntax: REN [drive:][path\]<oldname> [drive:][path\]<newname>

               Renames one or more file(s) from <oldname> to <newname>.

               If the source path is not specified, the current working 
               directory is assumed.

               If the destination path is not specified, the renamed file(s) 
               remain(s) in the source directory.

               If you specify two different paths, this command will move 
               the file to the new path, providing it is on the same drive.

               The filenames may contain wildcards.

               Examples:  REN FWD.SYS  FWD.OLD
                          REN  C:\AUTOEXEC.BAT  AUTOEXEC.BAK
                          REN  C:\TMP\FRED.DOC  \JUNK\JILL.DOC
                          REN  *.SAV *.19

               Limitations: Source and destination pathnames must be on the
                            same drive.  (Use the MOVE command for renaming 
                            to a different drive)

               Portability: This command follows normal dos syntax.

               See also: MOVE -- Move a file with optional rename.


      RMDIR -- Remove Directory.

               Syntax:  RMDIR [drive:][path\]<dirname>

               RMDIR deletes a directory with the specified pathname, if it 
               exists.




      XROUTER Sysop Manual Revision 2.0                          Page 127
      Command Reference - PZTDOS


               If drive or path are not specified, the current working drive 
               and/or path are assumed.

               The specified path may be absolute, or relative to the 
               current directory.

               Examples:  RMDIR fred             Delete sub-directory FRED
                          RMDIR c:\windows       Improve your system!!

               See also:  MD -- Make Directory.


      TYPE -- displays a text file.

               Syntax: TYPE [path/]<filename>

               The TYPE command displays the specified text file without 
               pagination.

               Example: TYPE ../DOCS/FRED.DOC

               Limitations:  For use with text files only.
                             There are no limitations on the size of file 
                             which can be displayed.  The command does not 
                             (yet) allow concatenation of files, and the 
                             output may not (yet) be redirected to a file.
                             Wildcards are not accepted.



































      XROUTER Sysop Manual Revision 2.0                          Page 128
      Command Reference - Line Editor


      LINE EDITOR COMMANDS
      ====================

      In this section, n1, n2 and n3 refer to line numbers, which must be 
      greater than zero, and within the range of line numbers used in the 
      file.  The space between the command and the first number may be 
      omitted, and the numbers can be separated by spaces, commas, colons, 
      tabs etc.   Parameters in square brackets [] are optional.  When 
      copying, moving or inserting lines, the "source" text is inserted at 
      the "destination" line, i.e. "in front of" the original text.

      ?              Displays a brief list of commands.

      A <text>       Append line <text> to the file.  The editor ignores
                     exactly one space between the A and the text to be 
                     inserted, so if you want to enter a line with leading 
                     spaces, add one extra.

      C n1 n2 [n3]   Copy line(s).  If n3 is omitted, line n1 is copied into
                     line n2, otherwise the block n1 to n2 inclusive will be 
                     copied into the position beginning at n3.
                     Note: n3 must not be within the block being copied.

      D n1 [n2]      Delete line(s).  If both n1 and n2 are specified, the 
                     block of lines between and including n1 and n2 will be 
                     deleted.  If n2 is omitted, or is the same as n1, only 
                     n1 will be deleted.
                    
      I n1 <text>    Insert <text> into line n1.

      L n1 [n2]      List (display) line(s).  If n2 is specified, lines n1 
                     to n2 inclusive will be displayed, otherwise it will 
                     display 10 lines beginning at n1.  If n1 is omitted, 
                     the first 10 lines of the text will be displayed.

      M n1 n2 [n3]   Move line(s).  If n3 is specified, the block of lines 
                     n1 to n2 inclusive will be moved to the position 
                     beginning at n3, otherwise the single line n1 will be 
                     moved to the n2 position.

      Q              Quit.  The text is abandoned and the original file is
                     left intact, providing you hadn't used the W command.

      S              Save the text.  Syntax and function identical to W.

      W [<file>]     Write (save) file being edited to disk.  If <file> is
                     specified, the work is written there instead of the 
                     original name, but will not overwrite an existing file.

      W! <file>      Write the text being edited to <file>, overwriting any
                     existing file of that name.

      WQ             Write the modified text back to the original file and
                     quit editor. (Same as ZZ)

      ZZ             Same as WQ (see above)






      XROUTER Sysop Manual Revision 2.0                          Page 129
      Command Reference - FTP Server


      FTP SERVER COMMANDS
      ====================

      The router's inbuilt FTP server accepts the following commands:


              ABOR    CDUP    CWD     DELE    HELP    LIST    MKD     MODE
              NLST    NOOP    PASS    PORT    PWD     QUIT    RETR    RMD
              RNFR    RNTO    STOR    STRU    SYST    TYPE    USER


      All commands and arguments are case-insensitive, thus "cwd", "CWD" and
      "cWd" are equally valid.

      Both UNIX style (e.g. /pub/fred) and DOS style (e.g. \pub\fred) 
      pathname conventions are accepted.

      Unlike DOS, the server does not maintain separate "working 
      directories" for each drive, so pathnames which include a drive letter 
      must start at the root of that drive.  e.g. "c:mydir\fred.txt" is not 
      valid, whereas "c:\mydir\fred.txt" is.

      The FTP commands are described in detail below:


      ABOR -- Abort data connection.

               Syntax: ABOR

               The ABOR command tells the server to abort any data transfer
               currently in progress and close the data connection.  The 
               control connection is not closed.

               If the data connection is not open, this command has no 
               effect.


      CDUP -- Change Directory Up By One Level

               Syntax:  CDUP

               The CDUP command changes the current working directory up one 
               level to the parent directory, i.e. it performs the function 
               of "CWD .."

               This command has no arguments, and if already at the root it 
               has no effect.

               See also: CWD -- Change Working Directory


      CWD -- Change Working Directory

               Syntax:  CWD [drive:\]<path>

               The CWD command changes the current working directory (and 
               drive if necessary) for the FTP session.





      XROUTER Sysop Manual Revision 2.0                          Page 130
      Command Reference - FTP Server


               Examples:

               CWD FRED        Change to subdirectory FRED.
               CWD ..          Change up one level to parent directory
               CWD /           Change to root directory
               CWD /FRED/JIM   Change to JIM subdirectory of FRED directory.

               See also:  CDUP -- Change up one directory;


      DELE -- Delete file(s).

               Syntax:  DELE [drive:\][dir\]<mask>

               Examples:

               DELE JIM.TXT         Delete JIM.TXT from current directory.
               DELE /FRED/DOG.EXE   Delete DOG.EXE from directory /FRED
               DELE *.BAT           Delete all files with .BAT extension.

               Notes:  Wildcards '*' and '?' are accepted.


      HELP -- Display help for FTP server commands.

               Syntax:  HELP [command]

               Examples:  HELP        Displays basic info and list of cmds.
                          HELP CWD    Gives help for the CWD command.

               Notes:
               Some FTP clients may intercept the HELP command to give help 
               on client commands.  In this case, the REMOTEHELP command, if 
               it is implemented should translate to a server HELP command.  
               If not, the client may have a command which passes commands 
               "RAW" to the server.  If all else fails, TELNET to port 21 
               and the HELP command will work.


      LIST -- lists FTP server directory contents.

               Syntax:  LIST [drive:\][dir\][mask]

               The LIST command causes a directory listing to be sent from 
               the FTP server to the client over the data connection.  If 
               the data connection cannot be established, the command will 
               fail.

               The optional argument consists of a directory path and 
               filename mask.  If no path is specified, the current 
               directory is assumed.  If no mask is specified, "*" (all 
               files) is assumed.  Wildcards '*' and '?' are accepted. 

               Examples:
               LIST              Displays all files in current directory
               LIST C:\PUB       Lists all files in PUB subdir of drive C:
               LIST /USR/*.EXE   Lists all .exe files in /USR directory





      XROUTER Sysop Manual Revision 2.0                          Page 131
      Command Reference - FTP Server


               See also:  NLST -- List names only


      MKD -- Make new directory.

               Syntax:  MKD [drive:\]<pathname>

               The MKD command creates a new directory of the specified 
               name.  If pathname is not fully qualified, the new directory 
               is created within the current working directory.

               Examples:  MKD FRED
                          MKD C:/JIM/BILL

               See also:  RMD -- Remove directory


      MODE -- Specifies the data transfer mode.

               Syntax:  MODE <mode_code>

               MODE specifies how the data is to be formatted and 
               transferred via the data connection.  Mode codes are as 
               follows:

               B - Block         Data is sent in blocks
               C - Compressed    Data is compressed
               S - Stream        Data sent as stream of characters

               The default transfer mode, which is the only one currently 
               implemented, is Stream.  The command is included to prevent 
               unnecessary error replies.

               Examples:  MODE S   Sets (S)tream transfer mode.


      NLST -- (Name List) lists directory contents in short form.

               Syntax:  NLST [<filespec>]

               The NLST command causes a directory listing to be sent from 
               the FTP server to the client over the data connection.  If 
               the data connection cannot be established, the command will 
               fail.

               The optional argument consists of a directory path and 
               filename mask.  If no path is specified, the current 
               directory is assumed.  If no mask is specified, "*" (all 
               files) is assumed.  Wildcards '*' and '?' are accepted. 

               The listing consists of filenames only, without size, date 
               and other supplementary information.

               Examples:  NLST
                          NLST K:\PUB
                          NLST /USR/*.EXE

               See also:  LIST -- List directory contents




      XROUTER Sysop Manual Revision 2.0                          Page 132
      Command Reference - FTP Server


      NOOP -- (NO OPeration) does nothing. 

               Syntax:  NOOP

               The NOOP command does not affect anything, and its only 
               action is to cause the server to send an "OK" reply.  It is 
               perhaps useful for testing that the control connection is 
               still functioning.


      PASS -- Specifies user password at login.

               Syntax:  PASS <password>

               The argument to the PASS command is a string of up to 5 
               characters in response to the secure password challenge.  The 
               string may not contain spaces.

               The command must be immediately preceeded by the USER 
               command, which causes the system to replies with a matrix 
               consisting of 5 lines of 5 numbers thus:

                     4 1 6 3 7
                     3 5 2 6 3
                     7 1 9 2 4
                     2 7 1 4 6
                     3 5 2 6 1

               The remote sysop must then choose ONE of the lines, and send 
               the PASS command followed by the 5 characters from the 
               password string which correspond to the 5 numbers on the 
               chosen line.  There must be a space after PASS but no 
               spaces between the characters.

               Example:  PASS WATER

               Notes:
               If the sysop has connected on a port which has SYSOP=1 in the 
               config file (e.g. a secure wire link), the response to this 
               command is ignored, and the sysop is granted full access.

               See also:  USER -- Specify your username.


      PORT -- Specifies the IP address and port for the data connection.

               Syntax:  PORT h1,h2,h3,h4,p1,p2

               The PORT command specifies the IP address and TCP port number 
               to be used by the data connection.  The argument is the 
               concatenation of a 32 bit IP address and a 16 bit TCP port 
               number, broken into 8 bit fields, each field being 
               transmitted as a decimal number.  The fields are seperated by 
               commas, and the high order fields are transmitted first.

               Example:  PORT 44,131,91,2,4,1

               Specifies IP address 44.131.91.2 and TCP port number 0401 
               (1001 decimal)



      XROUTER Sysop Manual Revision 2.0                          Page 133
      Command Reference - FTP Server


               Notes:
               Under normal circumstances this command is not needed.  The 
               data connection defaults to TCP port 20 at the client's IP 
               address of the control connection.  However, it allows data 
               to be sent to a completely diffent host if required.


      PWD -- Print Working Directory.

               Syntax:  PWD

               The PWD command causes the full path of the user's current 
               working directory to be displayed via the control connection.

               See also: CWD -- Change Working Directory


      QUIT -- Terminates an FTP session.  

               Syntax:  QUIT

               If a file transfer is not in progress, the QUIT command 
               terminates the FTP session and closes the control connection.

               If file transfer is in progress, the control connection will 
               remain open until transfer is complete, allowing the result 
               code to be transmitted.  The control and data connections 
               will then close.

               An unexpected close on the control connection will abort any 
               data transfer currently in progress.

               See also:  ABOR -- Abort current command.


      RETR -- Retrieve (download) file.

               Syntax:  RETR [drive:\][dir\]<filename>

               The RETR command causes the named file to be sent from the 
               FTP server to the client over the data connection.  If the 
               file can't be found, or access is denied, or the data 
               connection can't be opened, an appropriate error message is 
               returned.

               Examples:  RETR JIM.TXT
                          RETR ../FRED/DOG.EXE
                          RETR C:\CONFIG.SYS

               Notes:  Single files only, wildcards not accepted.

               See also:  PORT -- Specify host/port for data connection.
                          STOR -- Send a file to the server.


      STOR -- Store (upload) file.

               Syntax:  STOR [drive:\][dir\]<filename>




      XROUTER Sysop Manual Revision 2.0                          Page 134
      Command Reference - FTP Server


               The STOR command requests the FTP server to accept data via 
               the data connection and store it as a file with the specified 
               name.

               If the file specified in the pathname already exists at the 
               server, it is overwritten by the new data.  The overwrite 
               doesn't take place until the file has been correctly 
               received, which prevents a critical file being lost if the 
               data connection breaks. 

               Examples:  STOR JIM.TXT
                          STOR /FRED/DOG.EXE

               See also:  RETR -- Retrieve a file from the server.


      RMD -- Remove Directory.

               Syntax:  RMD [drive:\]<pathname>

               The RMD command deletes the directory specified by <pathname> 
               from the FTP server, providing you are the owner of that 
               directory and have write access.

               Examples: RMD FRED
                         RMD K:/JIM/BILL

               See also:  MKD -- Make directory


      RNFR -- Rename From

               Syntax:  RNFR [drive:\][dir\]<filename>

               The RNFR command specifies the old pathname of a file which 
               is to be renamed, and must be immediately followed by an RNTO 
               command.  The two commands together cause a file to be 
               renamed.

               If the file isn't found the request will be refused.

               Examples: RNFR ../JIM.TXT
                         RNFR K:/FRED/DOG.EXE

               See also:  RNTO -- Rename To


      RNTO -- Rename To

               Syntax:  RNTO [drive:\][dir\]<filename>

               The RNTO command specifies the new pathname of a file which 
               is being renamed, and must immediately follow an RNFR 
               command.  The two commands together cause a file to be 
               renamed.

               If the new pathname isn't valid, the request will be refused.





      XROUTER Sysop Manual Revision 2.0                          Page 135
      Command Reference - FTP Server


               Examples:  RNTO DOG.TXT
                          RNTO K:/FRED/CAT.EXE

               See also:  RNFR -- Rename From.


      STRU -- Specify File Structure.

               Syntax:  STRU <structure_code>

               STRU specifies the internal structure of the files being 
               transferred, i.e.  how the data is organised within them. 
               Structure codes are as follows:

               F - File       No record structure (contiguous bytes)
               R - Record     File is collection of sequential records
               P - Page       File is composed of independant pages

               The default structure, which is the only one currently 
               implemented, is (F)ile.  The command is included to prevent 
               unnecessary error replies.

               Example:  STRU F   Sets (F)ile structure.


      SYST -- Operating system enquiry.

               Syntax:  SYST

               The SYST command is used to find out what type of operating 
               system is being used on the server.

               The first word of the reply is one of the agreed system 
               names, in this case MSDOS.  The rest of the reply gives the 
               server version number and byte size.


      TYPE -- Specifies the data representation type.

               Syntax:  TYPE <type_code>

               The argument to the TYPE command specifies how the data is to 
               be translated between storage and transfer.  Type codes are 
               as follows:

               A - ASCII      Text.  End of line indicated by <CR><LF>   
               I - Image      No translation.  Bytes stored as received.
               L <bytesize>   Size of local storage bytes

               Examples:  TYPE A    Specifies Ascii type.
                          TYPE L 8  Specifies local byte size of 8 bits


      USER -- Specify user name for login.

               Syntax:  USER <username>






      XROUTER Sysop Manual Revision 2.0                          Page 136
      Command Reference - FTP Server


               The argument to the USER command is a string of up to 8 
               characters specifying the user's login name (usually 
               callsign).  The string must not contain spaces.

               Users are not allowed access to the system without logging 
               in.

               If the username (or callsign) exists in the PASSWORD.SYS file 
               the server sends a grid of 5x5 numbers (see PASS command) 
               generated from the user's stored password.  If the username 
               is not found, an error message is sent instead, and access 
               will not be permitted.

               The USER command must be immediately followed by the PASS 
               command.

               Example:  USER SYSOP   Enters your login name as "SYSOP"
                         USER G8PZT   Use callsign


               Note: Because the FTP server allows you to use any string of 
               characters as a name, you may set up different passwords for 
               different login names, and these may be in addition to your 
               callsign, which is the one used for ax25 sysop access.

               See also:  PASS -- Specify password.




































      XROUTER Sysop Manual Revision 2.0                          Page 137
                                                                                                                               