Patch Name: PHNE_17373 Patch Description: s700 10.20 OTS/9000 C.07.0[01] cumulative patch Creation Date: 99/03/15 Post Date: 99/03/26 Hardware Platforms - OS Releases: s700: 10.20 Products: OTS/9000 C.07.00 C.07.01 Filesets: OTS9000.OTS-KRN,C.07.00,C.07.01 OTS9000.OTS-MAN,C.07.00,C.07.01 OTS9000.OTS-RUN,C.07.00,C.07.01 OTS9000.OTS-SES-PRG,C.07.00,C.07.01 OTS9000.XAP-PRG,C.07.00,C.07.01 OTS9000.APLI-PRG,C.07.00,C.07.01 OTS9000.ROSE-PRG,C.07.00,C.07.01 Automatic Reboot?: Yes Status: General Superseded Critical: Yes PHNE_17373: PANIC HANG PHNE_15923: PANIC PHNE_15919: PANIC PHNE_15503: ABORT PANIC PHNE_14567: PANIC HANG CORRUPTION MEMORY_LEAK PHNE_8830: PANIC PHNE_8225: PANIC Path Name: /hp-ux_patches/s700/10.X/PHNE_17373 Symptoms: PHNE_17373: 1. OTS behaviour with non-ISO8878 configuration needs to be documented. 2. otsamd daemon dies causing OTS to stop working. 3. OTS code looping due to negative spinlock_depth causes a system hang. 4. otsstart fails when using double digit instance numbers for lan cards. 5. System crashes with OsiChkCtx() always showing up in the stack trace. 6. Wrong error message by osiconfchk. 7. otsshowis hang or incomplete output. 8. Delayed rejection of x25 connect request with an invalid CONS NSAP. 9. Request to modify behavior of CLNS retransmission timer. PHNE_15923: 1. osiadmin is unable to configure RFC1006 using the IP address assigned to a X.25 card. On a system that has no LAN interface, RFC1006 cannot be configured at all. 2. otsdeles command with the -w option was not case-insensitive with respect to destination NSAP addresses. 3. OTS should be capable of adding RFC1006 relocatable NSAPs. 4. Applications fail when X.25 subnets are configured with snet_bind_by_pid=0 and NULL subaddress. 5. Customer would like to determine X.121 address via Session API. 6. osiconfchk reports warnings about ACC/X.25 programmatic access names. 7. Random panic during OTS tests over STREAMS X.25. PHNE_15919: 1. ER: OTS should provide more flexibility in selecting transport classes. 2. Panic in Osxrlsrv() due to NULL q_ptr. 3. Customer needs OTS patch that is installable on both C.07.00 and C.07.01 and containing fix for SR# 5003416602. PHNE_15503: 1. Defects in osidiag - 1. FTAM Read Attributes Test does not work 2. Nettl traces for all tests are not correct 2. osi_get_prim()/osi_get_event() does not return proper registration id or connection id when called with regid and conid parameters set to 0. (regid parameter applicable only for osi_get_event() call). The session application could dump core if subsequent session calls are made after this since the conid or regid would not be valid. 3. OTS panic in prctr42() when receiving a badly-encoded echo request pdu. PHNE_14567: 1. Starting empty TCP/IP connections on socket 102 hangs RFC1006/OTS. No further incoming connections are accepted. 2. OTS panics when an indefinite length presentation PDU is sent. 3. OTS - APLI memory leak with OVDM 4.21. When running mp_assoc_requests to a non-existent NSAP in an infinite loop, the OTS layer leaks memory till the system eventually runs out of it. 4. Osiformat dumps core when formatting certain traces. 5. ED/EA-TPDU is not sent in extended format though extended format is negotiated. 6. Data corruption and occasional system panic while operating in MSDSG mode. 7. osipdufmt/osiformat should also suppress ISH packets. 8. osipdufmt does not format CLNS/X.25 PDUs properly. 9. otsdeles hangs due to infinite loop in awk script. 10. a. The attribute AP_PCDL is not settable in the AP_UNBOUND state. b. When you try to ap_bind() using an invalid NSAP, the program dumps core. 11. osipdufmt does not interpret X.25 nettl traces properly. 12. No documents are available to configure OTS in HA environment. 13. osipdufmt reports "Unknown TP option" for the parameter code 8B when formatting TP3 CR TPDUs. 14. OTS binds to the wrong PID with 1980 X25 and no ISO8878. 15. OTS APLI applications fail when AP_CNTX_NAME is set to 11 or 12 characters. 16. Hang in otsshowes command. 17. ap_rcv() returns wrong data when receiving a large ROSE PDU resulting in a corrupted PDU. 18. When no_of_connections is exceeded, ses_connect_id is looping. 19. Error freeing multi-RCI entries. 20. Error sending ESH after lan switchover. 21. Incorrect reason code for T-DISCONNECT-Ind. 22. Problems with otslogd and otsresmond. 23. otsstart -i does not work from /etc/rc.config.d/ots. 24. otsshowes does not display NSAPs whose length equal 17 or 18 octets. 25. OTS needs to support 100BaseT cards. PHNE_11880: 1. New functionality to allow Service Guard version A.10.10 to configure and monitor OTS X.25 subnets for remote X.25 switchover capabilities. 2. Trying to use class 3 transport results in a disconnect response with a reason of 8a. PHNE_8830: 1. osiconf will not allow preferred multiplexing class to be set to 3. 2. Shell scripts rely on transition links in 10.X releases of OTS. 3. osiadmin coredumps (not a panic) when you exit to a shell and return. 4. OTS - osiconf does not allow rfc1006 to be configured on some interfaces. 5. osidiag allows for the testing of the status of 2 of the 5 supported LAN cards. 6. osipdufmt -r does not put any timestamps into the formatted output, and it only formats RFC1006 PDUs. It is desirable to have other PDUs formatted as well. 7. OTS ESH packets are not sent out according to snet_esh_ctimer. If snet_esh_ctimer < 10, then ESHs are sent every 10 seconds, and it seems to round it off to a suitable multiple of 10. 8. OTS APLI problem with encoding of CPR-PPDU - invalid PCDRL. 9. OTS could not make connection to a remote node through X.25 when the X.25 subnet was configured to use 1980 standards with a NULL subaddress and snet_bind_by_pid set to one. 10. When OTS is configured over RK6, the IP address supplied by the application in osi_rgr_rq() is not transmitted to the peer. 11. An invalid TPDU sequence number is generated when the tpcons_propose_ext_fmt parameter is set to 1. 12. OTS does not conform to INTAP standards - ASN.1 TLV NULL values. 13. OTS returns OPI_ERR(0x8422) instead of ESPABID(0x1407) when an invalid NSAP address is used. 14. SESSION API, osi_rgr_rq() with no_of_connections parameter set to a value greater than 1024 returns osierrno : OSIEBADRNG. 15. OTS sends ESH out on the wrong lan card. 16. A TP3 CR could be interpreted as TP2 with flow control. 17. Memory leak occurs when an application registers and deregisters using Session API's by calling osi_rgr_rq() and osi_drg_rq() in a loop continuously. 18. ap_rcv() causes APRI application to core dump when APRI tracing is enabled. 19. System panics if the following are true: 1. Running TP3 2. OTS is rejecting a connection confirmation 3. The flag tpcons_propose_ext_fmt in ots_parms is set to 0(default). 20. The date field in osidiag when the tracing is enabled depends on the assumption of the date field being less than the year 2000. This assumption is no longer valid as one hits the century mark. 21. Applications written on 10.20, when moved to 10.30 and beyond, will not link with the proper version of the shared library, and may crash. 22. On receiving NULL data packets, the system panics. 23. If 'otsamd' dies, then at the first attempt to send out an RFC 1006 PDU, the system crashes. 24. 'otsdeles' does not handle alternate physical addresses properly. 25. PHNE_8828 prevents incoming Streams X.25 OTS calls. 26. Invoking 'man' on otsaddes, otsdeles and otsshowes results in the following error message - stdin: not in compressed format PHNE_8225: 1. The retransmission timer doesn't work as expected. 2. System panicked when it was idling. Panic message: Data page fault 3. MSDSG doesn't work. 4. ots_get_layer_stats does not return 0 when successful. 5. OTS does not support TP3. 6. TP3 over CONS is added to OTS. 7. System panicked when a FTAM connection is being established. Panic message: INTERNAL ERROR: Illegal RCI operation 8. a) osipdufmt doesn't handle -l option correctly. b) osipdufmt doesn't handle pdus across multiple X.25 packets c) odipdufmt doesn't format RFC1006 traces. 9. a) With multiple X.25 cards configured, no LAN; all cards in both CLNS and CONS subnets and any card's, other than the first's, X.121 address in the ots_dests file, a loopback(transport) test after doing an x25init of all cards will cause a system panic. b) With a single X.25 card configured in a CLNS subnet and no LAN subnet configured, the CLNS X.25 subnet will not work. One will not be able to make connections or transfer data. A simple loopback(transport) test will fail. Defect Description: PHNE_17373: 1. Behaviour of OTS in a non-ISO8878 configuration was not documented. Resolution: A document summarizing the behaviour of OTS in a non-ISO8878 configuration is now available under /opt/ots/doc. 2. The non-availability of X.25 level 3 streams in the system resulted in the failure of open() of the X.25 device by the daemon. This caused the daemon to exit. This happens only with STREAMS/X.25. Resolution: The daemon code was modified to handle the open() failure as a transient error condition. The kernel code was also modified so as to keep track of the number of successful open()'s performed by the daemon. 3. A sanity check for high processor spl level was causing infinite looping between two OTS functions resulting in a system hang. Resolution: A counter was introduced that prevents the looping from occuring beyond a specific count, allowing the system to function, even though OTS may not function normally. 4. The code assumed single digit lan interface numbers. Resolution: The code was modified to remove dependencies on number of digits in the lan interface. 5. The problem was due to dereferencing an invalid pointer. This happened due to the context cleanup not being complete when the context is in O_DIS state. Resolution: The problem has been fixed by ensuring that the context cleanup is complete. 6. btlan interfaces appearing in the lanscan output cause errors in string compares in osiconfchk, osidiag etc. Resolution: Code modified to remove assumptions about the lan interface names. 7. otsshowis could not handle the records that were split across multiple lines. Also a problem of not reporting the most recently updated Snpa has been fixed. Resolution: otsshowis script was modified to handle records which were split across multiple lines. otsshowes/otsshowis scripts will now always return the most recently updated Snpa for any NSAP in case there are multiple Snpa entries. 8. When snet_allow_x25_1984/88 is set to 1 on the initiator m/c and a new connection is requested with an invalid NSAP but with the correct x.121 address, there is no immediate rejection of the connection request. This problem occurs only on STREAMS/X.25. Resolution: The fix changes the way of rejecting a connection in case of the STREAMS/X.25 interface. 9. The behaviour of CLNS retransmission timer in OTS has been modified so that OTS now uses a fixed timer for retransmission of CR, CC, DR DT and ED TPDUs instead of using the exponential backoff algorithm. Resolution: The part of the code handling retransmission of unacknowledged TPDUs was modified for this. A new option has been added to 'otsstart' which may be used to enable this functionality during OTS startup. PHNE_15923: 1. osiadmin was using only lanscan to discover the configured nets. Some non-LAN interfaces like X.25 and ppl do not appear in the output of lanscan command. osiadmin needed to be modified so that it uses the output of netstat -i command, instead of lanscan. 2. The problem was due to the fact that the hexadecimal value given for NSAPs was being treated in a case-sensitive manner while updating the ots_dests file. 3. OTS has been enhanced to allow the user to add relocatable RFC1006 NSAPs. 4. OTS did not support X.25 subnets configured with a combination of snet_bind_by_pid set to 0 and NULL subaddress. If configured in this manner with STREAMS X.25, OTS would receive an incoming X.25 connect indication and discard it if it was not meant for OTS. OTS has now been enhanced to do a TRANSIENT_REJECT so that the X.25 driver can reroute the connect indication. 5. The Session library has been modified to provide the X.121 address of the remote client to the server application, after a successful session connect indication. This enhancement is valid only when the network layer is CONS/X.25. 6. OTS was capable of working only with Classic X.25 and STREAMS X.25 drivers. osiconfchk would report warnings while verifying the ACC/X.25 driver configuration. OTS has now been enhanced to work with ACC/X.25 driver as well. 7. The dereferencing of the NULL message pointer passed to the function GetCUD() caused the system to panic. GetCUD() is invoked with a NULL message pointer only in certain specific conditions with STREAMS X.25. PHNE_15919: 1. The APLI library has been changed to allow the user to select the desired transport class to be used on a per connection/destination/subnet basis using a global variable or via an environment variable when the application is the initiator for a CONS connection. 2. The lower mux read service procedure of OTS was invoked by STREAMS when the mux was in the process of being unlinked. The q_ptr was freed during the processing of the UNLINK ioctl by OTS. The panic was due to the dereferencing of this NULL q_ptr on invocation of the service procedure during UNLINK. 3. This patch is applicable to product revisions C.07.00 and C.07.01 . PHNE_15503: 1. When the system date is set to a value in or beyond the year 2000, these 2 functionalities do not work properly due to - 1. Wrong processing of date information as returned by the FTAM Read Attributes API. 2. Wrong information in time-related formatter filter information passed to netfmt. 2. The problem was due to the registration id and connection id not being updated with the proper values before returning to the user. 3. The panic was caused due to the derefencing of a null buffer pointer. PHNE_14567: 1. When the TCP/IP connections were closed,the cleanup of the allocated contexts being done was inadequate. This caused subsequent incoming connections on port 102 to hang. 2. The decoding of the indefinite length presentation PDU was erroneous. This led to improper indexing into the buffers, resulting in a system panic. 3. When connecting to a non-existent RFC1006 NSAP, an error is detected, but the interaction buffers were not being released. This led to the memory leak and the subsequent hang. 4. This was due to the improper indexing into the buffer used for decoding the PDU. 5. In class 2, for ED/EA TPDUs, no check was being done to find whether extended format has been negotiated. This caused these TPDUs to be encoded in the normal format even though extended format is negotiated. 6. A missing call to create a trace header in the module tr4sub.c is resulting in memory corruption of OTS data structures. This only happens when the MSDSG relay function is operating and is associated only with disconnect processing. 7. This is an enhancement for osipdufmt/osiformat to suppress ISH packets also. 8. The CLNS/X.25 traces contain the CLNP header, and so the formatting must start from the Network layer. Hence the "-t" option to osiformat in format_x25_trace function in osipdufmt script has been removed. 9. otsdeles script used to hang while processing the last ES entry, due to an infinite while loop. 10. a. The sap number which was to be passed as a parameter to one of the functions invoked while setting the attribute AP_PCDL was unavailable in the AP_UNBOUND state. However, in this particular function the sap number is not being used for any processing other than printing the value of the sap number. Hence, this variable has been made settable in the AP_UNBOUND state as well. b. One of the parameters to the function ai_reg_paddr() called by ap_bind() was missing. This resulted in the core dump. 11. This was due to changes made in the X.25 nettl trace format between 9.0 and 10.0. The AWK script which converts X.25 nettl traces into the format expected by osiformat has been fixed. 12. OTS online manuals /opt/ots/doc/ots_addendum.ps and /opt/ots/doc/ots_addendum_A4.ps (refer chapter two) now describe OTS configuration in an HA environment. 13. The changes made for fixing TP3 specification violation led to this. osiformat could not understand this parameter code. So it was reporting it as "Unknown TP option". 14. The problem was basically due to not explicitly checking for the presence of ISO8878 when 1980 X25 is to be used. This led OTS to bind to the wrong PID even though ISO8878 is in use. 15. Due to a wrong check used for the objid length within APLI library, the wrong buffer was being used, leading to a badly encoded objid. This caused applications to fail. 16. The output from otsop was such that the record spilled over to a new line. The awk script failed to process this properly and went into an infinite loop causing the hang. 17. The problem was basically due to using the wrong offset into APLI's private buffer. The offset was not getting updated properly, resulting in APLI using the wrong offset to copy data to user buffer and hence corrupting the PDU. The problem is seen only when using ROSE operations with indefinite length encoding for the encoded PDU. 18. The problem was due to an ESCONID being sent up from the kernel, but the session library being unable to handle the same due to lack of resources. The problem was fixed by having the library handle this situation and not allow the ESCONID to go upto the user application. 19. This is a bug in proc ERcMultiResolve (to remove a multi-RCI entry) that leaves the routing cache structures in an inconsistent state. Fix involves changing for loop to dynamically check for rccb->rccb_equiv instead of the variable rccb_root. 20. In the event of a lan card switchover, OTS searches for the interface on which the ESH has to be broadcasted. The bug in the search will cause the interface to get skipped if its not the first in an internal structure. If it is the first, multiple ESHs will get sent out on it. Fix involves correcting the for loop to increment latp after every iteration. 21. Reason code of 0xF9 (protocol error) was being reported when the timer for connect confirmation pops. This is fixed to return 0xF3 (invalid address/permanant transport error). 22. Calling otslogd and otsresmond with unknown options resulted in an unpredictable behaviour. 23. The problem was due to the adb script in otsstart. Now, the same has been replaced by otsop command. Man pages have been changed accordingly. 24. An NSAP of this length was causing the otsop output to spill over into the next line and the awk script failed to process this properly. 25. This is an enhancement. Patch 'postinstall' script has been modified to support installation of OTS over all the 100BaseT interfaces. PHNE_11880: 1. The OTS monitor "otsmond" will not work with Service Guard version A.10.10, and so this patch delivers "otsresmond" which does. 2. The parameter code for the ttr timer (in the variable part of the CR TPDU) was wrongly encoded as 8a. It should have been 8b. This wrong encoding was causing the responding entity to issue a reject with reason code 8a, which translates to an invalid header or protocol length error. PHNE_8830: 1. The JAM screen regular expression was not updated to reflect the multiplexing class when it was set to 3. 2. The OTS product for ALL 10.X versions shipped shell scripts with either "/bin/sh" or "/bin/ksh". These will only work for systems with transition links. It is an option when installing a system to NOT have transition links. To be fully compatible with all the systems these references must be changed to "/usr/bin/sh". 3. The JAM osiadmin main menu return pointer (ui_init_ptr) was not initialized as a result of which Osiadmin coredumps. 4. The method used by osiconf to check the IP address was not sufficient to locate all IP addresses on all lan cards. 5. The code had a wrong interpretation of the 'dl_next_offset' field, and the AREA_SIZE definition was too small to hold data with many structures sent back by PPA_INFO_ACK as a result of which it was not possible to test the status of more than 2 lan cards. 6. The AWK script which preprocesses the output from 'nettl' was not including timestamp information. The -r option was designed to ignore all but RFC1006 trace entries. 7. The current timer value in e2ittim() was decremented by 10 at each call and then the timer value was checked for expiration. The timer granularity was 10 sec, and the same timer was used for ESH and RIB. 8. On receiving a Connect Presentation(CP) PPDU with invalid Calling-Presentation-selector from connection initiator, OTS responder encodes the Connect Presentation Reject(CPR) PPDU with a wrongly encoded PCDRL and provider-reason. 9. OTS did not bind correctly to the 1980 X.25 PID even though the configuration was set to the 1980 standard. 10. The default IP address of the card (which is configured with ifconfig) was being sent to the remote application. RK6 was not doing an explicit bind of the local address. So the default was being picked up. 11. When the tpcons_propose_ext_fmt parameter is set to 1, the sequence numbering in the Transport PDU is incorrect, that is, it is 0, 2, 4 etc. instead of 0, 1, 2.. and the receiver closes the connection. 12. When P-selectors are configured as NULL for ftam initiator and responder (ae_local_paddr in local_app), the P-selectors sent in CP, CPA and CPR PPDUs are ASN.1 encoded as NULL with length as zero and no value. INTAP standard requires such P-selectors to be absent from the PDUs, these being optional fields of the PDUs. 13. When OTS is configured with only an RFC1006 subnet and an attempt is made to access a non-RFC1006 NSAP, OTS returns OPI_ERR(0x8422) instead of ESPABID(0x1407). OPI_ERR is not a known event as far as X.400 is concerned and so its state machine gets into an indeterminate state from which it is unable to recover. 14. The maximum number of connections supported at the session level is supposed to be 4096 for OTS from C.05.02 through C.07.00. But the maximum number of connections in transport over CLNS is 1024. The no_of_connections parameter was being checked against 1024 instead of 4096. 15. The parameter 'snet_esis' set to 0 prevents a subnet's ESH from being sent. Despite this, a non-HP machine sending out a DC (Disconnect Confirm) to an ALLES address, triggers the sending of an ESH for all LAN subnets. 16. Combining TRS_FLW (defined as 0x10) with TRS_CLASS2 (defined as 0x20), will conflict with newly added TRS_CLASS3 (0x30). 17. An application wishing to register itself calls osi_rgr_rq() which allocates memory. When deregistering, osi_drg_rq() is called which should deallocate the resources, but doesn't do it. This was causing a memory leak. 18. This happens in the ap_rcv() call, due to missing fprintf() format string. 19. With the misplaced/additional "#else and #endif", in t3sedrj() function, 'copy' buffer was a NULL pointer when tenqpfs was called and this resulted in a panic. 20. The onset of the year 2000 would result in major problems with the date field and other date related impacts. When the tracing is turned on in osidiag, the year field of the FORMATTER FILTER i.e., time_from