Patch-ID# 100850-08 Keywords: ibmftp te3278 pe3287 td3278 sna3274 hli dai MAXDATA snopts type5 Synopsis: SunLink 7.0.1: SNA 3270 Jumbo patch Date: Jul/25/96 Solaris Release: 1.x SunOS release: 4.1.1, 4.1.2, 4.1.3 Unbundled Product: SunLink SNA 3270 Unbundled Release: 7.0.1 BugId's fixed with this patch: 1094781 1095220 1097777 1098403 1107093 1107622 1110793 1118192 1121054 1127423 1133172 1139736 1148770 1151878 1152079 1152791 1153671 1154187 1160510 1162803 1164508 1164780 1167431 1169414 1173348 1176868 1182164 1185704 1187328 1188048 1191180 1203433 1238075 Changes incorporated in this version: 1185704 1188048 1191180 1203433 1238075 Relevant Architectures: sparc Patches accumulated and obsoleted by this patch: 100761 100771 100801 101173 101190 100917 101322 Patches which conflict with this patch: Patches required with this patch: Obsoleted by: Files included with this patch: 1. sunlink/3270/te3278 2. sunlink/3270/pe3287 3. sunlink/3270/kyinit 4. sunlink/3270/scinit 5. sunlink/3270/KYI3278.type5 6. sunlink/3270/SCI3278.vt100 7. sunlink/3270/ibmftp 8. sunlink/dai/hli/HLILIB.a 9. sunlink/dai/hli/README 10. sunlink/dai/hli/td3278 11. sunlink/dai/hli/td3278.debug 12. sunlink/dai/hli/td3278-tn 13. sunlink/dai/TN-DAILIB.a 14. sunlink/dai/TN-DAILIB.debug.a 15. sunlink/sna3270/sna3274 16. sunlink/sna3270/snopts 17. sunlink/sna3270/sys/sun4/OBJ/sdlc.o 18. sunlink/sna3270/sys/sun4/OBJ/zs_isdlc.o Problem Description: (Revision 08) ------------- BugID 1185704 Esc 11474: CGTN3270 closes connection after 6.5 minutes inactivity --------------------------------------------------------------------------------- An internal select() call was waiting on a write file descriptor set intead of a read file descriptor set. This could have resulted in a hang in ds_read(), although no such bug has been reported. The trace messages printed by TN-DAILIB.debug.a have been enhanced in order to provide additional information for debugging. BugID 1188048 Esc 500034: sdlc panics with bad mbuf ---------------------------------------------------- Added code to check for invalid mbufs received by sdlc. This will help to track the source of the bad mbuf if the panic happens again. BugID 1191180 Esc 500315: Time out on HLI send_file() and recv_file() functions -------------------------------------------------------------------------------- The HLI send_file() and recv_file() functions were timing out sometimes when transferring short files. They were returning HLI_OK with _return_code = HLI_PARM_ERROR, and the td3278 session log file showed: hlilib: Presentation Space "A": Timed out send_file() and recv_file() have been changed to return HLI_ERROR instead of HLI_OK when _return_code = HLI_PARM_ERROR because of an error in the length of the command string. They have been changed to return HLI_ERROR instead of HLI_SYSTEM_ERROR when the file transfer cannot be started because of errors. They have been changed to return HLI_ERROR with _return_code = HLI_FILE_TRANSFER_TIMEOUT when the file transfer times out, instead of returning HLI_OK with _return_code = HLI_PARM_ERROR. If the file transfer does not complete successfully then they will return HLI_ERROR with _return_code set to the TRANSxxx error code from the host; previously they returned HLI_OK with _return_code = HLI_PARM_ERROR /usr/sunlink/dai/hli/README was updated to show the changed return codes for send_file() and recv_file(). BugID 1203433 Esc 501213: pe3287 receives a random SIGTERM and dies -------------------------------------------------------------------- pe3287 was receiving SIGTERM and SIGHUP signals from an unknown source. After it received such a signal, pe3287 would die. In order to help shield pe3287 from these unwanted signals, pe3287 was modified to create its own session and new process group. BugID 1238075 Esc 504488: standout mode does not work on vt100 --------------------------------------------------------------- Previously, if a user defined standout mode to be reverse video, he would sometimes notice that a screen was not painted correctly by te3278. In these situations, te3278 was not sending out the necessary blanks in order to display reverse video blanks. te3278 was modified to send out these blanks and to paint the screen correctly. Users who have defined standout mode to be reverse video should also define the environment variable TE3278_RV_SO. This will indicate to te3278 that it needs to send out extra blanks in order to paint the screen properly. Users who have a different standout mode should not define this variable. This will help te3278 to avoid sending out extra blanks unnecessarily. Also, scinit was modified to allow a user to cancel a capability. "am" is the automatic margins termcap capability. Since it is a boolean capability, a user can indicate that it is supported by simply including "am" in the appropriate SCI3278 file. However, if it is not specified in the SCI3278 file, scinit will then check to see if this capability is specified in the corresponding termcap entry. If this capability is supported in this termcap entry, scinit would assume that it was supported. Therefore, there was no method to override this default and to specify that the "am" capability was not supported. scinit was modified to allow a user to override such a default am capability. If the user includes "am@" in the SCI3278 file, scinit will conclude that the am capability is not supported, even if the corresponding termcap entry states that it is supported. This "xx@" notation can be used to cancel any capability. For boolean capabilities, this would ensure that the capability is defined as not supported. Number capabilities would be set to 0, and string capabilities would be set to a null string. As with all other entries in the SCI3278 files, the "xx@" entry should be delimited with ":"s. Also, the use of the "xx@" notation will not prevent scinit from checking the values assigned to some capabilities. Therefore, a user should not cancel a required capability, such as "li" and "cm". Finally, scinit may adjust the value of a cancelled capability, in order to maintain consistency with the values of other capabilities. See Documentation Changes in the Special Install Instructions below for details. (Revision 07) ------------- BugID 1162803 Esc 8866 ----------------------- te3278 was hanging when it received Netview screen alerts after a user had entered a key (which should block writes from the host). te3278 was modified to wait until it receives the last in segment to send an error message to the gateway. Previously, te3278 immediately sent an error message to the gateway when it discovered a data stream error or if wanted to reject a bid request. BugID 1167431 Esc 9786 ----------------------- Previously, when a user pressed the Reset key, a te3278 over a lcl3270 gateway would always clear a WAIT condition. te3278 was modified to check for the environment variable LOCAL_NO_RESET_3278. If this variable is defined and if te3278 is connected to a lcl3270 gateway, then te3278 will not clear a WAIT condition when the user enters the Reset key. See Documentation Changes below. BugID 1173348 Esc 10133 ------------------------ set_session_parms(char *str, int *len) was expecting to be passed the count of parameters in len, which is not the documented interface. As a result, if the value in len (which could easily be initialized to zero or uninitialized and therefore random) was less than the actual number of parameters in str then the extra parameters were quietly ignored. set_session_parms() has been changed to ignore the value passed in with len. set_session_parms() uses strtok() to parse the parm string. As a consequence, null characters were being written after each token in the passed parm string by strtok(). set_session_parms() has been changed to make a temporary copy of the passed parm string before calling strtok(). The documentation of the set_session_parms() function was updated in the HLI README file. BugID 1176868 Esc 10538 ------------------------ clock_status() has the return codes HLI_BUSY (4) and HLI_KLOCKED (5) backwards. clock_status() is changed to return HLI_BUSY (4) if the inhibit or ds_kybdlk flags are set, thus indicating that the session is busy with the host. If neither of those two flags are set, then if the locked flag is set clock_status() will return HLI_KLOCKED (5), indicating that the keyboard is locked because of an invalid keystroke. The documentation of the clock_status() and clock_wait() functions was updated in the HLI README file. BugID 1182164 Esc 9639 ----------------------- td3278 was not clearing the HLI_BUSY status when handling a CLEAR key from send_keystrokes() while in an SNA SSCP-SLU session. A CLEAR key while in an SSCP-SLU session is handled locally and no AID is sent to the host. td3278 was not resetting the initial cursor address when handling a CLEAR key while in an SNA SSCP-SLU session. If the initial cursor address is not reset to zero, then an attempt to send data to the SSCP with an ENTER key may not work. td3278 has been fixed so that a CLEAR keystroke while in an SNA SSCP-SLU session resets the initial cursor address. BugID 1187328 Esc 11618 ------------------------ Users were unable to start a te3278 session under a particular set of circumstances. This occurred when less than 5 LUs were configured for the sna3270 gateway and when communications to the host were established in a particular order (e.g., connection to the host was made after sna3270 was started but before te3278 was started). In these cases, sna3270 was sending a message which included the number of LUs to te3278. te3278 was interpreting the number of LUs as a power on reject code. te3278 would then simply display an error message and then abort the session. sna3270 was modified so that it would not send the number of LUs in the message to te3278 under these circumstances. (Revision 06) ------------- BugID 1152791 Esc 7676 ---------------------- System panicked when the SNA gateway was stopped. A fix was made which should close a timing window when a spurious reset is received. BugID 1153671 Esc 7836 ---------------------- The SCS transparent mode data following the Transparent (TRN) SCS control code was being treated as if it were normal printable data. It was being translated from EBCDIC to ASCII, and non-printable characters were being translated to '-'. SCS transparent mode data following the Transparent (TRN) SCS control code is now being treated as binary data. It is not translated from EBCDIC to ASCII, and the printer position cursors such as current column and current line are not updated by receipt of the transparent data. If the transparent data does affect the position on the printer page, then the programmer must take into account the fact that pe3287 is not aware of the change in position. BugID 1154187 Esc 9088 ---------------------- te3278 did not support the 3270 datastream Graphic Escape (GE) order (x'08'). This order is used to write characters in the APL Text Feature code page (amongst others). te3278 was using the older method of handling GE when there is no alternate character set, namely returning a negative response to the datastream. This fix implements a more modern way of handling the GE order, it displays the character following the GE order as a hyphen ('-') character, instead of returning a negative response. BugID 1160510 Esc 8627 ---------------------- pe3287 did not flush its buffer at the end of a print job. Added fflush after fwrite of printer data. Also added additional pe trace and debug messages. The pe trace now also contains a trace of data written to the "printer". The DEVTRACE environment variable is used to enable this tracing. If DEVTRACE=ON, then trace data will be written to the pe trace file (specified via the -d option or the DBGFILE environment variable). If DEVTRACE=DEBUG, then debug messages will be written to the trace file along with the trace data. BugID 1164508 Esc 9158 ---------------------- SNA3270 previously only checked against the user name when it limited access to LUs via netgroup definitions. Now it also checks against both the host and the user names. BugID 1164780 Esc 9146 ---------------------- SNA3270 now checks to see if there is an active LU-LU session before it sends a Termself message. Otherwise it will send an offline Notify message. BugID 1169414 Esc 9639 ---------------------- td3278 has been modified to add a timestamp to the trace file messages (start_trace()), to make debugging easier. td3278 has been changed to catch the SIGHUP, SIGPIPE, SIGALRM, and SIGXFSZ signals in addition to those already caught. This makes sure all signals that can terminate the process without a core file will be caught and an error message written before terminating. If HLI tracing is enabled via start_trace(), then a message is written to the trace file when td3278 exits, except in the case of a caught signal (which always results in an error message). HLILIB.a has been modified to change the memory mapped file name from /tmp/td. to /tmp/td.. This allows multiple instances of the same application to coexist on one cpu. HLILIB.a has been modified to change the name of the error log file for the td3278 daemon process. The stdout and stderr for the daemon is redirected to this file. This change is intended to help keep error information from being overwritten by multiple applications running the same session name. The old file name is: $TD_LOG_DIR/td..log The new file name is: $TD_LOG_DIR/td...log The makefile has been updated to build a version of td3278 using the debugging version of the DAI library (DAILIB.debug.a), instead of the standard version (DAILIB.a). The debugging td3278 executable is named td3278.debug. In order to use td3278.debug, it has to be renamed to td3278. The extra DAI debugging and tracing messages are written to stderr unless the DBGFILE environment variable is defined with the name of a file to hold the messages. (Revision 05) ------------- Type 5 Keyboard Support ----------------------- Allows te3278 of SNA3270 7.0.1 to be used with the US/UNIX and TUV Type 5 keyboards. BugID 1094781 ------------- The 3287 printer emulation program, pe3287, was introducing an extra form feed at the end of the page. BugID 1097777 ------------- pe3287 could not print from CICS. BugID 1107622 ------------- When trying to print special characters locally using local print (hard copy) facility in te3278, it did not print the correct characters on the printer though the correct character was seen on the screen. BugID 1118192 ------------- Increased the performance of "ibmftp". A new environment variable, XFERMAX, can now be used to define the block size for file transfer (IND$FILE). Maximum value for XFERMAX is 8192, minimum value is 1024. The larger value of XFERMAX, the better performance for file xfer. Default value for XFERMAX is 8192. Normally, the user doesn't have to set up this environment variable unless he/she finds the IBM host rejects the blocks coming from Sun due to block size (like CICS application). BugID 1121054 ------------- When using the Token Ring interface and an XID exchange is required, a portion of the sna3274 process's memory was getting corrupted. This is known as the "Nynex fix". BugID 1127423 ------------- SNA gateway sometimes didn't respond to ACTPU or DACTPU. BugID 1133172 ------------- A PAD sent a BIND with Alternate Screen sizes (BIND bytes 20-23). Byte 24 contains 7f. This was rejected with sense code 0821. The PAD sends a BIND with byte 24 '7e' (alternate screen size ignored and base set only used). This bind was accepted. But on the terminal emulator screen we have a "454" message. This message was not cleared until the RESET key was pressed. BugID 1139736 ------------- SNA3270 7.0.1: Cross-Domain CICS applications need to receive TERM-SELF and SESSEND to terminate user sessions. The Cross-Domain IBM environment in this case has CICS running on one IBM mainframe and VTAM on another IBM mainframe. This patch allows a configurable 'snopts' parameter to be set in order to send a TERM-SELF and then a NOTIFY power-off. BugID 1148770 ------------- The 3278 terminal emulation program, te3278, updates the screen excessively when using a RS-232C ASCII terminal. For this fix, a new command line option has been added. The command line option is a "-r". In order to activate the fix, you must set the "-r" command line option when executing te3278. The default is not to activate this fix. BugID 1151878 Esc 7829 ---------------------- Clock_wait timeout is not changeable. BugID 1152079 Esc 7655 ---------------------- SNA3270 7.0.1: HLI library sendfile() times out. Session parameters are set via the set_session_parms() function. The TIMEOUT= parm was accepted, but its value was unused. The constant SESSION_TIMEOUT was used for the TIMEOUT= value. A fix was made to use the TIMEOUT= session parameter instead of the constant SESSION_TIMEOUT. Also, the documentation for the HLI hli_pause() function is incorrect. The HLI README file has been updated. -------------------------------- Patch Installation Instructions: -------------------------------- 1. Stop any terminal emulation software which might be running on your system, and stop the sna3270 gateway software using the command: # /usr/sunlink/sna3270/stopsna 2. create a temporary directory. copy the patch into your directory. cd to the directory: # cd 3. Save the previous versions: # mv /usr/sunlink/3270/te3278 /usr/sunlink/3270/te3278.previous # mv /usr/sunlink/3270/pe3287 /usr/sunlink/3270/pe3287.previous # mv /usr/sunlink/3270/kyinit /usr/sunlink/3270/kyinit.previous # mv /usr/sunlink/3270/scinit /usr/sunlink/3270/scinit.previous # mv /usr/sunlink/3270/KYI3278.type5 /usr/sunlink/3270/KYI3278.type5.previous # mv /usr/sunlink/3270/SCI3278.vt100 /usr/sunlink/3270/SCI3278.vt100.previous # mv /usr/sunlink/3270/ibmftp /usr/sunlink/3270/ibmftp.previous # mv /usr/sunlink/dai/hli/HLILIB.a \ /usr/sunlink/dai/hli/HLILIB.a.previous # mv /usr/sunlink/dai/hli/README /usr/sunlink/dai/hli/README.previous # mv /usr/sunlink/dai/hli/td3278 /usr/sunlink/dai/hli/td3278.previous # mv /usr/sunlink/dai/hli/td3278.debug \ /usr/sunlink/dai/hli/td3278.debug.previous # mv /usr/sunlink/dai/hli/td3278-tn \ /usr/sunlink/dai/hli/td3278-tn.previous # mv /usr/sunlink/dai/TN-DAILIB.a /usr/sunlink/dai/TN-DAILIB.a.previous # mv /usr/sunlink/dai/TN-DAILIB.debug.a \ /usr/sunlink/dai/TN-DAILIB.debug.a.previous # mv /usr/sunlink/sna3270/sna3274 /usr/sunlink/sna3270/sna3274.previous # mv /etc/sunlink/sna3270/gateway/snopts \ /etc/sunlink/sna3270/gateway/snopts.previous # mv /usr/sunlink/sna3270/sys/sun4/OBJ/sdlc.o \ /usr/sunlink/sna3270/sys/sun4/OBJ/sdlc.o.previous # mv /usr/sunlink/sna3270/sys/sun4/OBJ/zs_isdlc.o \ /usr/sunlink/sna3270/sys/sun4/OBJ/zs_isdlc.o.previous Copy the files in the patch: # cp sun4/sunlink/3270/te3278 /usr/sunlink/3270/te3278 # cp sun4/sunlink/3270/pe3287 /usr/sunlink/3270/pe3287 # cp sun4/sunlink/3270/kyinit /usr/sunlink/3270/kyinit # cp sun4/sunlink/3270/scinit /usr/sunlink/3270/scinit # cp sun4/sunlink/3270/KYI3278.type5 /usr/sunlink/3270/KYI3278.type5 # cp sun4/sunlink/3270/SCI3278.vt100 /usr/sunlink/3270/SCI3278.vt100 # cp sun4/sunlink/3270/ibmftp /usr/sunlink/3270/ibmftp # cp sun4/sunlink/dai/hli/HLILIB.a /usr/sunlink/dai/hli/HLILIB.a # cp sun4/sunlink/dai/hli/README /usr/sunlink/dai/hli/README # cp sun4/sunlink/dai/hli/td3278 /usr/sunlink/dai/hli/td3278 # cp sun4/sunlink/dai/hli/td3278.debug /usr/sunlink/dai/hli/td3278.debug # cp sun4/sunlink/dai/hli/td3278-tn /usr/sunlink/dai/hli/td3278-tn # cp sun4/sunlink/dai/dai/TN-DAILIB.a /usr/sunlink/dai/TN-DAILIB.a # cp sun4/sunlink/dai/dai/TN-DAILIB.debug.a /usr/sunlink/dai/TN-DAILIB.debug.a # cp sun4/sunlink/sna3270/sna3274 /usr/sunlink/sna3270/sna3274 # cp sun4/sunlink/sna3270/snopts /etc/sunlink/sna3270/gateway/snopts # cp sun4/sunlink/sna3270/sys/sun4/OBJ/sdlc.o \ /usr/sunlink/sna3270/sys/sun4/OBJ/sdlc.o # cp sun4/sunlink/sna3270/sys/sun4/OBJ/zs_isdlc.o \ /usr/sunlink/sna3270/sys/sun4/OBJ/zs_isdlc.o 4. If you wish to enable type 5 keyboard support: NOTE: You must use OpenWindows Version 3 or later in order to use type 5 keyboards. To install the patch and to use type 5 keyboard add the following commands in your ~/.xinitrc file (before wait statement). # following are for type 5 keyboards xmodmap -e 'keysym Insert = R1' xmodmap -e 'keysym Insert = R1' xmodmap -e 'keysym Delete = R3' xmodmap -e 'keysym Delete = R3' xmodmap -e 'keysym Home = R7' The above permanently changes the escape sequence emitted by two Ins keys, two Del keys and two Home keys, and thus enables both Ins, Del, and Home keys to generate the same escape sequence. Use the following command to generate the new KY file for type 5 keyboard: kyinit -k sun4/sunlink/3270/KYI3278.type5 -o /usr/sunlink/3270/KY3278.type5 5. To incorporate changes to SCI3278.vt100: This patch contains a new SCI3278.vt100 file. This file was modified to cancel the "am" capability. If you have made any modifications to the FCS version of SCI3278.vt100, you should save your version of this file before installing this patch. You will then need to incorporate your modifications into the new SCI3278.vt100 file and to use scinit to create a new SC3278.vt100 file. Even if you have not made modifications to SCI3278.vt100, if you use SC3278.vt100, you should use scinit to create a new SC3278.vt100 file. 6. To pick up the HLI library modifications: Your HLI applications have to be relinked to pick up the new HLILIB.a. HLI applications MUST be relinked with HLILIB.a from patch level 100850-08 or higher in order to function correctly with the td3278 installed by patch level 100850-08 or higher. NOTE: Applications linked with the HLILIB.a from this patch are not compatible with any version of td3278 older than patch level 100850-08. 7. If you wish to activate the TERM-SELF feature: Re-configure the SNA3270 gateway using the 'snopts' program. Add the following entry to your "c3274." file: termself on 8. To pick up the sdlc fixes: Remake the kernel: # cd /usr/sunlink/sna3270 # install.sna3270 Reboot with the new kernel. 9. Re-start the sna3270 gateway software using the command: # /usr/sunlink/sna3270/startsna ---------------------- Documentation Changes: ---------------------- 7.0 SunLink User's Guide (800-4957-10) Chapter 2, Starting and Using the Terminal Emulator Section 2.4, Setting Environment Variables LOCAL_NO_RESET_3278 ------------------- When te3278 is started, it checks for the environment variable LOCAL_NO_RESET_3278. If this variable is defined, then the te3278 (if accessing the host via a local 3270 gateway) will not clear a WAIT condition when the user presses the Reset key. TE3278_RV_SO ------------ If you are using reverse video as your standout mode, you must define the environment variable TE3278_RV_SO. If this environment variable is not defined, screens with standout blanks may be displayed incorrectly. Chapter 5, Specifying Your Screen Characteristics Section 5.1, Considerations for scinit You may cancel any capability by adding "xx@" (where "xx" is the name of the capability you wish to cancel) to the SCI3278 file. For boolean capabilities, this would ensure that the capability is defined as not supported. Number capabilities would be set to 0, and string capabilities would be set to a null string. scinit will set the specified capability to these values regardless of any other definition for the capability in either the SCI3278 file or the termcap entry. As with all other entries in the SCI3278 files, the "xx@" entry should be delimited with ":"s. The use of the "xx@" notation will not prevent scinit from checking the values assigned to some capabilities. Therefore, a user should not cancel a required capability, such as "li" and "cm". If a required capability is cancelled, scinit will not process the remainder of the file and inform you of the error. In addition, scinit may adjust the value of a cancelled capability, in order to maintain consistency with the values of other capabilities. Chapter 6, Operating the 3287 Printer Emulator SCS transparent mode data following the Transparent (TRN) SCS control code is now being treated as binary data. It is not translated from EBCDIC->ASCII, and the printer position cursors such as current column and current line are not updated by receipt of the transparent data. If the transparent data does affect the position on the printer page, then the programmer must take into account the fact that pe3287 is not aware of the change in position.