PE1CHL.960622: Fixed bug in uploading on telnet session (introduced in 961231 version). Added support for "param tx y|n" to many types of interfaces. (before, it was only supported on scc interfaces) PE1CHL.960602: Fixed bug that affected only Pentium systems (problem with SALL 32 bits). This could affect "default" routes and IP filters using "default". Some other (minor) bugs fixed. Memory is given back to operating system ("mem r") automatically every 15 minutes in DOS version. SMTP header handling added to AX.25 mailbox forwarder. Some headers that are not useful in the AX.25 BBS system are deleted when forwarding messages to a BBS. The remaining headers are just passed on. This should lead to fewer complaints from AX.25 users about header overhead when an SMTP mailer is used to handle BBS messages. PE1CHL.961231: New command "arp info " prints only ARP table entries for specified host. Screen swapping in Linux version now also works in xterm. Uploading in Linux version fixed (would only upload files with CR/LF line separators) PE1CHL.961030: Bugfix in FTP permission checking. When access was allowed to a directory using a spec like: guest * c:\public 3 Access would be allowed to all directories whose name started with "public", e.g. "c:\public.not". This could be avoided by using the form "c:\public\" in the ftpusers file, but now it is checked correctly in the program. Made SMTP end-of-message handling RFC-821 compliant. Older NET versions and all NOS versions I checked are not compliant, but Linux is. The result is that messages with lines starting with '.' are sometimes not transferred transparantly (an extra '.' may be added at the beginning of such a line, or one may be dropped). This can cause 'correctable errors' in 7PLUS file transfers via SMTP. Screen swapping added to Linux version (only when running on text console). Several small bugs fixed in Linux version. Some more queue length limits added. Sending very fast pings to the node should no longer crash it. Problem with "param 5 8" in SCC driver (duplex-LAP mode) fixed. PE1CHL.960424: Bugfixes in automatic routing / ARP code. When a user has routes on more than one node, invalid ARP entries were made. It is still important to make sure each user is routed to one node only. PE1CHL.960324: Domain Name Server did not echo the question in the response, which caused problems with the UNIX "resolver". Interestingly enough, it worked OK with "named" and "nslookup" (which I used for testing). This problem has now been solved, so that direct use of the DNS from /etc/resolv.conf now works. Since 960123 version the agressive parameters on NET/ROM interlinks no longer worked, because of some internal changes that were not completely implemented. Fixed. PE1CHL.960211: Allocated memory is now released back to the operating system (as far as possible) when a "shell" command is executed. This was present for some time in the Atari ST version, but is now also implemented for MSDOS. Memory can also be released using the "mem r" command (and the number of bytes released is printed). The number of "bytes available from DOS" will increase. This feature sometimes allows "shell" commands to be run after the program has temporarily used a lot of memory. The command "mem c " dumps variables and allocated memory to a disk file. This can be used when reporting bugs that result in a memory leak. Fixed a bug that sometimes caused unwarranted "don't connect hop-to-hop" message. Added more detail to "cannot open file" messages. The reason a file cannot be opened is not necessarily that the file does not exist, yet many users seem to think that. Therefore, the error code returned from the operating system is now printed (as text, when possible). Error codes vary depending on the operating system, but could include things like "No such file", "Not enough memory", "Too many open files", "Permission denied", "Is a directory" etc. PE1CHL.960123: New mode for "route trace": route trace record Uses the IP option "record route" to find the path to a host using only a single packet sent to the host. This requires the destination host to be within 9 hops, and also requires the "record route" to be correctly implemented on the systems on the path to the host. This works right with NET and recent versions of Linux, but not with most versions of NOS. New command "route clear []" Clears the routing table. Optionally a number of bits can be specified, and only routes with >= this number of bits are deleted. Use this before loading an entirely new routing table, e.g. using "source routes.net". New mode for NET/ROM interface: netrom interface downlink This sets up an interface that can be used as a downlink (to make AX.25 connects from the node) but will not accept uplink connections. This can be useful on BBS systems that use the BPQ emulation, and want to forward on some interface, but do not want to provide access to the NET/ROM network on that interface. New command "netrom aexclude" allows exclusion of NET/ROM nodes from the nodelist based on the alias field, similar to existing "netrom exclude" command (for call). The match is case-insensitive. Example: netrom aexclude "*box" netrom aexclude "bbs*" When a callsign is matched by the "netrom include" list, it is accepted even when the alias appears in the "netrom aexclude" list. Note that a node excluded this way is not excluded from connects, it just won't be placed in the nodelist when a nodebroadcast is received. FTP server can now send short messages at certain places. When starting the server, a filename can be passed like this: start ftp - - c:/net/welcome.ftp This file will be sent as soon as the FTP server is connected. When a user has logged in, and a file "message.ftp" exists in his working directory, this file is shown. When a "cd" command is done, and a file "desc.ftp" exists in the new working directory, that file is shown. Please keep these files small. They are read in memory at the time they are being sent. A few lines should be sufficient, if necessary the user can be pointed to a "read.me" file that can be downloaded. Note that lines should be 75 characters or less, because a numeric code is shown in front of each line (adhering to the FTP protocol spec). FTP server now times out after 3 days of inactivity while in "command" state (i.e. no transfer in progress, user not typing any command). This should reduce the number of left-over FTP sessions after a user has carelessly switched of his system while logged in. Modified BBS "SID" to include version number and the "M" capability. (accept message-ID's on any message, not just bulletins) Note that message-ID's are included in the headers on the received message, but NET does not do any duplicate checking itself. "nodeinfo" server now multicasts link information. It can be displayed using "node s " on a system where the nodeinfo server is running. This information is for future use by an automatic IP router. When doing "upload" on a session where upload was already active, a file remained open. So, when doing this a number of times, no more files could be opened. This is now fixed. PE1CHL.951026: Implemented Domain Name Server. This can be useful to service local systems that have a client (resolver), like Linux systems and some versions of NOS. NET itself cannot use the server because of technical details internal to the program. The server implements the A, PTR, MX and HINFO RR's, and uses information from the "hosts.net" and "alias" files. To enable it, add the following command to autoexec.net: start dns When asked for an MX record, the server will check if it can deliver mail to the requested host, and will reply with its own hostname if it can. This is useful when local users want to send mail using this system as a store-and-forward relay. When they don't want this, they should not ask for MX info. (this is usually a settable option) HINFO is only available when the system's own hostname is requested. PE1CHL.950819: TXDELAY measurement added to SCC driver. For the first packet in a transmission, the time between "DCD on" and the start of the packet is measured, and an average value is kept for a number of callsigns on each interface. The command "ax25 txdelay " specifies the number of callsigns to keep for each interface, default is 0. Example: ax25 txdelay lap48 23 Using "ax25 txdelay " a list is displayed, specifying the measured txdelay, the mean deviation on the measurement, and the number of measurements (samples) that have been made for each callsign. The command TXDELAY in the NET/ROM also displays this list. Stations can optimize their TXDELAY setting by aiming for some low value of measured TXDELAY, e.g. 50 ms. After a change, a number of transmissions should be made to allow the average to be updated. When the "Mdev" has a low value, the measured TXDELAY value should be OK. Note that for some modems it may not be possible to get a low value, because they give DCD before they are actually ready to demodulate data. IP filtering added. A table can be built specifying a combination of source subnet, destination subnet, incoming interface, and IP protocol range. Each IP packet is examined using these table entries, and it is only routed when it does match an entry in the "include" table or does not match an entry in the "exclude" table. This is similar to "netrom include" and "netrom exclude" as in version 940904. Tables are built using: ip exclude [d||ANY] [prot [prot]] ip include [d||ANY] [prot [prot]] The subnets are in the usual "[ip.address]/bits" notation as used for routes. The interface can be specified or be ANY. The protocol numbers specify a range of protocols to match (or a single protocol when only one number is given). Examples are: ICMP 1 IGMP 2 IP-in-IP 4 TCP 6 UDP 17 RSPF 73 AX25-in-IP 93 IP-in-IP 94 Note that a table entry only matches when ALL fields match. So to filter all traffic from and to a single subnet, 2 entries are needed: ip exclude default ip exclude default When a route is received (via nodeinfo) to a station in one of our own "node subnets", an "arp publish" entry for that station (AX.25 type) is automatically added. The result is that local stations don't need to set an explicit route to that station, as the node will reply with its address and will route the traffic automatically. It can be a problem when two nodes are on the same frequency, one is the primary node for the subnet and some routes are directed to the other node. The "node exclude" command has been extended with an "a" flag to exclude these automatic ARP updates in this case. The primary node uses: node exclude secondary_node 0 a This causes the arp updates from the secondary node to be ignored, while the routing info (and other node info) is accepted. To disable all automatic "arp publish" updates: node exclude default 0 a The "arp publish" command no longer requires a hardware address. When it is omitted, the address of the interface where an ARP REQUEST is received is replied. Example: arp publish sys2.pe1chl ax25 This will cause all ARP REQUESTs for "sys2.pe1chl" to be replied with the address of the interface where they arrive (this is the normal use of "arp publish") Settable timeout on "date get" command: a 4th parameter to the "date get" command is taken as a timeout in seconds. Example (using default port and tos): date get pe1chl - - 30 TCP SYN packets are examined when routed, and the MSS option will be adjusted down to the maximum MSS possible on the incoming and outgoing interfaces. Thus, a more optimal end-to-end MSS is chosen, and fragmentation is avoided (e.g. when running IP over NET/ROM somewhere inbetween the endpoints) PE1CHL.950527: When a critical error occurs, a message is now printed to alert the operator to the problem. Critical errors are usually disk read errors, and they could cause strange problems because NET sets a critical error handler that just fails the operation (mainly for unattended use), so there were only indications like "cannot open hosts.net" when in fact there was a read error somewhere. The message has an error code, usually 08 (sector not found) or 0C (general failure). See a DOS technical manual for full details. When multiple errors occur during a single command, only the last one is printed. MSDOS version: Expert Mouseclock status printed in the "! !" command. New bug in REJ frame handling (introduced in 950417) fixed. From now on, problems in AX.25 handling occurring only with certain software, and directly related to bugs in that software, will no longer be worked around but passed on to the author of the defective software. Sigh. PE1CHL.950417: Unfortunate bug in "ax25 lqdump" fixed. This bug makes dumps made with older versions almost useless. (valid data was dumped only on first dump and on dumps made after 4 days of uptime) Nasty bug in IP Multicast routing fixed. (affected only MSDOS version) Problem with multi-fragment IP Multicast datagrams fixed. To overcome difficulties when editing the NETATTRxxx strings with certain editors that can't handle the ESC character, these strings can now include some special sequences like those used in the MSDOS PROMPT command. e.g., $E is used for ESC. Note that $ normally indicates a variable in NET, except when the string is enclosed in single quotes ('). Therefore, to use this method the setenv commands must be like this: setenv NETATTRCMD '$E[0;33;1m' Processing of REJ frames in AX.25 (interlink mode) again modified, to work around a problem in some other software. When more than one REJ frame is received from the other side, no more data is sent until T1 elapses. This avoids a permanent loop where the same I frame is sent several times in a single transmission, and several REJ frames are received as a reply, causing the retransmission of the same I frame. NET itself never transmits multiple REJ frames as a response, so this problem only occurred when talking to nodes running other software. PE1CHL.950326: Bug in NETSTATUSLINE fixed (this caused a crash when new connections were made on a session that was previously connected). Multicast tunnels are monitored (using ping) to check if the delay is not too long for proper Multicast protocol operation. If so, they are temporarily disabled until the delay is OK again. The "ip multicast tunnel" command displays the status (Enabled/Disabled) and the reason for disabling: 1=too-long RTT observed recently, 2=average RTT too long, 3=no ping replies received, 4=last ping reply too long ago. This change makes the use of slow AX.25 links for multicast tunnels safer. Note it is still better to use only reasonably fast links for these tunnels, and to avoid the use of tunnels as much as possible. Slow tunnels cause duplicated multicast packets in the network. Received nodeinfo is now checked against NET/ROM "exclude" and "include" lists, to enable lockout of non-network stations. Additionally, "node exclude" and "node include" commands have been added to control the nodes accepted into the nodeinfo list. These commands work like the NET/ROM "exclude" and "include", but they accept an IP subnet and "node scope" as selection pattern. Additionally, a flag specifies if the entry filters all node info (i), or only the route info (r). See also version 950618 for another flag. Examples: node exclude [44.137.0.0]/16 3 all node info from nodes in this subnet, with scope 3 or lower is excluded node include [44.137.40.0]/24 0 i include nodes in this subnet (scope 0 or higher), but only accept the info (not the routes) The filtering can be used to limit the spread of low-scope nodes that are not of local significance. This is done by excluding all nodes below a certain scope, then including all nodes in nearby subnets. Checks for overlapping "subnet" in node info is made. When an overlap is detected, a warning message is printed (each time the offending node info is received). Please coordinate the claims of subnets with other node sysops: each subnet should be claimed by one node only. MSDOS version: support for "Expert Mouseclock" added. When the driver for this clock (a DCF77 receiver connected to a COM port) is detected, the timezone setting is changed automatically depending on the daylight savings time information bits in the received signal. Thus it is no longer necessary to update the timezone setting twice per year. PE1CHL.950316: IGMP implementation completed. When "ip multicast routing on", an IGMP Host Membership Query will be sent with 1800 second interval. Any system wanting to receive Multicast packets will respond with a Report of the address(es) it wants to receive. When another system is heard reporting, the report is canceled. A Multicast address is requested using "ip mcastgroup
", and can be deleted by a "d" after the address. This is all still experimental and mainly useful for my debugging... On Atari ST and MSDOS, the "/o" option of "dir" requests an unsorted directory (as it appears on disk). This can be useful to evaluate the result of "INFO cmdname" and "HELP cmdname" commands in the NET/ROM, as the first file found in the directory that matches the cmdname is shown. Some bugs in the "nodeinfo" server have been fixed. "netrom bcnodes poll" command sends a modified NODES broadcast that will be recognized by neighboring nodes (running NET or NOS) and instruct them to send their NODES broadcast soon. Using this in the autoexec.net will ensure quick updating of the NET/ROM tables after a restart. "netrom downlink" command now also accepts "circuit" as an interface name, indicating a hardwired connection via a NET/ROM circuit. This is useful when a BBS is attached to a node using a NET/ROM link, and the BBS callsign is different from the callsign of the node associated with the BBS. (which is often the case in the Netherlands) Example: netrom downlink pi8bbs circuit pi1bbs When a NET/ROM user connects PI8BBS, the node will setup a NET/ROM circuit to PI1BBS, and send a "C PI8BBS" there. SCC driver %DCD and %RTS are now kept in 24 separate counters, selected by the local time (hour). The existing "scc b" command still prints the overall percentages, but details are shown when a single channel is reported using "scc b". Example: scc b2 Results gathered by "ax25 lq" can be dumped to a file for later analysis. The commands are: ax25 lqdump dump link quality data to specified file. when - is specified for the filename and the scheduled dump (see below) is active, the filename given for the scheduled dump is used. ax25 lqdump arranges for the link quality data to be dumped every hours. Example: ax25 lqdump c:\public\linkqual.dat 24 in onexit.net: ax25 lqdump - It is a good idea to dump the link quality data to a file in the public FTP area, so others can download and analyse it. When the file becomes large, rename it to another name, e.g. "c:\public\linkqual.old". The new data will then be written to a newly created file, and the old file can be removed after it has been downloaded. A program to analyse the data still has to be written... the file format is available on request. More screen attribute settings strings introduced, to allow customization of colors (mainly useful in MSDOS version). There is even a simple status line capability. The following environment variables can be set to change screen colors: NETATTRCMD defines attributes for the "net>" prompt NETATTRECHO defines attributes for character echo NETATTREXIT sent before exiting to restore default colors NETATTRMESG defines attributes of asynchronous messages NETATTROUTPUT defines attributes of command screen output NETATTRSES defines attributes of output on session screens NETATTRTRACE defines attributes of trace output NETCLS sent to clear the screen (using current attributes) NETSTATUSLINE defines position and attributes of status line These variables are normally set using "setenv" commands in the configuration file, and should contain ANSI escape sequences that are interpreted by the ANSI.SYS device driver (or equivalent, like NNANSI). Because the values are not yet known at the time NET prints its startup messages, these always appear in the screen colors active at that time. The command screen can be cleared and set to the NETATTROUTPUT colors by using the new command "cls", when NETCLS is set to the sequence "^[[2J". The STATUSLINE has some information about the active sessions. Each session is shown like "1: PI8NOS Con RTU", where 1: is the session number (1* when it is the current session), PI8NOS is the call of the connected station, 'Con' is the status (Connected), R indicates data is in the receive queue, T indicates data is in the transmit queue, and U indicates an "upload" is still in progress. Note that the statusline can interfere with some screen output. It can be turned off by simply not setting the NETSTATUSLINE variable in the configuration file. In the Linux version, a "dbm" version of the hosts.net, called hosts.db by default, is used to lookup the hostnames. This has been introduced in some earlier version, but was mistakenly not documented. The hosts.db file allows a much quicker lookup of hostnames and IP addresses, because index information is present in the file. Thus, NET does not need to do a sequential read of the entire file for each lookup. When the hosts.db file has not yet been created, an error message is displayed each time a hostname has to be looked up. When this happens, use the "host import" command to create a hosts.db, and then exit and restart NET so that it has the file available from the beginning. The hosts.db file is maintained and accessed using a few subcommands of the "host" command (which has no subcommands in the DOS and Atari version). The "host" subcommands are: host closedb close the hosts.db file immediately (it is automatically closed when no lookups have been done for 30 seconds) host comment |[] shows the comment info for the specified hostname or IP address, when it is available in hosts.db. e.g.: host comment pe1chl pe1chl: rob host export convert the data in hosts.db back to hosts.net form, and write it in the specified file (unsorted) host import [nocomment] loads a file (in the hosts.net format) into hosts.db, creating it when necessary. for each line in the file, a record for translation from hostname to IP address and IP address to hostname is added. furthermore, the comments (after a # character) are stored unless the "nocomment" option is specified (which saves space). host lookup |[] lookup a hostname and print its IP address, or lookup an IP address and print the corresponding hostname. this is the same function as the "host" command (without subcommands) performs in the DOS and Atari versions. host reorg performs a reorganization of the hosts.db, e.g. after a lot of changes have been made. this reads the existing hosts.db and writes all records one-by-one to a new file. may take some time. host update [nocomment] takes a DIFF file between the hosts.net as it was previously loaded using "host import", and the new version. the lines in this DIFF are processed to modify the hosts.db: lines starting with > are treated as additions, lines starting with < are treated as deletions from the file. when the "nocomment" flag is present, comments in the DIFF are not loaded in hosts.db. this command can be used to process the "host update" bulletins that are sent through the network by the address coordinator. PE1CHL.950119: Corrected problem with "record silent". Should now also work with FTP and Finger. Extra checks in packet driver and memory allocator in an attempt to further stabilize it. SCC driver verifies the SCC chip presence. A warning message is printed when some test values cannot be written to and read back from the chip. When a channel fails the test, it can be attached but a messages shows up when "sccstat " is used. PE1CHL.950115: Because of the increased codesize and the resulting memory problems in the MSDOS environment, the set of available versions has been modified a bit. A version for MSDOS with both PACSAT and NET/ROM code is no longer available, as this was not very useful anyway. The following versions are now available: Vers Features AtariST DOS86 DOS286 DOS386 Linux ------+----------------------------+-------+-----+------+------+----- AX25 | Only AX.25 protocols, no IP| | ax | | | IP | Only IP (SLIP/ethernet) | | ip | | | | | | | | | User | All except NET/ROM, PACSAT | | ut | u2 | | Sat | Includes PACSAT protocols | ut | | | u3 | net | | | | | | Node | NET/ROM, limited userinterf| nt | | n2 | n3 | Max | NET/ROM, full userinterface| lt | | | l3 | | | | | | | Added AX.25-over-ethernet capability compatible with G8BPQ node. This can be used to operate a node running NET together with one or more machines running applications (BBS, DXcluster) using BPQCODE on the application machines. Setup BPQCODE for ethernet usage using "odidrv" according to the supplied documentation. NET supports only Ethernet_II frame type with PID=08FF, so you have to configure BPQ like that (the default). Install a "packet driver" for the ethernet card in the machine running NET, and attach it using: attach packet g8bpq