Message-Id: <201301131923.r0DJNA3A013357@delorie.com> Date: Sun, 13 Jan 2013 16:07:10 +0100 From: Juan Manuel Guerrero To: djgpp-announce AT delorie DOT com Subject: ANNOUNCE: tcp/ip library Watt-32 (version 2.2 dev-rel. 10) compiled with DJGPP. Content-Type: text/plain; charset=ISO-8859-15; format=flowed Reply-To: djgpp AT delorie DOT com This is the Watt-32 tcp/ip library compiled with DJGPP. Watt-32 is a library for making networked TCP/IP programs in the language of C and C++ under DOS and Windows-NT. Both 16-bit real-mode and 32-bit protected-mode is supported. For DOS, Watt-32 requires a packet-driver (PKTDRVR) to access the data-link layer. Futher information about this library can be obtained at: 1. DJGPP specific changes. ======================= The code source files have NOT been modified. The only source files that have been modified are the Makefiles. These need to be adjusted to work with compiler versions used nowadays. AFAIK the Makefiles were tailored to be used with gcc272 and gcc293. Especially the selected coff debug format makes seriuos problems. As usual the changes are documented in a patch file. You can inspect it in /contrib/watt/djgpp/diffs-watt-32.txt The -gcoff flag has been removed from all Makefiles. If this is not done all binaries produced with this library will abort with SIGSEGV. This is true at least if gcc46N and later is used. The dj_err program has been recompiled. This is necessary to produce an up-to-date sys_errlist[] for the different versions of djgpp. The test programs stored in /src/tests have not been tested by me. They may be compilable and may work or not. If they do not work, fix them and send me a patch. To fix them you are alone. This source archive (wat3222s.zip) has been created combining watt32s-2.2-dev.10.zip and small parts from watt32b-2.2-dev.10.zip. Both have been downloaded from: This source archive contains the complete content of watt32s-2.2-dev.10.zip and the djgpp specific makefiles from the /bin directory of watt32b-2.2-dev.10.zip together with ping.c, tiny.c and tcpinfo.c. This two programs are probably the most important to make a very first check if the library and the network connection really work. I have not tried to build any of the other programs stored in watt32b-2.2-dev.10.zip. The may work or not. If you need them, you are alone. If you really want to build them, download watt32b-2.2-dev.10.zip and copy the /bin directory into the directory tree created by wat3222s.zip archive. Please, pay attention to NOT replace the DJGPP specific makefiles provided by wat3222s.zip or the binaries will be build with coff debug format instead dwarf2 debug format. This usually leads to SIGSEGV at run time. I have tested this library only on MS-DOS 6.22 using VMware. I have created a NAT network connecting two identical MS-DOS VMWare clones configured by DHCP. Only ping test were made. For DOS a packet driver is required. I have used the one stored in pcntpk.zip. I do not remember from where I have downloaded it, but anyway you need to install the pocket driver that matches the network hardware you are using so you are alone here again. The wattcp.cfg file used has a single line like this: my_ip = dhcp Writing a wattcp.cfg that works for your network environment is your task. I cannot help you. I have _NOT_ tested the library with any windows version. The /bin directory contains all configuration files like wattcp.cfg, etc. provided by watt32s-2.2-dev.10.zip. I have not modified them. You must adjust them according to your network hardware anyway. Here you are alone. Please, read the original documentation. I have no major experience neither using WATT-32 nor using DJGPP for DOS networking. 2: Installing the binary package. ============================== Copy the binary distribution into the top DJGPP installation directory and unzip it running *ONE* of the following commands: unzip32 wat3222b.zip or djtarx wat3222b.zip or pkunzip -d wat3222b.zip It will create a /watt directory into the top DJGPP installation directory. To use the binaries produced with this library you must set the WATTCP.CFG environment variable to point to the directory containing the wattcp.cfg file. E.g.: set SET WATTCP.CFG=c:\djgpp\net\watt\bin This file must be adjusted according to your network. To use the headers and library in your own projects, you must set the WATT_ROOT environment variable to point to directory where the /inc and /lib directories are. E.g.: set WATT_ROOT=c:\djgpp\net\watt Of course, the "c:\djgpp" part of the string must be adjusted to reflect the path where you have installed the binaries, headers and library. To be able to compile projects that use this library, you must set the following gcc environment variables: set C_INCLUDE_PATH=c:/djgpp/net/watt/inc set LIBRARY_PATH=c:/djgpp/net/watt/lib If you have installed and configured everthing correctly you can start the tcpinfo program like this: redir -eo c:\djgpp\net\watt\bin\tcpinfo.exe > 1.txt and inspect its output. Please note that "c:\djgpp\net\watt\bin" is usually not in your %PATH%. For my installation I get the following output: --------- START --------- using sample configuration contact local network guru for more details Configuring through DHCP..Reading configuration file `c:\djgpp-2.04\net\watt\bin\wattcp.cfg' Warning: %WATT_ROOT% contains forward ('/') slashes. This may break some Makefiles. PKTDRVR Name : NE2100, version 0.03, API ?, intr 0x60 Class : Ethernet, level 2, RX mode 5 Address : 00:50:56:21:5C:AF IP Address : 172.16.244.142 Network Mask : 255.255.255.0 Gateways : GATEWAY'S IP SUBNET SUBNET MASK : 172.16.244.2 DEFAULT DEFAULT ARP Cache : IP Address MAC Address Type Timeout : 172.16.244.2 00:50:56:FE:B0:9E dynamic 299451 ms Host name : random-pc.localdomain Domain name : localdomain Nameserver : 172.16.244.2 Timeout 120s DHCP : Enabled and SUCCEEDED DHCP Server : 172.16.244.254 IPv6-address : FE80::2001:80FF:FE21:5CAF 6-to-4 gateway : 0.0.0.0 Max Seg Size,MSS : 1460 bytes Max Transmit,MTU : 1500 bytes TCP timers : Sock delay 30s, Inactivity 0s, Keep-alive 120s/30s : Open 1000ms, Close 1000ms, RST time 100ms : RTO base 10ms, RTO add 100ms, Retrans 10ms _tcp_Socket size : 4460 bytes _udp_Socket size : 1736 bytes HOSTS file : HOSTS6 file : SERVICES file : PROTOCOL file : NETWORKS file : ETHERS file : Version info : Watt-32 (2.2.10), GNU-C 4.7.2 (Pent), djgpp 2.04, Jan 12 2013 Capabilities : /debug/mcast/bind/BSDsock/BSDfatal/bootp/dhcp/rarp/lang/frag/stat/fortify/fsext/loopback/tftp/echo/PPPoE/IPv6/RS232/gzip-compr/TCP-MD5/DynIP/profiler/fast-pkt --------- END --------- For further information about WATT-32 please read the readme and install files stored in /net/watt __VERY CAREFULLY__. 3: Building the binaries from sources. =================================== To build the library and binaries you must install at least the following binary packages: gcc472b, bnu2231b, mak381b and sed421b. I have not tested with any previous versions of these binaries. Especially I have not tried any versions previous neither of gcc472 nor of bnu2231. I have no intentions to support any older versions of the compiler and binutils. All these packages can be found in the v2gnu directory of ftp.delorie.com and any mirror. Create a temporary directory. Copy the source package: wat3222s.zip into the directory and unzip it running ONE of the following commands: unzip32 wat3222s.zip or djtarx wat3222s.zip or pkunzip -d wat3222s.zip Set the WATT_ROOT environment variable. It must point to the directory where the /src/makefile.all is stored. E.g.: if the source archive has been unziped in z:/tmp, then WATT_ROOT must be set to: set WATT_ROOT=z:\tmp\contrib\watt cd into /contrib/watt/util and run the command: make -f errnos.mak dj_err.exe This binary is required by the build process of the library. cd into /contrib/watt/src and configure the sources by running the batch file: configur.bat djgpp This will create the required makefile for DJGPP and all other required files to compile the library. Now you can build the library by running the command: make -f djgpp.mak After having build the library, you can build the binaries ping.exe and tcpinfo.exe. To this purpose, cd into /contrib/watt/bin and run the command: make -f djgpp.mak ping.exe tcpinfo.exe There is no installation target in the makefiles. You can create a directory where you want to install the library. Make a /bin, /inc and /lib directory. Copy the *.cfg files from the /contrib/watt/bin into the new /bin directory, copy the contents of the /contrib/watt/inc directory into the new /inc directory _preserving_ the directory tree. Copy libwatt.a from /contrib/watt/lib into the new /lib directory. Then set C_INCLUDE_PATH and LIBRARY_PATH environment variable to point to the directory where the library and headers have been installed. Also set the WATTCP.CFG environment variable to point to the directory where wattcp.cfg has been stored. The port has been compiled using stock djdev203 (patchlevel 2) and consists of the two packages that can be downloaded from ftp.delorie.com and mirrors as (timestamp 2013-01-13): Watt-32(version 2.2 dev-rel. 10) binaries, headers,, library and docs: ftp://ftp.delorie.com/pub/djgpp/current/v2tk/wat3222b.zip Watt-32(version 2.2 dev-rel. 10) source: ftp://ftp.delorie.com/pub/djgpp/current/v2tk/wat3222s.zip The binaries have been produced a second time using the stock version of djdev204 beta library. This package is available at ftp.delorie.com and mirrors as (timestamp 2013-01-13): Watt-32(version 2.2 dev-rel. 10) binaries, headers,, library and docs: ftp://ftp.delorie.com/pub/djgpp/beta/v2tk/wat3222b.zip Send suggestions and bug reports concerning the DJGPP port to comp.os.msdos.djgpp or . Enjoy. Guerrero, Juan Manuel P.S.: this build has been used to create the OpenSSL 1.0.1c port released lately.