+---------------------------------------------------+ | Build 1052 8. May, 2009 | +---------------------------------------------------+ | | | NAT32 IP Router for Microsoft Windows | | | | Home: http://www.nat32.com | | Help: http://www.nat32.com/nat32e/htm/help.htm | | Email: http://www.nat32.com/message.htm | | | | (C) 2009 NAT Software, Australia. | | | | 189,454 lines of C code | +---------------------------------------------------+ This build runs in Winsock Mode unless the NDIS3PKT Driver has been installed and started via a reboot. In Winsock mode, NAT32 does no IP Routing but still has approx. 250 powerful commands that you are free to use and enjoy at no charge. No installation or setup is needed in this mode. Simply start NAT32 with the command: nat32.exe 0 Version 1.8 WINDOWS 95/98/NT/2000/XP/2003 ------------------------------------------ NAT32 is a versatile Software Router which allows all computers on one or more private LANs to share one or more Internet connections. It can also be used to manage traffic passing through external DSL and Cable Modem routers. With appropriate configuration, NAT32 will bind to the following devices: Windows WAN devices: Modems, ISDN, ADSL, PPPoE, Microsoft VPN, OpenVPN Windows LAN devices: Ethernet, Token Ring (but not emulated TR) Windows TAP-WIN32: full support for OpenVPN and CoLinux Hybrid Devices: One-way cable modems, Satellite devices (DirecPC) NAT32 fully supports the Windows DUN/RAS Server, allowing dial-in access to machines which connect to the Internet via some other Interface. Administrators can remotely configure and interrogate NAT32 using a WEB Browser. An access control list allows only the local machine to do this per default. NAT32 is an IP Router, NOT a Proxy Server. Time-consuming reconfiguration of network applications is not required. All applications on your private LAN have address-mapped UDP, TCP and ICMP access to the Internet. NAT32 Version 1.8 supports "connection aggregation", a technique used for distributing Internet traffic over two or more modems (or other types of connections). The technique should not be confused with "modem bonding" or "multilink", which requires ISP support and is usually only available for ISDN services. Connection aggregation is particularly useful in cases where two or more Dial-Up Networking connections are available and router traffic is to be spread (more or less) evenly over multiple connections. The feature is also useful for DSL or Cable Modem users requiring a fallback Internet connection. If the high-speed connection fails, the DUN Connection can be easily enabled for emergency use. When the main Internet connection is restored, the backup connection is automatically disconnected. Installation OPTIONAL ------------ The NAT32 archive can be unzipped into any desired directory; the example below assumes the directory C:\NAT32. You can then run the setup.exe program, although this is entirely optional. Setup.exe makes NO major modifications to your system. In particular, no Windows DLLs or Drivers are overwritten or modified, and your networking configuration is not altered in any way. Only minor registry modifications are made. The only files copied to your Windows INF directory are nat32e.inf and the NDIS3PKT INF file. Before Running NAT32: --------------------- This version supports several features provided by Internet Explorer 6 (or higher). However, all of those features are optional and NAT32 works correctly on machines without Internet Explorer installed. WINDOWS 98SE users MUST install the NDIS.VXD upgrade available from the Microsoft Windows Update web site. This upgrade is essential because that version of Windows had a major bug in that driver. WINDOWS 95 users should install the Microsoft DUN 1.2 (or later) upgrade before running NAT32. This upgrade is an absolute must (even for Cable Modem users) because it contains the last VIP.386 and TCP/IP upgrades, as well as vastly improved Dial-Up Networking support. The upgrade is available from the Microsoft Windows Update web site. IMPORTANT --------- On Windows 9X and NT4 platforms, you must turn off IP Header Compression for all DUN Connections you plan to use with NAT32. If you ran setup.exe, this will have been done for you, but any connnections you add later will need to have IP Header Compression turned off manually. Installing NDIS3PKT ------------------- NAT32 uses a special version of Dan Lanciani's NDIS3PKT driver. DO NOT ATTEMPT to run NAT32 with any version of NDIS3PKT other than the one contained in this distribution. 1. Start the Control Panel Network Applet and click Add, then Protocol. Under Windows 2000/XP, open Control Panel, Network and Dial-up Connections, and then right-click any Local Area Connection. Then click Install and select Protocol, then Add. 2. Click the "Have Disk" button and specify the directory into which you unzipped NAT32 as the source directory. 3. Select the required .inf file: Windows 9X: NDIS3PKT.INF Windows NT: OEMSETUP.INF Windows 2K: NDIS3P2K.INF Windows XP: NDIS3P2K.INF 4. Click OK. 5. REBOOT WINDOWS, even if a reboot is not requested. This is because the NDIS3PKT driver can only be started at boot time. If it has ever been disabled for any reason, you must reboot Windows in order to restart it. On non-PnP systems (NT4), NDIS3PKT can only bind to adapters which Windows enabled at boot time. If you disable an adapter and later reenable it, you must reboot Windows so that NDIS3PKT can bind to it. Running NAT32 ------------- The first time NAT32 is run, it examines the existing Windows network configuration and generates several configuration files in the directory from which it was started. Click the Editor Icon for more details. IMPORTANT --------- For NAT32 autoconfiguration to work correctly, you MUST have at least one private LAN adapter which has been assigned a FIXED IP address. That address should be private, but it needn't be. A Dialog Box will be presented listing all Network Interfaces available on your system, and you should then select the Interfaces you would like NAT32 to use. For each of the selected Interfaces, you must click a radio button indicating the type of network to which the interface connects (Internet, Private, or One-way). If Windows Internet Connection Sharing is enabled, please turn it off or click Help for further details. A yellow shortcut will be added to your Desktop, and you should use that shortcut whenever you subsequently wish to run NAT32 with the selected interfaces. A grey shortcut is also added. It can be used to start a new NAT32 configuration run. The green shortcut starts a Web interface to NAT32 using the default browser on your system. IMPORTANT --------- The registered version of NAT32 can be run as a Service, but you MUST NOT start it as a service until it has been correctly configured and you have familiarized yourself with its operation. Full NAT32 documentation in the Help File: help.zip. ************************* HOW TO UNINSTALL NAT32 ************************* * * * Click Start/Programs/NAT32/Uninstall * * * * Uninstall leaves a few configuration files in your NAT32 directory, so * * you should subsequently drag the NAT32 directory to the Recycle Bin. * * * * To uninstall NDIS3PKT, use Control Panel Network to remove the driver. * * * ************************************************************************** NAT32 is FREEWARE when run in Winsock Mode. No time limits or other restrictions apply in this mode, but IP Routing is not possible because only Winsock network I/O is available. NAT32 behaves as SHAREWARE when NDIS3PKT is installed and started. When unregistered, this version will run for 2 hours to allow you to evaluate its capabilities. Several features are disabled, but the program can be restarted any number of times. In some cases, you may need to reboot Windows in order to restart the NDIS3PKT driver. NDIS3PKT has been modified to run with NAT32 only. ************************************************************************** * * * Online Registration: see menu item Help/How to Register * * * * Web Site: see menu item Help/About * * * * Support: see menu item Help/About * * * ************************************************************************** What's New in each release (by days of the month) ------------------------------------------------- May, 2009 BUILD 1052 *** Upgrade recommended for all users *** 5 Scripts now execute the break command after an if correctly. Shell modified to always return either the child pid or the return code from a function or 0. Command wchecki added. Same as checki command except that it works in WINSOCK mode. Dial and hangup commands now also work in WINSOCK mode. Be sure to create the files dialup.txt and hangup.txt for this to work. File dialup.txt sample: echo "About to dial UniVPN" dial UniVPN dialcfg File hangup.txt sample: hangup UniVPN Note that additional processing can be done in those files if required. File wuser.txt (if present) is now executed by startup if NAT32 is running in WINSOCK mode. 6 Demo version no longer times out when running in WINSOCK Mode and it can now also run as a service. 8 Exit problem fixed: NAT32 was exiting when a builtin command terminated. TCL now links in all NAT32 vars. If such a variable is modified within TCL, NAT32 sees the modified value thereafter. April, 2009 BUILD 1052 *** Upgrade recommended for all users *** 2 Function use_gateway modified to return SYSERR if a MIB entry is not found. Function setgw will retry up to 10 times at 1 second intervals if use_gateway returns SYSERR. This fixes the problem of the gateway sometimes not being found when a dial-up connection is established. 4 Winclose modified. WM_CLOSE now resets all the needed variables windows now close instantly. Function icsute modified to check pNSC before using it. This should fix the GPF problem on some machines when NAT32 starts. 5 Winchar modified to honour \r. This is useful for printing repeated status messages without filling up the screen. 7 Resize problem in nav.htm and nav.js fixed. 10 Several web page problems fixed. 12 Winchar \r support removed. 27 Ajax pages were not being refreshed at 1-sec intervals because of IE problem with "Expires: -1". 29 A few IE6 compatibilty problems discovered. Install IE7 for full functionality, as IE6 is considered obsolete. March, 2009 BUILD 1052 *** Upgrade recommended for all users *** 2 Web client now warns about frames with lengthy names, as they are most likely layer ads. Names longer than 8 chars are detected. To stop the ads from appearing, simply ignore the warning dialog but be sure to close it before navigating away from the site. 7 Command 'setwd' now supports a 'test' setting that turns frane name checking on or off. 14 Frame checking refined. IE command added. Usage: ie [url] | [-e path] 26 BUGFIX: DNSRD was faulting when turned off. This was because dgclose was sending a null message to dgread. 29 Command 'gw' modified to allow setting the gateway address of an interface. Usage: gw [ifn] [gw] To force the addition of a gateway when a DUN connection comes up, create a connection-specific script containing the following: gw $2 $3 setgw $2 February, 2009 BUILD 1052 *** Upgrade recommended for all users *** 1 Dial-up networking now writes all messages to nat32.log instead of ppp.log. Dial-Up Networking error fixed: mappings weren't being turned on for connections that don't have a default route. 2 Dial-Up Networking error fixed: a GPF occurred if an add route attempt was made with an invalid gateway address, 6 Command js: Redirection supported. Pipe and CTRL-C not supported. Note that "js > monitor" can be used instead of "js | more". 7 Ctrl-S in a web window now always shows the source of the top document of the web page. 10 Various scripts modified. Edit command modified to return a message when invoked via a TCP connection. 16 HTTPPUT command fully implemented. 18 Editor modified. HTTPGETE now works correctly. 22 Various problems with web pages under Mozilla tidied up. CDATA bug workaround implemented. January, 2009 BUILD 1052 *** Upgrade recommended for all users *** 4 IPPROC: when an ICMP DEST UNREACHABLE was sent, the source IP address was set to 0 until a route was found. This caused an incorrect destination address to be printed to the Console. Command setgw modified so that it adds a default route if use_gateway returns true. 8 Function preceive modified to return SYSERR rather than NULL. All calls to preceive now check for SYSERR rather than NULL. 10 In host transfer mode, some packets were being blocked unnecessarily. This caused incoming traffic that was ppmap'ed to the local MSTCP stack to be discarded. 17 Fault in ICSUTE Line 145 on startup: This fault occurs if the winmgmt service is not running. NAT32 does not check this service as it is generally considered to be an essential Windows service. 19 Trace window now supports an inverse filter. If the filter string starts with !, then display only lines that contain the remainder of that string. This is useful for displaying only packets that contain the specified string. 21 If the trace filter string is of zero length, then check all the filters that were loaded from file filter.txt at the time the trace window was opened. 25 Trace window modified. 28 Javascript (inline and included) can now be listed with the js command and the webcmd scripts option. Named inline functions on any web page can also be executed. December, 2008 BUILD 1052 *** Upgrade recommended for all users *** 1 Command dhcpd modified so that it does nothing if the DHCPD is not running. 3 During configuration, DHCP-configured private interfaces now remain untouched if the warning about this is cancelled. 4 Admin: Error message for local traffic removed. 6 ARP: arpsend was enforcing minimum Ethernet packet length and this caused OpenVPN traffic to fail. OpenVPN connections can now be shared, but note that the NAT32 TAP-WIN32 interface must be configured to "Share the Windows IP address". This is required because OpenVPN wants a 255.255.255.252 subnet mask. Command setht now disallows Host transfer Mode for private interfaces that are in shared mode. This is because there is no unique IP address for NAT32 to use on a shared mode interface. Note that if any private interface is configured for shared mode, you MUST specify and external DNS server address on your private machines. 10 Gateway issue in netstart modified. 11 Default DNS Server now OpenDNS (208.67.220.220 or 208.67.222.222). New command: setgw ifn Adds a default route if the specified interface has a gateway. Command 'if' modified: If a file of the specified name exists, the if action is executed. 12 Command 'for' modified: Now supports the following ifn suffixes: ifn.private ifn.internet ifn.gateway and ifn.ip 14 Memory leak in winclose fixed: color memory was not being freed. Service dependency changed to Tcpip (was Print Spooler). New Command: break Use in script files to terminate execution prematurely. 16 Command checki modified. If the interface has no gateway, the test packet is now sent via an interface-specific route to the destination (if one exists). 22 ICMP support enhanced. If an ICMP packet is received from the Internet, and if no ICMP mapping for that packet is in place, then use its original packet header details to find an entry in the port mapping table so that we can route the ICMP packet to the machine that caused it. 23 NAT32 can now be started with a third argument to specify that the user.txt file NOT be executed. UPNP client modified. 30 FritzBox DSL trace feature added. Command fritz_on turns on the packet capture feature. All DSL IP traffic is captured, decoded and displayed in the Monitor window. Command fritz_off turns the capture off. 31 Commands 'url' and 'httpget' modified to better handle proxy connections. DoLoadS is now never called for Internet URLs on any web page to avoid browser lockups until the request completes. This is actually a very common problem on the Internet: many sites make synchronous XMLHttpRequest calls without realizing that IE will hang until they complete. November, 2008 BUILD 1052 *** Upgrade recommended for all users *** 16 Error in x_mstcp fixed. IP fragments from MSTCP are now handled correctly. Netin1 and netin2k modified. 18 Errors in the handling of IP fragments fixed. Command: ping x.x.x.x 1600 now works. 19 Host Transfer Mode fixed for Dial-Up interfaces. 20 Interface Selection bug fixed. 23 For PPP connections, don't add a default gateway unless one is actually reported in the registry. October, 2008 BUILD 1050 *** Upgrade recommended for all users *** 4 Shutdown command modified: shutdown [-h | -r] [when] The above command shuts down NAT32 after 'when' seconds have elapsed. Argument -h halts Windows, argument -r reboots it. The setht command creates a batch file containing the Windows commands needed to restore default routes. 5 NAT32 now generates the files restore.bat and nat32.bat. File nat32.bat can be executed to restart NAT32 after a crash. File restore.bat restores any Windows routes that NAT32 might have been changed (via the setht commeand). File nat32.bat executes restore.bat before starting NAT32 with the last-used number of interfaces. 10 Several changes to check_pmap, map_port and unmap_port made. Command pmap now shows total traffic per entry. 12 Port mapping now deletes TCP entries immediately when: - both fin1 and fin2 have been received OR - rst has been received This makes entries disappear faster. NDIS3PKT also deletes mux table entries in the above two cases. Error in check_pmap fixed. It was causing bogus entries to be added to the pmtab when belated TCP fin segments came in. 13 Error in x_mstcp fixed. Our packet header wasn't being fully initialised unless tracing was on. 15 Bug in x_mstcp fixed. Packets with VLAN tags are now ignored, Packet buffer size increased. September, 2008 BUILD 1050 *** Upgrade recommended for all users *** 9 Minor bug fixes and web page enhancements. 10 New commands: form url The command opens a small web window and displays the url in it. mon string The command displays the string in the Monitor window. 11 Problem with use_gateway fixed. Note: For Dial-Up connections, the 'connect' script must be edited if a default gateway is NOT to be added when the connection comes up. 12 Minor bug fixes. 13 The special "app:cmd?" feature in the embedded browser has been replaced with "app?cmd=" to achieve the same effect. This was done because pages containing "app:cmd?" were giving errors like "unregistered protocol" when viewed with standalone browsers. Bugfix: an incorrect pDisp was being saved in the embedded browser. This was causing a GPF in Google Picassa searches (and possibly others). 16 Bugfix: Output to the Console by a web page (e.g. when debug is on) was causing lockup if the page made synchronous Ajax calls. The problem had to do with SendMessage reentrancy issues. They were fixed by means of a semaphore and not calling SendMessage in WinChar whenever the Console was displaying a web page. 17 Form command enhanced and modified. August, 2008 BUILD 1050 *** Upgrade recommended for all users *** 2 ADMIN feature: proxy authentication is now required. HTTPD feature: A href like the following can be used to put data into a
: "javascript: doLoad('shell?cmd=echo+test', 'Data')" 4 HTTPD qlen increased from 5 to 32. This solves the problem of connection refusal when debugging is on. WEBCMD: Busy command added, Get command fixed. 9 Command added: httpput url "data" The command does a POST and passes data in the request body. 12 Command ps: pipe to an invalid command was causing a GPF. This was because p32die was not resetting argmem and argmeml. 14 Command setns e1 caused problems because dnscheck is called in ipgetp. Dnscheck does a wname2ip, which can block for up to 20 sec. This was fixed by making the wname2ip lookup optional via a flag argument in dns_check. Command dnsrd now starts a multithreaded DNS resolver that resolves names by calling wname2ip. Note that the resolver only receives traffic on interfaces for which dnsmap is off. Command wdnsd now starts a Winsock DNS forwarder that forwards DNS request to the current NSERVER. 15 Command wdnsrd now starts a multithreaded Winsock DNS resolver that resolves names by calling wname2ip. 16 HTTPD POST support fixed. 18 Wname2ip now caches entries if setns e2 was done. Dgclose now makes pending dgread calls return SYSERR. DNSD, DNSRD, WDNSD, WDNSRD fixed. Memory leak in browser device fixed. 20 Commands httpget and httpput modified. Web DisplayHTMLStr modified: if a base url is specified, a tag is written before the string is written. 28 For DHCP-configured LAN interfaces without a DhcpDefaultGateway, NAT32 now assumes that the DhcpServer is the gateway. This was needed to make certain ISDN adapters work. 30 Admin bugs fixed: password and IP address checked, login.htm form now uses POST rather than GET so that passwords don't appear in the browser address bar. 31 Agent string table added. Command 'agents' list that table. Command 'agent n' sets the User Agent to the n'th string. Command 'wproxy' fixed. The ProxyEnable registry setting was being written as a binary value instead of a DWORD value. July, 2008 BUILD 1050 *** Upgrade recommended for all users *** 1 Various embedded browser enhancements. 11 Admin: adminu command modified so that usage details for already logged in users are not altered. 12 Admin: TCP options were not being handled correctly in unmap_port. As a result, Linux boxes were not displaying the login.htm page when disabled in NAT32 Admin. 13 Various fileexec calls were inheriting handles in CreateProcess. This was causing NAT32's Winsock handles to remain open if NAT32 was terminated and any created processes were still running. This then caused "Can't listen at port..." errors on restart. The only fileexec calls that now inherit handles are fileexecw and fileexecwh. 15 Vista support enhanced. Shortcuts modified. 16 Web pages modified. 18 Vista support enhanced but still incomplete. Basic NAT and Port Mapping works for LAN Adapters only. Most other features will be ported in the near future. Note that all WEB32 functionality is present on Vista. 22 HTTPD can now block POST requests at all debug levels, but only if the local browser is set to use HTTPD as its web proxy. 30 Bug in Tcl_CloseCmd fixed. Shell more command fixed. June, 2008 BUILD 1050 *** Upgrade recommended for all users *** 3 The code to connect to the TAP-WIN32 driver and set its Media Status was removed because other apps (e.g. coLinux) could no longer attach to the driver. There seems to be no solution for this problem so it is probably best to configure TAP-WIN32 to run in the "Always Connected" mode. Note that NAT32 isn't dependent on the media status as it can read and write packets as needed via the NDIS3PKT driver. NOTE: The tap command has been retained. 8 The number of DHCP-configured machines per network has been increased to 256. Note that the following adresses are reserved and will never be assigned: x.x.x.0 x.x.x.255 x.x.x.n x.x.x.w where x.x.x.n is NAT32's IP address on network x.x.x.0 and x.x.x.w is the Windows IP address on that network. 26 Command webcmd expanded. Command ps now also shows the command line. April, 2008 BUILD 1050 *** Upgrade recommended for all users *** 9 Minor problem with the IPHLPAPI on Windows 95 platform fixed. 11 Experimental: Incoming traffic is allowed for certain ports even when the blocking host transfer mode is on. The allowed ports are specified using the ppmap command. Note that if the listener is on the NAT32 machine, the ppmap command must specify a destination address of 0.0.0.0. 14 Experimental: All MSTCP traffic to/from a port range specified in the ppmap table is now forwarded. This allows servers on the network of the Internet connection to be reached when the blocking host transfer mode is on. Note that traffic to other servers is forwarded by NAT32 via the default route, not via the MSTCP network-specific route for the connection. 27 Fixed the NOD32 false positive alarm. Note that the fix was very simple, and full functionality was retained. One might wonder whether programs like NOD32 really can protect a computer against a determined virus attack. March, 2008 BUILD 1050 *** Upgrade recommended for all users *** 8 Major problem with the NDIS3PKT Intermediate Mode corrected. It now works for adapters that implement checksum offloading. The NDIS3PKT Intermediate Mode can now be used with any number of interfaces. Details are in file mstcp.htm. Major problem with the Host Transfer Mode corrected. The problem was related to XP and later MSTCP optimization issues. Host Transfer Mode now works correctly for multiple Internet interfaces. Support for IE8 Beta added. Promiscuous mode for PPP adapters is now disabled. The trace window still shows it as set but only changes filter settings, not the Receiver Mode. This was doen because setting the Receive Mode for PPP adapters breaks the MSTCP modes for the adapter. Simple Honeypot added: start honeypot It listens at NAT32 Port 80 and responds with ip:port of the NAT32 HTTP Server. 10 DNS resolution was failing when Host Transfer Mode was on and the DNS Extra flag was on. DNS Extra processing is now skipped for all DNS requests originating from the Windows IP address of a private interface. 12 The SETHTB command can be used to set the Host Transfer mode and block all MSTCP traffic for the host interface. That interface is now totally invisible to the Internet, and not even ARP requests are answered. The setns ex command now checks that no Internet interfaces have an MSTCP block. If so, turning on the DNS Extra Features has no effect, as this feature can't work if the underlying Internet connections are not available to Windows Apps. 14 The setht command now tests for Windows IP Forwarding. If it is on, it does not set the Host Transfer Mode for any interface, because DNS lookups cause packet cycles. 15 Bugfix: IPPGETP - the code that added a Windows Routing Table entry was freeing the packet buffer too early. 20 Bugfix: MSTCP - argv was being referenced in the while loop of the two threads it started. 23 Bugfix: Uninstalling the NAT32 Service while running as a service did not terminate NAT32 correctly. 24 Bugfix: Some web pages were crashing the embedded browser. New: Command 'kill 99' removes the NAT32 user interface windows. Point a web browser at localhost to interface to NAT32. 25 Bugfix: Demo version was not executing file 'onexit' on timeout. 27 New: Command 'tap [ifn] [attach | detach]' added. The TAP-WIN32 driver is detected in netstart and attached per default (function tapinit). Environment variable 'tap' holds the IFN of the TAP-WIN32 interface. Bug: Some web pages that link to some advertising sites are causing a GPF in DispatchMessage. A workaround for this has been added: After the GPF is displayed, clicking OK again dispatches the message and operation seems to continue normally. February, 2008 BUILD 1049 *** Upgrade recommended for all users *** 18 Major problem resolved: ICMP FNADF packets were being dropped whenever dial-up connection establishment had been triggered via a TCP packet. If the trigger was a UDP packet (e.g. a DNS lookup) no problems arose. February, 2008 BUILD 1048 *** New help files included *** 2 Various htm files modified. Multicast support modified: NDIS3PKT receiver mode is now RCV_MCAST. Netin1 now marks reflected Class D packets as [reflected][Class D]. Nbname broadcast propagation bug fixed. Local out packets to multicast (Class D) addresses now bypass routing and leave via the interface found in the IGMP Host Group Table. The igmp command can be used to manipulate that table. A setmc command has been added so that the NI_MULTICAST interface can be modified at run time. DHCP client support modified. 4 Multicast support is now started with command: mcinit ifn in file startup. This also initializes IGMP support on the specified interface. The multicast interface number can be modified with command: setmc [ifn] This also reports IGMP memberships. Note that NAT32 now implements IGMP and Multicast for all interfaces. Environment variables show if IGMP support is enabled and the default multicast interface. Previous builds had several bugs in the both the Multicast and IGMP support that rendered it inoperative (cksum problems, len problem, ifn problems and multicast receive mode not on). Version string added to startup file. The string is checked when NAT32 starts and a red warning is printed if the version number does not match the build number. 5 Arpadd and arpdel commands now support an optional ifn argument and allow 255.255.255.255 entries to be added to the ARP Table. As a consequence, ping 255.255.255.255 now works as expected, but only if an ARP broadcast entry for a specific interface exists in the ARP Table. 6 Arp Table size increased from 256 to 1024 Web Browser UI_GetExternal implemented. 8 Much time wasted compensating for a redraw bug in Java 6: When another window covers an applet's window, moving that window away leaves the exposed applet window undrawn. A focus click fixes it, but it should be automatic. The problem was eventually fixed by handling hWebIE WM_PAINT messages in NAT32. Previous versions of Java did not have this bug. This is a classical example of the risks one takes when one relies on software from another party. Various other focus and redraw issues in winio.c were also corrected. The resulting code is now simpler than the previous version. As a general rule, a WIN32 app should keep all focus change handling as simple as possible to avoid complications. 9 Winio.c now does a DoPageAction WEBPAGE_BLANK in its WM_CLOSE handler. This stops any controls like Java or similar and allows NAT32 to terminate quickly and cleanly. 11 Various HTM page updates. 13 Problem in winute: ni_ovalid not set on startup. An incorrect ni_other value was subsequently set. This could have caused various problems. 14 Problem with ni_ovalid fixed for DHCP-configured interfaces too. New command: setwd [on|off] Enable or disable web dprintf output (default is off). RSS.TCL script modified to strip \ characters from titles. SETW and SETI commands modified. The SETW command was erroneously assuming a TCP MTU of 1460 bytes (1500-40). Now modified to compute the actual MTU - 40. The SETI command was setting the default MTU to 1412 instead of to 1400 (a safer value). 15 Ipmap command now calls pmap to explicitly turn off port mapping so that the port mapping table is cleared. This was causing problems when an NDISWANIP connection went down. When the connection was restored (with a new IP address), existing mappings were being used for private TCP and UDP traffic being handled at the time. Monitor window now supports command input. January, 2008 BUILD 1048 *** New help files included *** 2 Major changes to Host Transfer Mode and Multiple Internet Interfaces support. Port mapping table increased in size to 1024 entries. Admin features improved. Incorrect token.htm file included in demo build. 6 Host Transfer Mode VPN connections now work. Please see setht.htm for details. 8 BUG: Version 1.6 of the Java Runtime has a compatibilty bug that occurs when IE 6 and later Embedded Browser Objects encounter an Applet tag on a web page. This bug crashes the application hosting the Browser Object (NAT32 in this case). Java 1.5 and earlier does not have this bug. The author is working on a fix. Admin default value now saved in Registry. NAT32 command line switch 'e' added. It denotes that an IE browser is to be embedded in the Console windows. While several bugs in the embedded IE code have been fixed in this release, there are still many opportunities for things to go wrong in the embedded browser. NAT32 therefore now defaults to NOT embedding an IE Browser object in its user interface. The 'e' command line switch (or option E in file conini) can be used to override this default. 10 Minor web page changes. 11 Webcmd functionality modified. 12 Function wcmd (called when app:cmd? is executed) was overwriting the 1024 byte command buffer. 13.12.2007 BUILD 1047 *** Now includes all help files *** Port Mapping code modified. New web interface. Environment variables added: ifn.internet, ifn.private ifn.gateway Web pages updated. Netstart modified to add correct routes for existing PPP client connections (private and Internet). DHCPD modified: Whenever an IP address is assigned, released or renewed, the file dhcp.tcl is executed as follows: dhcp.tcl ifn ip mac [name] op where ifn is the interface number, ip is the IP address, mac is the Ethernet address, [name] is the host name and op is one of the strings "assigned", "released" or "renewed". New command: daten returns the current date string without a closing new line char. Route add commands now accept a DNS name as the dst argument. Editor bug fixed: find now scrolls correctly. Shutdown command modified: shutdown [-windows] Now shuts down NAT32 and then Windows. NAT32 now terminates if file scrini is not found. Numerous HTML fixes and improvements. Firefox compatibility improved. Hang on exit problem solved. File conini no longer contains httpd port number. That is now set when the httpd is started. File nat32.js is now created via the 'jsf' command executed in file startup. The default port is 8080. HTTPD bug fixed (incorrect Header response sent for commands). Default page for web server is now nav.htm New command: shutdown [-h] [when] Terminates NAT32 in 'when' minutes. Also shuts down Windows if -h is specified. Works for 9X too! Command setns modified: setns [ipAddr | dx | ex] Arg d1 turns debug on, d0 turns debug off. Arg e1 turns extras on, e0 turns extras off. The "extra" features are: 1. A DNS query from a private machine for 'nat32.win' returns the Windows IP address of the NAT32 machine. 2. A DNS query from a private machine for 'nat32.box' returns the NAT32 IP address of the NAT32 machine. 3. All DNS queries from private machines to NAT32 are resolved via Winsock lookups. This has the advantage that if the HOSTS file under Windows contains ad-blocking entries, all private machines benefit from this. Help pages added and updated. DNS debugging output cleaned up. HTTPD and HTTPGET now work correctly in Proxy Mode. Remote command now works correctly. WinChar modified to skip 0 chars in buf. If NAT32 is started by a service (e.g. CoLinux), if another user attempts to run it, a dlialog box is displayed and a web browser can be launched to interact with the running NAT32. The correct port is extracted from the htm\nat32.js file that will have been updated by the already running NAT32 instance. A Web Shortcut to file MYNAT32.HTM is added to the Desktop so that one can always interact with the running NAT32 instance irrespective of the current port number. Various web pages updated. DNS default address now set to 208.67.222.222 (OPENDNS.COM) This enhances parasite protection. 26.09.2007 BUILD 1046 *** New HELP.ZIP *** UPNP Client added. The UPNP client can be used to set Port Mappings on attached DSL Routers or similar. ARP support modified: configurations with two or more external routers on the same subnet are now supported. No duplicate entries for the gateways seen on each network are added to the ARP table. ARP modified: check for full ARP Table added (arpalloc returns 0). Routing modified: rtadd now honors the interface number when checking for duplicate entries. As a result of this, two or more network routes, each for a different interface, can now be present in the routing table. Interface Selection modified: the value 0 is now Best Metric, the value 4 forces the use of the Primary interface. IP Routing modified: local outgoing traffic now honors Interface Selection modes 4 and 5. Backup mode modified: command setb now sets backup mode and makes appropriate adjustments to the interface selection mode. In previous builds, setb was the command used for setting Best Match UDP mapping. That is now done with command setbm. Backup mode can now be used to fallback to a DUN connection or to another Internet-connected interface. See backup.htm for details. New Tcl script: checkb.tcl added. Usage: checkb ifn backup_ifn Put this script in your crontab and then start cron. The script will then be executed every minute and the specified backup interface will be used whenever interface 'ifn' looses Internet connectivity. When connectivity is restored, the script will restore the use of interface 'ifn' for Internet traffic. New command: base64 string Converts string to/from base64 encoding. Clipboard functionality cleaned up. Selected text is now copied to the clipboard and the selection cleared if any key is pressed or the right mouse button is clicked. Clicking in the Console while NAT32 is starting prevents the window from being hidden. Sockio modified so that a thread switch (sleep(0)) is done after each call to closesocket. IPPROC: prt check added, debug checkpoints added. Icon problems fixed, a few missing gif files added. Vista compatibility improved: manifest modified to require admin rights, check for NDIS3PKT driver failure due to Power Management issues added, ICF is independent of ICS on Vista. Icons modified. Dial-Up Networking support coming soon. Windows connection names now displayed. The IP thread can now be started via the start command. Admin addHost now checks for bad pep->ep_ifn. Dial! menu item now dials the first connection name found in a netcfg file. Network configuration dialog box now handles quoted connection names correctly. A few minor bugs in UPNP Client fixed (crash if device is down, various values set to 0 if device is booting). Trace window now shows Windows connection names. Unknown types now show the actual type value rather than "????". LoadIcon replaced with LoadImage. Permanent port mappings now work correctly when multiple Internet interfaces exit. Command: route addi was using the IP address of the interface as the gateway, rather than the actual gateway address. If no gateway exists for the specified interface, the command now correctly reports an error. Web browser: popup_flag added, child_flag added, query_flag added. If popup_flag is 0, no popups are shown. If child_flag is 0, no child windows are shown. If query_flag is 1, all GET Requests are queried before fetching. If auth_flag is 1, all GET Requests are sent with an auth header. If filter_flag is 1, all GET Requests for URLs in block.ini are cancelled. Use the webstat command or the Window menu item to modify these flags. Web browser: more proxy support added. See new commands: proxy [on|off] | [hostname:port] | [username password] agent ["agent string"] hgstat [proxy on|off] | [debug 0|1|2] hstat [local | private | public | acl | dx | lx] New script added to IE Context Menu: Google the selected text. Many changes to web pages. See help.zip for the latest changes. Command js added. This command enumerates (and dumps) all inline Javascript functions in the current web page. ICF settings were being restored after an initialization run. ICS and ICF settings are now only restored during after a normal run. 20.05.2007 BUILD 1045 *** New NDIS3PKT.SYS *** Admin redirection added. Disabled stations can now be enabled after the user enters a username into a browser login window. See http://www.nat32.com/nat32e/htm/admin.htm for full details. Admin logging modified. At long last, Google Suggest now works in the Web Browser window. Javascript errors are also supressed. A few other minor bug fixes, mostly in WebBrowser. One major WebBrowser problem still occurs on systems that have old Flash players installed (flash8a.ocx): The Flash Player sometimes crashes and takes down NAT32 with it. To fix this, please install the latest Flash version from the Adobe website. Vista support added, but not yet complete. A new NDIS3PKT.SYS should be available soon. P32 thread wrapper now nested in try, catch. This means that a NAT32 thread should now terminate cleanly if a GPF occurs. Problem with token.htm in help.zip fixed. Color support added. Commands: color [r [g [b]]] # set color RGB values color [red | green | blue | black | white | grey | yellow | cyan | magenta | maroon | navy | lime] cecho [color] .... NAT32 now prints notices requiring user action in red. Notices indicating all is well are printed in green. MSTCP command modified to set RECV_FLAG_INTERRUPTIBLE in both nd_recv calls. Flash detection built in. If your Flash OCX is Flash8a.ocx, then you definitely need to upgrade or NAT32 will crash when you view a Flash web page. UPDATE: Other Flash8 versions are also crashing depending on Flash content. An upgrade to a higher version is recommended. The NAT32 Browser now displays a list of windows that Flash has created and lets you close them. See the Window menu item. New setup.exe version 1.8.2 adds an App Path entry to registry. NAT32 updates App Path each time it runs. Major change in how private, DHCP-configured interfaces are handled: 1. NAT32 defaults to 172.16.x.200, where x is the wincfg index. 2. NAT32 always does an ipconfig /release during a configuration run if a Windows DHCP-configured adapter is selected as a private NAT32 adapter. 3. A Windows DHCP renew is done in file startup, but note that this is optional and only needed if the private machines on this network require connectivity to Windows on the NAT32 machine. 4. A new environment variable pdhcp is set during configuration runs if a renew needs to be done. Netin2 modified so that ARPs from MSTCP are not ignored. DHCP Server menu item now greys out all entries if DHCPD is not running. DHCPD command modified. Start DHCPD command now takes no arguments. All settinsg are now modified per interface via the dhcpd shell command. Dhcp command usage: dhcpd [ifn [on | off | d | D] dhcpd ifn lease n dhcpd ifn offset n dhcpd ifn real on | off dhcpd ifn dns ip dhcpd ifn delete ip dhcpd ifn reset dhcpd ifn dump Netstart now initializes DNSDOMAIN to MSHOME.NET. This value will be overwritten by the value detected in the Windows TCP/IP during configuration. As many systems never set a domain, and some DHCP configured devices require a domain, a default value of MSHOME.NET seems to be a safe value to use. Note that this value can be overwritten with a setd command in file user.txt. GPF dialog box now shows more detail. SetDlgItemUrl added. All help files modified to be HTTP port independent. The actual port to be used by the HTTPD is now specified in file conini. Device change message removed. DHCPD delete command added. This allows an assigned entry in the dhcpd table to be deleted. The MAC address is left unaltered to ensure that the same IP address will be assigned when that client again requests a lease. RAS support modified: A GPF was occurring in pprintf when RAS functions that display the phone number were called from within ipproc. Rttimer was not adding a gateway for DHCP-configured interfaces because use_gateway was returning stale MSMIB information. For all non-PPP interfaces, the gateway is now always added without consulting the MIB. For PPP interfaces, a route addi command in file 'connect' adds a default route if needed. Note that for PPP interfaces, if Windows is not using a gateway, and if the connection is up when NAT32 starts, then NAT32 will not add a gateway either. If this behaviour is not desired, then file user.txt should contain a command like the following: route addi 0.0.0.0 0.0.0.0 i where i stands for the interface number. The nsdetect flag is now checked before NSERVER updates are done. This allows a DNS address specified in a setns command to be used permanently (but see setns1 and setns2 below). NsUpdate function modified so that wincfg dns settings are transferred to the nif table for Internet-connected interfaces. Bugfix: problem with default route detection corrected. New commands: setns1 [ifn] [ip] setns2 [ifn] [ip] The above commands are used to set the first or second name server for a specified interface. New command: setdx [ifn] [domain] The above command is used to set a domain name for an interface. Bugfix: specifying a DNS server address in the Interface Configuration dialog mow transfers the value to ns1. Admin: new password command added. adminpw [password | ""] The above command can be used to specify a common password for all machines. If authorisation is enabled, the user can login with either a valid name, or the above password. The Admin dialog box also allows the password to be set or cleared. Steganos VPN support added. To use this feature, add the following commands to your user.txt file: set steganos ifn setsteg ifn where ifn is the TAP interface used by Steganos VPN. An updated 'change' file is included in the Demo Distribution and it now executes a 'setsteg' command to add the needed default gateway to the NAT32 Routing Table and turn on the needed mappings. File setsteg.htm has been added to the help.zip file. New variable: backup When set to 1, NAT32 always uses Interface Selection Mode 0 (best metric) when multiple Internet connections are available. This is desirable when connection fallback functionality is required. New command: checki ifn [ttl [ip|name]] The checki command sends an ICMP Echo Request via the specified interface and with the specified TTL to the specified host. If a response is received, the ICMP Type and Code is printed, otherwise "TIMEOUT" is printed. The command can be used to determine if a given interface has Internet connectivity. The default TTL of 2 means that the second gateway on the path to the host will return a Time Exceeded response and hence Internet connectivity is available. New Tcl script: checki.tcl added. Usage: checki ifn connection Put this script in your crontab and then start cron. Execute the script every minute and the specified connection will be dialed if the specified interface looses Internet connectivity. When connectivity is restored, the script will hangup the connection. Command setf (set filter) now allows DNS names to be specified for source and destination IP addresses. 19.12.2006 BUILD 1044 *** NEW NDIS3PKT.SYS Version 3.2 *** Problem with DHCP-configured private LAN adapters fixed. NAT32's DHCP Server can now configure Windows Adapters on the same machine. Full details are in the updated help file: http://www.nat32.com/nat32e/htm/dhcpd.htm Problem with incorrect address masks corrected. For example, a mask of 255.255.0.0 for a Class C address such as 192.168.1.1 now causes no problems, although the mask is clearly incorrect. Note that this does NOT mean that CIDR is supported. Host Transfer mode again defaults to off. This was needed because VPN connections can't be established while HT Mode is on. CoLinux support removed because of Windows 9X compatibility issues. The same functionality will soon be available via an external program. Trace now shows up to 1500 bytes per entry. Trace now has an edit control that displays status info and details of a packet when an entry is double-clicked. NAT32 Kernel now stops any pending web page loads before terminating. The NAT32 Stop icon in the Taskbar now shows termination status as a tooltip. Chat feature enhanced. Play command extended. Funtion keys: F5 - Play first entry in radio.txt, F6 - Play "off" entry in radio.txt. WM_MOUSEACTIVATE in winio was forcing the focus to the Console. This caused text that was typed when web page input text was selected to appear in the Console. Splash screen removed as it served no useful purpose. Only essential processing (files saved, registry updated) is now done when a Windows Shutdown is taking place. Prompt command modified. Usage: prompt [dir] | [time] | ["string"] Setup.exe modified to detect if it is running from an uncompressed Windows XP/2003 folder. Command ns extended to support SRV queries. Example: ns -s _sip._udp.netzquadrat.de Returns: _sip._udp.netzquadrat.de:SRV 0 0 5060 sipdev.netzquadrat.de Function dns_resolve extended to handle AAAA (Type 28) and SRV (Type 33) responses. Tcl echon command added. Same as echo, but no NL added. Tcl socket gets() now calls sReadLine1 rather than sReadLine. Also, the specified length is used rather than BUFSIZE (was 512). Additional WM_MOUSEACTIVATE fix. SMTP Server added. POP3 Server added. Command "ifn" was calling the "change" script without the needed ifn argument. Command "email" now has the following usage: email subject file from to Wintrace modified so that the display is filtered of any string entered in the Filter list box. NAT32 Consoles now support a single-line copy to clipboard. Select characters on a line from left to right with the left mouse button and then hit Enter. Web Browser support extensively modified and now works with IE7. Termination problem and Accelerator problem fixed. Warning message for bad adapters with an NDIS3PKT entry now written to file nat32.log. File device support modified (pid issue). New command: timed cmd [args] The specified command is executed and the elapsed time (in sec) is printed as a floating point number. Configuration issues for bad adapters and Windows DHCP-configured adapters modified. 26.08.2006 BUILD 1043 A few small problems with Host Transfer Mode fixed. Script files "connect", "disc" and "startup" now turn Host Transfer Mode on/off. Note: While Host Transfer Mode results in the Windows TCP/IP stack no longer having unmodified Internet access, the total protection against incoming malicious traffic more than compensates for this. If you ever need to turn off HT mode for an interface, simply use the command: setht ifn off. But be aware that your machine is vulnerable in this case, even if the Windows Firewall is on. 29.07.2006 BUILD 1042 *** New NDIS3PKT.SYS *** Rttimer was deleting an existing default route when a new Internet interface came up. Function rtdel modified so that if never deletes a default route. Function rtdeld is now used for that purpose. Function ns_update is now called to ensure that the DNS address list changes whenever a connection goes up or down and when changes occur on DHCP-configured interfaces. Sbprintf and sbcprintf now use different buffers for each part. TDI support modified. It now works on XP in non-admin mode. It seems that XP adds the TCP DOS Device per default, whereas 2000 doesn't. Admin rights are required to add a DOS Device, so TDI now first checks the TCP DOS Device and adds it only if needed. When a removable device is added, the ETH and NIF tables are now updated, even if no DHCP change took place. This is done in ethwrite whenever the MAC address of the interface is 0-0-0-0-0-0. Arp_in now ignores Gratuitous ARP requests. They were confusing the Windows DHCP client, making it send a DHCP DECLINE if NAT32 responded to them. Token.htm file removed as it is generated when needed. New version of NDIS3PKT.SYS added. Debug printf added so that unknown packets arriving at an Internet interface are printed. Use dbgview from sysinternals.com to view that output. Colinux command added to start coLinux. Usage: colinux help | hide | show | status | stop 14.06.2006 BUILD 1041 Major change: problem with TCP connections to one and the same host using various interfaces when setis is true fixed as follows: For each new TCP connection, add a host-specific route with a source address and ttl of 600 to the routing table. All subsequent traffic from the same client to the same server will then be routed via the ifn in that route. Command setrr [on|off] is used to turn this record route feature on or off. New commands: setrr [on | off] # Turns the above record route feature # on or off. # Default off, but setis overrides it. setmem [on | off] # Turns the display of memory usage # and thread count in the status bar # on or off (default off) route delete all ifn # Delete all src routes for an ifn Several cases of rtget not being followed by an rtfree found and corrected. PMFREE macro added to guard against a port mapping entry being aged out of the table while IPPROC was still using it. This bug was causing strange entries (0.0.0.0 src addr) to appear in the table (experimental). Rttimer modified to call sbcprintf, not sbprintf. For DHCP changes, setmask is now called only once. Several modifications in udpsend and local_out made to fix the problem that UDP traffic to 127.0.0.1 was not working. Snmpd and Wsnmpd now accept community strings of any length. Kernel/start was not closing the IDENTD socket correctly on exit. Ajax status pages added. See http://localhost:8080/settings.htm. Sbprintf and its variants now use an array of global buffers. 06.06.2006 BUILD 1040 Major change: problem with multiple Internet connections fixed. NI_PRIMARY and NI_SECONDARY dependencies removed. ICMP mapping table increased from 20 to 64 entries. ICMP mappping now ages out entries for non-responding hosts. This means that the table can now only fill up if there are more than 64 different pings to non-responding IP addresses in a 5 sec interval. Entries for hosts that do respond are removed when the response is received. If the table is ever full, a random entry is reused. Function ICMP_IN now frees the buffer if the send to the thread in the ICMP ID field fails. The global ping_pid is no longer needed. This means that concurrent pings from any NAT32 console now work correctly. Setup.exe modified. It now cleans up properly and opens Explorer to allow the user to delete the NAT32 folder. NAT32 now places a dynamic Run link in Start, Programs, NAT32E if setup.exe was run. This allows users who don't use Desktop shortcuts to start NAT32 via Start, Programs, NAT32E. 28.05.2006 BUILD 1039 WEB DLL no longer used. WEB support is now linked in from a static library. Bug in Alive thread fixed. This bug was causing memory depeletion. DHCPD now logs to nat32.log. DHCP Server dialog box now applies Debug and Active immediately and receives change notifications while open. Bug in HTTPD fixed: if TCP Port 8080 was in use, HTTPD didn't signal the semaphore that the start command was waiting on. Similar issue modifed in IDENTD. CFOS support added. See: http://www.nat32.com/nat32e/htm/cfos.htm Note that when NAT32 runs as a service, the cFos htm links do not work because of ActiveX restrictions. 19.05.2006 BUILD 1038 *** NEW NDIS3PKT.SYS, NDIS3PKT.386, HELP.ZIP WEB5.DLL *** Fixed a blocking issue that was preventing NAT32 from receiving packets. Functions ip_in, ipgetp and ipsend now again communicate via send/receive. The problem was that deadlocks could occur if packets arrived at any interface faster than ipproc could handle them. Ipgetp extracts exactly one packet per interface for each received message and then waits for another message to arrive from a netin thread. But if the bpool is ever depleted, no further messages arrived because the netin threads were sleeping until getbuf succeeded. All the netin threads now send a message to ipproc whenever a packet arrives or getbuf fails. Pingt command added. This command should be used with caution because it pings the destination with no delays between pings. Pingt waits up to 1 sec for the response and only reports packet loss. A summary is printed on completion. Ps command now also prints the semaphore a waiting thread is blocking on. Command chprio now has an expanded syntax: chprio pid | net + | 0 | - If net is specified, the priority of all the network threads (ip, netin and netout) is modified. Raising the priority of the network threads improves routing throughput at the expense of lower responsiveness of other threads during periods of heavy network traffic. Chat dialog now always appends text to chat.txt when closed. Command 'mux' modified: mux [on | off | restart | [reset [all | ALL | port | ip]]] If 'reset all' is specified, all NAT32 entries are cleared. If 'reset ALL' is specified, all NAT32 and all Windows entries are cleared. File 'onexit' modified to invoke 'mux reset all'. This clears all NAT32 mux table entries but leaves Windows entries unchanged. New NDIS3PKT driver supports clearing of ALL entries from the MUX Table, including those belonging to previous VMs. New command added: ipnat [start|stop] The ipnat command is used to start and stop the Windows 2000 and higher IPNAT Service. In most cases, you should ensure that the IPNAT Service is not running, as the driver modifies traffic and interferes with the operation of NAT32. Arpsend now writes debug info to nat32.log. Ethcntl now saves previous mode when promiscuous mode is turned on. The previous mode is restored when promiscuous mode is turned off. Ethopen was setting mode instead of class in call to nd_driver_info. Ethinit displays a warning message for all adapters that have no NDIS3PKT binding. Netin2k modified so that the RAS Server doesn't see traffic for a RAS Client that we're not bound to. Muxreset modified so that tcp_rst() ignores entries with flag = 0. DNS Settings dialog now has a "Test using the Windows DNS cache" checkbox. If set, DNS tests are done via WINSOCK. Note that results may be cached and therefore not up to date. NETIN2K modified to use netmask() for PPP clients and getmask() for the PPP Server. This solves the problem that arises when the RAS Server is using the same address Class as is some other private interface (see the behaviour of netmask()). Note that a fundamental problem with RAS is that it does not understand subnetting. The safest way to configure NAT32 in this case is to ALWAYS use a unique address class for RAS interfaces. In other words, never use the same address class for RAS as some other private interface is using. Command rdial and function dodial modified so that no dialing takes place if a dial is currently in progress. Command rdial no longer prompts if no NAT32 PPP client interface is available. The dial always proceeds in this case but the connect script will not run and the Hangup toolbar icon will not show a checkmark against the connection name. Note that if two or more connections are up and only one of them is bound to a NAT32 interface, when the bound connection is closed its NAT32 interface will automatically bind to one of the other open connections and the connect script for the new connection will run. This behaviour is by design. But note that the DISC script is not run for the connection that went down. This will be fixed in the next version of this build. Major change: Setting an access type in NDIS3PKT enables reception per default. As this is done in ethopen(), NAT32 was picking up traffic it couldn't yet handle, resulting in unpredictable behaviour. The fix was to disable the receivers in ethopen() and to enable them as needed at the very end of netstart(). New command: setrcv ifn [on | off | bcast] Sets the NDIS3PKT receiver for the unit of the specified interface on (directed), off or bcast (directed + broadcast). When Windows IP Forwarding is on, clearing a MUX table entry caused the MSTCP to react to the TCP RST segment in undesirable ways. The fix was to make send_rst_as_tcp use fake MAC addresses of all 0. Winrt command now sets the global winipf and nbprop flags. If IP Forwarding is turned on, NetBios propagation will be turned off. No NetBios propagation will be done if winipf is on, even if nbprop is on. Note that if Windows IP Forwarding is turned on outside of NAT32, the winipf flag is not updated unless the winrt or nb command is executed. This is because the IP Forwarding value is stored in the Registry and we don't want to check it each time we send a packet. One way of automating this would be to register for Windows network change notifications, but 9X platforms don't support that. Function nd_driver_info no longer modifies a global nd_info variable. It has an additional argument into which the info value is written. Netstart modified so that nd_set_rcv_mode works reliably on XP SP2. A sleep(100) was needed after every call to ethcntl(). Note that a new NDIS3PKT.SYS is now available that overcomes this problem, making the sleeps unnecessary. Winio modified so that the Console minimize button again works. Ipproc modified so that flow processing is not done for TCP packets destined for a private address behind a private gateway. Winrt off command now also turns off IPEnableRouter for 2K and higher platforms. Windows must be rebooted in this case. Netstart modified so that hginit is called after NDIS3PKT receivers are enabled. Netstart no longer adds a network-specific route if a gateway is specified on a private LAN interface. This caused problems with private RAS connections. The user should add the needed subnet- specific route manually (route add command in user.txt). New weather.htm, xml.htm, data.js. Ping now checks the ARP cache and prints a firewalled message if the machine exists on the local network but is not responding. Httpd.acl file corrected to allow 127.0.0.1 access (not 128.0.0.1). Rdial now calls enum_connections so that it blocks until any pending dial or hangup operation is complete. Httpd now writes Access Refused messages to nat32.log. DNS Settings dialog box now has a "Discover" button. This makes NAT32 do a DNS test via Winsock. The current DNS address is updated on success. WEB4.DLL now handles the TAB key correctly. Demo version now runs for 2 hours. DHCPD Settings dialog box implemented. Ftp command now uses Passive Mode. Warning if TerminateThread is ever called. Static buffer now passed to PostMessage in sbprintf. Current memory usage and thread count now posted to status bar. WEB5.DLL now sends a WM_APP to NAT32 for app:xxxx URLs. The full URL is previously placed in the pw->command buffer. This will be used in the next build for interrogating and modifying NAT32 settings. 24.02.2006 BUILD 1037 *** NEW HELP.ZIP *** Route addi command added: allows a route for the IP address of a specific interface to be added. Windows 98ME detection added. Used only in winrt command. DHCPD, dgwrite, udpsend and ipproc modified to support UDP checksums for DHCPD. DHCPD modified to comply 100% with Windows 2000. Default NAT32 private IP address is now 100 + 4'th byte of the Windows network mask. If this value is less than or equal to that mask byte, the value of the 4'th mask byte + 2 is used instead. Note that single-byte arithemetic is used. Shell bug fixed: winwrite is no longer being called to output a prompt of 0 bytes length. Win command modified: lockup issue fixed. Several HTTPD security vulnerabilities fixed. Chat dialog now has a Save button. Mfopen now honours "a" (append) by seeking to EOF on open. The Admin Host Table is now 1024 entries long. Searching it was timed and the worst case took 16 micro seconds on an 800 MHz host. HTTPD now always requests a password when password checking is on. For the DEMO version, the default password is the build number. It can be changed and viewed via the 'password' command. Menu item Config, Password added. The pcheck [on | off] command can also be used to turn password checking on or off. The registered version defaults to password checking on. The password cannot be modified. Command "hide" resets an access flag so that password entry is required for Console and Quick Dialog access. If NAT32 is totally hidden, starting it via the Desktop shortcut will display the System Tray icon. To gain further access, the password must be entered if password checking is on. Dialer modified so that no dial attempts are made while a dial is in progress. Program smail.exe added. Sends a specified file such as info.txt directly to NAT32 support via the MAPI dll. Note that this depends on a correctly installed and configured Outlook or Exchange Client. Function hExec now also redirects STDIN. Function execr (win) now checks the dev and calls either pkbd or just kills the iread thread. HSTAT command now shows State and Access Mode strings rather than numbers. Wintcp command added to allow Windows TCP connections to be viewed. Muxreset modified to remove connected SYSTEM_VM entries that aren't in the Windows TCP Connection Table. 23.01.2006 BUILD 1036 *** NEW WEB3 Dll, NEW connect and disc scripts *** ICMP FNADF packets contained the original IP header in host order instead of in net order. In addition, the original IP header had already had its TTL field decremented, hence its checksum had to be recalculated. Also, Windows 2000 sometimes ignores correct ICMP FNADF packets and so the long packet causing it is fragmented anyway. If Windows honours the ICMP FNADF packet, only the first packet is fragmented, all packets thereafter will be of the correct length. This bug will have caused problems for DSL and Modem users. Chat dialog added. MAC Address recognition added in registered version. Bugfix: double-clicking the NDISWANIP Ras Server entry in the Interface Selection dialog caused a GPF. Drag and Drop added for NAT32 Console, Web and Edit windows. Editor accelerators added, request headers viewer added. WEB3 Dll now supports the following accelerators: Ctrl-C Copy selection to Clipboard Ctrl-F Open the Find dialog Ctrl-G Enter a URL (supports wild-cards) Ctrl-H Show Homepage Ctrl-V Paste from Clipboard Ctrl-S View page source ESCAPE Stop current load F2 Switch window F3 Display Find dialog F5 Refresh F10 Display Browser Settings dialog Alt-Left Go back Alt-Right Go forward HTTPD password checking bug fixed. Mux command enhanced so that entries can be deleted by IP address. This is useful when DUN Connections go down because all entries with the old local IP address can be deleted (see disc script). Rttimer now runs the change, connect and disc scripts as follows: change ifn new_ip connect ifn new_ip disc ifn old_ip Shell now supports $ substitution when script files are executed with arguments. Within the script, commands can access the first argument as $1, the second argument as $2 and so on. The change, connect and disc script have been modified to use this feature. In particular, the disc script now calls mux reset with the old IP address as follows: mux reset $3 The above command will reset all entries for the specifed old_ip, which is $3 (the third arument) in the disc script. 10.12.2005 BUILD 1035 *** New WEB3.DLL *** MUX Reset now no longer crashes WANARP.SYS in cases where the RAS Server is running but no connection is or was up. Admin now filters correctly. RAS Server configuration modified. RadioLAN support modified. To set the MAC DST Address, use command: setrl ifn 00:A0:D4:00:00:01 This turns ARP mode off for the specified interface and sets the needed MAC DST address for RadioLAN adapters. Command: setrl ifn off turns RadioLAN mode off and ARP mode on. Portmapping PMTTL_TCP_SHORT now 30 sec. Browser scripts modified to support Google, Yahoo and All The Web wildcard image searches. Web3.dll now prompts the user before a popup window is created. The displayed URL is not always accurate though. Termination icon tooltip now indicates that termination may take up to one minute. This delay occurs in FreeLibrary(web_dll) if the dll created an InternetExplorer process. NDIS3PKT mux table now no longer cleared of unconnected entries unless they have been in the table for longer than the muxreset period (default 1 minute). New muxp command added that displays entries that will be reset next time muxreset runs. Function isPrivate modified so that it returns TRUE for all private IP addresses, except if used on an Internet-connected ifn. Command mstcp now supports processing of inbound MSTCP traffic on a single interface. The Action Mapping mechanism can be used to carry out actions when TCP port 1723 SYN and FIN segments arrive. For example, the following amap entry will add a host-specific route to the Windows Routing Table when a SYN arrives and delete the route when a FIN arrives: amap add 1723 "win route add $SRCIP mask 255.255.255.255 $GW" "win route delete $SRCIP" 17.11.2005 BUILD 1034 *** New WEB3.DLL *** Ethwrite no longer clears bytes in short frames (experimental). Ndis3pkt functions now all use MAXSIZE buffers (4096). All NDIS3PKT functions renamed. Number of supported NDISWANIP interfaces now 16 (was 8). Cron command now handles killed CRON threads correctly. Web3.dll modified so that pw->title is limited to 64 bytes. Editor modified so that left mouse button up loads a URL if nothing is selected. Tab key inserts 4 spaces. Quick dialog box now displays Throughput Mode icon Sleep(0) removed in ipsend and ip_in. GPF when a NAT32 taskbar button was right-clicked fixed. Admin now ignores all local packets and all packets not from a private interface. Httpd now handles filenames with spaces correctly, Favorites viewer now preserves current directory. IPproc was checking for the default route without first checking for a direct route. This was making TCP connections to hosts on the network of the gateway fail. Rtgeti is now first called for a specific destination and then for 0.0.0.0. This problem only occurred for flows (TCP), not for other traffic. New value TcpNumConnections added to Interface Selection dialog. This is the Windows maximum number of TCP connections and should be set to 128 on NT and higher platforms. Otherwise, it defaults to no limit on NT and higher (100 on 9X) resulting in a very large NDIS3PKT MUX Table in cases where P2P filesharing is running. Command settcp can be used to view or alter this variable on all platforms (see settp.htm for details). HTTPD now understands: GET /file?name=value This is useful in forms when a button click is to fetch a specific file. Web Browser now understands F2 (switch modes) and F3 (find in web page). RAS Server IP now picked up from Registry for 2K and higher via function GetRasServerIp(). RAS Server interface is now hard-coded on 2K and higher to be the first NDISWANIP interface. The Interface Configuration dialog allows that and only that interface to be the RAS Server. Ethwrite now discards packets for a PPP interface if no connection is in place. Rttimer now no longer modifies routes as RAS Server connections come and go. RAS Phonebook now defaults to CSIDL_COMMON_APPDATA. Applies to the NAT32 Service and App. Service on 2K and higher now displays Network Connections via WinExec of "control.exe netconnections". Added Spooler dependency to service.exe to ensure that NAT32 doesn't start too early. But this is not essential so it will be removed in the next build. RadioLAN support added (experimental). To set the MAC DST Address, use command: setrl ifn 00:A0:D4:00:00:01 This sets RadioLAN mode and the needed DST address. Command: setrl ifn off turns RadioLAN mode off for the specified interface. 02.10.2005 BUILD 1033 *** New WEB3.DLL *** *** New HELP.ZIP *** WEB3.DLL replaces WEB2.DLL. New Winsock mode requires no registration. Audio capture added. This feature will soon be enhanced to allow captured audio to be streamed to an Airport Express. Audio output added. App dialog box enhanced, app.htm file updated. 01.09.2005 BUILD 1032 *** New WEB2.DLL *** *** New HELP.ZIP *** Presence of RAS checked with InternetGetConnectedState. PPP support modified: no default route added for Internet interfaces if Windows doesn't have one. New WEB2.DLL supports AutoComplete. Focus issues in embedded browsers fixed. Clipboard copy issue fixed. Various edit controls now support AutoComplete. Web window close now done on shutdown, ICON_CLOSE deleted later. Windows 9X bug fixed. Windows 95 support modified. IPHLPAPI Dll loaded at runtime. HTTPD now multithreaded. Admin modified. Admin now also available in DEMO mode. Routing mode modified. Loopback mode modified. Editor modified (incorrect file length on save). Ppmap command now opens a "dummy" Windows socket for UDP mappings. This stops Windows from sending ICMP Destination Unreachable packets in response to incoming UDP traffic. Added Find in web page to web2.dll. Added Edit, Find... menu item. Fixed shutdown hang when Favorites dialog was open. Fixed ARP problem: NAT32 was responding to all ARP requests. Registration pages modified. The Registration Token can now be displayed in a small pop-up window if NAT32 is running at the time of registration. 03.06.2005 BUILD 1031 Admin modified: All packet types now handled Admin now examines outgoing and incoming packets on Internet interfaces. Performance problem fixed. No entry added to htab when MUX Resets are done. DUN Server modified: closing the DUN Dialog box while a Stop was pending caused buzzing. RRAS on Windows Server 2000 and 2003 and higher may turn on RRAS IPNAT. This causes NDIS3PKT to see packets AFTER they have been modified by IPNAT. The MAC source address of the packet is correct, but the IP source address is set to the address of IPNAT's Internet interface. This problem will be corrected in Build 1032. Versionx command added. It shows more detailed platform info. Traffic isolation added (experimental) 20.05.2005 BUILD 1030 *** New HELP.ZIP *** Windows Server 2003 SP1 support added. Admin bandwidth limits now applied by discarding excess packets instead of just delaying them. Quick Usage: quick [t|T|d|D|0|1|2] t = Hide throughput bar T = Show throughput bar d = Hide debug info D = Show debug info 0|1|2 = Show I/O or Input or Output (Red, Green, Blue) Setf command modified. See setf.htm for details. Kernel worker thread mechanism added. Web user interface modified, Editor change directory bug fixed. Shell now understands URLs entered directly and displays them via the urlw command. Format long and time bugfix. New Registration Terms and Conditions. The main change is that you can now run the full version of NAT32 on up to 8 computers at your site for the cost of one Support Token ($5.00) per additional computer. Service settings deleted each time NAT32 is configured. Editor menu item Save added. Bug in x_help fixed (files not closed). Alive thread now sends NAT32 UDP packets, not Winsock UDP packets. Throttle now works for UDP and TCP packets. System Tray icon now red when no Internet connectivity available. Clipboard device added. Command cb added. See cb.htm for details. Shell command line paste bug fixed. Clipboard size checked. Icon problem fixed. 29.03.2005 BUILD 1029 Bug in rtget fixed. Bug in udpecho fixed (last byte of packet was being set to 0). Bug in ICMP Redirect fixed (ttl now 1). Builtin editor for URL lists added (experimental). Several minor changes. 20.03.2005 BUILD 1028 *** New NDIS3PKT.SYS *** *** New WEB2.DLL *** Admin registry bug fixed. Admin can now be used to throttle traffic from a private interface to a private Internet-connected router. This feature allows NAT32 to be used to throttle Internet traffic to/from any private machine. See howto.htm for full details. Admin default bandwidth of 20,000 bps added. Admin default throttle of 2 packets per second added. New NDIS3PKT.SYS supports up to 4096 MUX Table entries. Shutdown code modified. DUN support for 9X platforms modified. Mux Reset modified so that RSTs are not sent if routing_mode is on. IP Filter mechanism extended to allow packet transmission delay. HTTPD now started with: start httpd port Password checking added for Private and Public access modes. Getbuf now initialises the buffer to 0 instead of 0xff. Sets and setsr modify the routing table only if netup is 1. Netstart calls rtinit explicitly, all routing funcs print an error if they are ever called prior to initialisation. Help command modified. Related commands with common help pages now supported. Settings viewer modified. Simple file editor added. 04.03.2005 BUILD 1027 USB memory stick support for registered version. PPMAP mechanism fixed, APM entries were not being deleted. Shell #! handling modified. 20.02.2005 BUILD 1026 Error in MuxReset command fixed. Connections belonging to the SYSTEM VM were being reset. This was causing local TCP connections to be closed every 5 minutes. This problem only occurs if Windows IP Routing is on. Priority boost for IP and Netin threads removed. This was causing starvation in other threads during prolonged heavy load. Functions ip_in, ipgetp and ipsend now use psend/preceive instead of send/receive. This prevents a deadlock if packets arrive at any interface faster than ipproc can handle them. Ipgetp was extracting exactly one packet per interface and then waiting for a new message to be sent. But if the bpool was ever depleted, no further messages were being sent. Lockup during tracing under heavy load conditions fixed. 15.02.2005 BUILD 1025 GPF in ETHWRITE fixed. RAS Server support extended. Interface Selection dialog now warns if an unconnected PPP interface is selected. In this case, dial the connection and then refresh the dialog box. Note that the RAS Server interface can only be detected if a dial-in connection had already been established. Generally, you should only use the first NDISWANIP as a RAS Server interface, not as a dial-out interface. Bugfix for 9X platforms: The NAT32 Service was blocking in ShowIcon. Bugfix for 2000 and higher: If ICS is on, handle this in NifUpdate. Bugfix for NT4 and higher: Web functionality now works when NAT32 runs as a service. Still unexplained behaviour when WM_CLOSE is sent to pw->hWeb (in x_webc and winclose), but not sending it seems to have no negative effects. Setup program now adds a Configure Icon to the Desktop. This allows a configuration run to be started easily after a reboot. Mousewheel support added to the NAT32 Console. Router command now determines the registered IP Address of an external NAT Router by fetching http://www.nat32.com/php/myip.php. 24.01.2005 BUILD 1024 ** new help.zip ** MTU on W2K and higher was not being set when connections came up. Above fix modified, this now works correctly. RTTIMER now continues checking until mask, speed and mtu have been set. Netcfg MTU and SPEED settings are now override values. Mask problem fixed. Major Port Mapping change: NATCHECK Version 3 compatibility added. New command added: loopback [on | off] Turns loopback mode on or off. Broken ipmapa command fixed. Problem with packet cycles fixed. IPPROC was cycling UDP broadcasts from ifn x to ifn 0. The loopback code was forwarding packets for which no match was found. Fixed 'ndis3' command (was faulting if no args specified). RAS Support enhanced. Please see the following link for details: http://www.nat32.com/nat32e/htm/dialer.htm Note that NAT32 now uses the RAS Phonebook of the account under which it is running. The only visible DUN Connections will be those contained in that Phonebook. To make other Connections accessible, run the command: "setpbkf -d". !!---> The NAT32 Service dialog box now allows the specification of an !!---> Account under which the service is to run. When running NAT32 as a !!---> service on XP and higher, ALWAYS use the SYSTEM account option. The "Allow Desktop interaction" option is now handled correctly. Sockets now closed correctly before the service removes itself. New commands: logon [account password [domain]] ssname [account password [domain]] setpbkf ["name" | -d] Fixed GPF on double-click of adapters in Interface Selection dialog. Fixed mibupd bug (mibcfg table now contains only entries with valid IP address and no linkage to wincfg or nif entries). Note that mibcfg entries are always complete, i.e. they do not appear until a connection is stable. 02.01.2005 BUILD 1023 ** new help.zip ** Problem of NAT32 Service crashing on exit fixed. A web browser is no longer embedded if the NAT32 service is running under the SYSTEM Account. For full functionality, always configure the NAT32 Service to run under a specified user account. Favorites added to Web window. Problem with DHCP-configured Private interfaces fixed. 25.12.2004 BUILD 1022 ** new help.zip, web2.dll, dhcpd.ini ** Tcl problem fixed. Browser device added. Browser window now displays Internet Explorer Typed URLs. The URLs are updated each time user switches to a Web window. -----> New WEB DLL: web2.dll. Wake command added for Wake On LAN. Arpt command added for Wake on ARP. Ethernet address format changed throughout. New format is: xx-xx-xx-xx-xx-xx -----> NOTE: change MAC addresses in DHCPD.INI to use the new format. UDPECHO (for DUNSTAT) modified. Net.minifs now initialized in netstart. Url and Play commands now also work for an external browser. Muxreset daemon now started in "startup". This will remove zombie entries from the NDIS3PKT Mux Table every 5 minutes (adjustable). 07.12.2004 BUILD 1021 ** new help.zip ** Large buffer support added. Test version only released. 03.12.2004 BUILD 1020 ** new help.zip ** Problem with nif settings for connections already established when NAT32 starts fixed. Setis algorithm 3 (select an interface at random) added. Routes for specific protocols and port numbers now supported. This allows routes to specific gateways for specific protocols and port ranges to be added to the NAT32 routing table. Portless protocols such as ICMP and others are also supported. A few small changes in Quick dialog and RAS Server settings. Telnet command modified: now turns off local echo. Winio modified: now honors wtty.iecho setting. Uptime command added. Window close code modified. Ipcfg command fixed for NT and higher. 17.11.2004 BUILD 1019 ** new help.zip ** NDISWANIP runtime binding for Windows 2K and higher implemented. Notes: 1. If any DUN interface is already connected when NAT32 starts, the CONNECT file is not executed. The DISC file is executed if NAT32 is using the connection and it goes down while NAT32 is running. 2. Connected interfaces are never modified in any way, even if the netcfg file specifies a connection other than the one currently in use. 3. Only as many connections as there are NAT32 PPP Client interfaces can be bound at runtime. 4. Further details can be found in file: http://www.nat32.com/nat32e/htm/dialer.htm DUN support for NT4 modified. Problem with connection state detection fixed. DHCP detection modified for W2000 and higher. NT4 Note: Only new addresses on DHCP lease renewal are detected. If the new address equals the old address, the CHANGE script is not executed. When an address is released, the TCP/IP Parameters Key does not change, and so RegMon notices nothing. NT4 does modify the adapter-specific key in the Registry in this case, but RegMon isn't watching that key. This means that, after a release, NAT32 will keep on using the old address. On renewal, NAT32 will pick up the new address, but only if it differs from the previous one. 9X Note: DHCP releases and renewals are noticed. Windows 98 disables networking for up to around 30 secs after a DHCP lease has been renewed. Permanent Port Mapping modified: pmap table entry no longer added for incoming mapped connections. Target name or IP now supported. On Windows 2000 and higher, the order of NDIS3PKT devices is no longer critical. 03.11.2004 BUILD 1018 ** new help.zip ** Problem with inetmib1.dll fixed. Problem with NAT32 Service desktop interaction fixed. Service Description added to Registry. Shell cs command modified. All CS primitives now check the csentry.state variable. Command added: hosts [refresh] Used to view or update the table of Windows hosts on all networks. New whost daemon added. Start with "start whostd". This daemon checks the Windows Network Neighborhood at one-minute intervals. This feature can be used to keep track of how many private machines are up. The existing host daemon has been modified to write entries to the table of Windows hosts. It monitors incoming UDP Port 137 traffic on all NAT32 interfaces. It adds only the IP address and Ifn to the table, it does not add names. TCP Keepalive mechanism (setka [1 | 0] made more aggressive. When keepalive is on, all TCP connections are now probed (towards the local end only) at one-minute intervals. This will force stale TCP mappings out of the NAT32 Port Mapping table, and remove NDIS3PKT Mux Table entries as well. Unmap_port now handles incoming RST segments correctly. TCP FIN segments from server to client now set the entry's TTL to 10 secs. When that segment is forwarded to the client on the private LAN, its pmap entry is deleted. Crontab modified to clear partial connection and 445 entries from the NDIS3PKT Mux Table every minute. NDIS3PKT now opens fewer handles. NDISWANIP interface detection modified. 20.10.2004 BUILD 1017 ** new help.zip ** NDISWANIP Interface selection modified (Windows 2000 and higher). RegMon debug option added. WanCfg command added. WinCfg command ppp option added. All printf variants now catch exceptions. If you ever see a NAT32 Kernel Exception dialog box, please send the complete error text to NAT32.COM via this URL: http://www.nat32.com/message.htm. Various minor changes. 16.10.2004 BUILD 1016 ** new help.zip ** ICS/ICF bug fixed. Formatted time and large number support added. Shell redirection now opens output files in binary mode. Tcl 'file size' command fixed. Tcl 'glob */' command fixed. Various minor changes. NDISWANIP Interface changes handled. 08.10.2004 BUILD 1015 ** new help.zip ** ICF debug code added. Ask user before erasing log files. Dial Dlg now no longer blocks during dial or hangup. State variable added so that kernel calls are not done prematurely or after the kernel has been shut down. Window appearance flattened (except comboboxes). Tab key now works correctly in most windows. ShellExecute of help pages added. Webf command added: displays a file in Web Window or Web Browser. Console placement added. Screen buffer size can be specified in file: scrini (rows:cols). All placement variables in the Registry are now cleared on each configuration run. Fixed problem with hangups done from the Quick dialog, which were blocking the dialog until completion. 30.09.2004 BUILD 1014 All console windows now behave differently. Press Page Down to scroll the cursor into view. More details are below. Private server mode modified. Dial-Up Networking support modified. For full details, see: http://www.nat32.com/nat32e/htm/dialer.htm The PPPoE setting is now used only for MTU-related issues and for setting the NDIS3PKT driver info variable. Changes in winute, netstart and rttimer made. GPF in admin command fixed. Private DHCP-configured interfaces now handled correctly. DHCPD command extended: Usage: dhcpd [ifn [on | off | d | D | offset]] Offset denotes a number between 1 and 64 that is added to the allocated IP address. Example: if the DHCPD interface has the IP address 192.168.1.100, then the first allocated address is 192.168.1.100 + offset. For Private LANs with a gateway, a default route pointing to that gateway is no longer added. To reach machines behind that gateway, use the route add command to add one or more network-specific routes to the NAT32 Routing Table. Debug command added. Usage: debug [tid | name on | off] Enables per thread debug ouput to a debug viewer such as dbgview.exe from www.sysinternals.com. Because all threads inherit the debug setting of their parent, to enable debug output for any shell command, simply turn debug on for the shell that runs the command. A thread ID of 0 denotes the current thread. New window manipulation and sizing commands added: Command 'hide' modified. Usage: hide [icon | noicon] [name | dev] Command 'show' modified. Usage: show [max | min | default | restore] [name | dev] Command 'size' added. Usage: size [max | min | col:row] [name | dev] Window screen buffer size now set to 128 columns and 100 rows. All windows now scroll within that screen buffer. Filename length checked in namopen. Read Me Help menu item added. IPHLPAPI error messages now written to NAT32.LOG. Internet Radio support added. On W2000 and higher, dynamic binding of NDISWANIP interfaces to NAT32 Interfaces now supported. Windows ICS/ICF support updated. Window placement bug fixed. MTU handling for DUN connections modified. Netstart: default route for each Internet interface now added. 13.07.2004 BUILD 1013 Various small modifications and improvements. HT Mode modified. Private DUN interfaces now supported. 20.06.2004 BUILD 1012 National laguage dependency fixed in 98 configuration code. Command setht modified: A Windows default route to NAT32's IP now only added once. That route now only deleted when no longer needed. Now only deletes an existing Windows default route. 'Setht off' turns off HT mode for all interfaces. This is run in 'onexit' when NAT32 terminates. Host Transfer mode now also works for VPN Connections. Rttimer now passes the script name and the interface number to the 'connect' and 'disc' scripts. To run a custom TCL script on connect or disconnect, use a command like #!xyz at the end of your connect or disc script, where 'xyz' is the name of your script. It will receive 2 args: the string "connect" or "disc" and the current interface number. 17.06.2004 BUILD 1011 Regmon modfied: when adapter details change, regmon flags all ifns as modified and waits for a message from rttimer for each change it has handled. This fixes the problem that regmon was sometimes waiting for messages which were never sent. 14.06.2004 BUILD 1010 Http command modified to take a 'wide' argument so that a page returned in a wide character set is translated to ANSI. Ifn command now always displays ni_diag. Ipproc modified to update ni_diag before dialing. RAS routines modified to support up to 64 connections. Udpecho modified: temp string length increased. Udpecho modified: len returned by read checked. Udpecho modified: check that connect verb is at start of packet. Setpmd [on | off] command added. Turns Port Map Debugging on or off. When on, warnings about full port mapping tables are printed. Platform detection code modified. Default connection detection fixed for XP and higher. A default connection must "allow all users to use this connection". Autodial fixed for XP and higher. Config log checkbox added to Welcome Help dialog. 07.06.2004 BUILD 1009 Help command fixed so that it now fetches current help pages. 05.06.2004 BUILD 1008 Host Transfer mode added. This new feature allows Windows apps on the NAT32 computer to communicate through NAT32 instead of using the Internet connection(s) directly. This gives those apps all the benefits which NAT32 offers, such as Bandwidth Aggregation, Filtering, Tracing and protection against unsolicited incoming traffic. Set Host Transfer (setht host_ifn [0|private_ifn]) command added. Add this command to your 'startup' file to turn this feature on. Add the command: setht host_ifn 0 to your 'onexit' file to restore direct Windows Internet access when NAT32 exits. Alternatively, if your Internet Connection is a DUN connection, add the setht commands to the 'connect' and 'disc' files. Note: Host Transfer mode does NOT WORK with VPN Connections in this release. Windows Autodial and Hangup code modified. Best Match UDP unmapping mechanism modified (pm_partial). Setb command added to Best Match mapping to be turned on or off. Support for TFTP added: Outgoing UDP packets to port 69 record an ambiguous destination port in the pmtab. The source port number of the incoming response is then recorded in pmtab[i].dp. This now also works for shared VPN connections. DNS Detection modified in netin1. Promiscuous mode discard condition modified in netin1. Rttimer modified so that ni_ivalid and ni_svalid are cleared on DISC. This was causing several problems, including that the subnet route was not removed for DUN connections and that routing failed after a VPN connection to a private server was disconnected. Gmap add and delete modified so that mapping incoming VPN connections to a private VPN Server now works after the 1007 modification. 20.05.2004 BUILD 1007 Support for multiple VPNs to same VPN Server added. Service on 9X Platforms now waits until the Desktop is up so that autodials don't occur before IE is running. Admin modified to use 64-bit integers. Admin registry location now HKLM\Software\NAT Software\NAT32E 16.05.2004 BUILD 1006 Window placement bug fixed. Placement for ADMIN, APP, MONITOR and TRACE windows added. 15.05.2004 BUILD 1005 Bug in Build 1004 fixed (NAT32's private IP address was wrong). 14.05.2004 BUILD 1004 Problem of bad gateway being added fixed. DirecPC checkbox added. Set this checkbox if NAT32 could not find a Gateway at config time. US Robotics Cable Modem users may also need to set this checkbox if no gateway could be found. 12.05.2004 BUILD 1003 Problem with getip and get_ip fixed. MibUpd no longer called before the nifs are up. DirecPC support may now require manual setup. AutoDialing now no longer takes place if some other connection is already up. Window placement saved in registry (admin, trace, monitor). 25.04.2004 BUILD 1002 Service Control Manager problem fixed. Service detection code fixed. Configuration problem for PPPoE adadpters fixed. 18.04.2004 BUILD 1001 New registration method implemented. 13.04.2004 BUILD 1000 This build of NAT32 Version 1.8 was generated from Build 1074 of NAT32 Version 1.7. --------------------------------------------------------------------------