DEC TCP/IP UCXECO_A_40_1 DEC TCP/IP V4.0 for OPENVMS AXP V7.0 ECO Summary
NOTE: An OpenVMS saveset or PCSI installation file is stored
on the Internet in a self-expanding compressed file.
The name of the compressed file will be kit_name-dcx_vaxexe
for OpenVMS VAX or kit_name-dcx_axpexe for OpenVMS Alpha.
Once the file is copied to your system, it can be expanded
by typing RUN compressed_file. The resultant file will
be the OpenVMS saveset or PCSI installation file which
can be used to install the ECO.
Copyright (c) Digital Equipment Corporation 1996. All rights reserved.
PRODUCT: DEC TCP/IP Services V4.0 for OpenVMS AXP
OP/SYS: OpenVMS Alpha
SOURCE: Digital Equipment Corporation
ECO INFORMATION:
ECO Kit Name: UCXECO_A_40_1 (DEC-AXPVMS-UCXECO_A_40_1-V0100--4)
ECO Kits Superseded by This ECO Kit: None
ECO Kit Size: DEC-AXPVMS-UCXECO_40_1-V0100--4.PCSI - 16,960 Blocks
Cover Letter - 4 Blocks
Total of 2 files - 16,964 Blocks
Kit Applies To: Digital TCP/IP Services for OpenVMS AXP V4.0
System/Cluster Reboot Necessary: Yes
ECO KIT SUMMARY:
An ECO kit exists for Digital TCP/IP Services for OpenVMS AXP V4.0
on OpenVMS Alpha V7.0 and higher. This kit addresses the following
problems:
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 INSTALL Images
---------------------------------------------------------------------------
NOTE:
THE FOLLOWING FILES ARE SPECIFIC TO THE PLAT_A.VMS_V70 BUILD OF BL10 *
ALPHA_UCX040.RELEASE_NOTES;1
INSTALL.COM;1
UCX$AXP_MISC.PDF;1
UCX$PCSI_MODULE.COM;1
UCX$PCSI_RESULT.COM;1
UCX$PCSI_TAIL.COM;1
UCX$VAX_MISC.PDF;1
UCX040_RELEASE_NOTES.PS;1
UCX_AXP.PCSI$TEXT;1
UCX_AXP.PDF;1
UCX_THETA.PCSI$TEXT;1
UCX_THETA.PDF;1
UCX_VAX.PCSI$TEXT;1
UCX_VAX.PDF;1
ECO 1 updates:
--------------
ECO A 02-Nov-1995 Alpha and VAX
Images:
None.
Problem:
The UCP startup command procedure, UCX$UCP_STARTUP.COM, installs
the SYS$SYSTEM:UCX$UCP.EXE image with privileges that it does not need.
Solution:
Remove the /PRIVILEGES qualifier from the INSTALL command line.
Reference:
Per V4 review.
ECO B 10-Jan-1996
Images:
None.
Problem:
Applications, such as the PATHWORKS mail server, that turn off the CCL
bit when started through RSH or REXEC, were preventing the NULL byte,
which is part of the RSH and REXEC protocols, from being sent to
confirm a successful login.
Solution:
Add an extra line ($ WRITE SYS$OUTPUT "") before executing the specified
command. This solution will give the kernel an opportunity to send
the NULL.
Reference:
Internal report.
Note:
To be effective, these new .COM procedures must be copied to
their respective target directories, which will exist only if the
relevant service has been enabled via UCX$CONFIG. The modules should
always be copied to SYS$COMMON:[SYSMGR], but should also be copied to
SYS$SYSDEVICE:[UCX$RSH] and SYS$SYSDEVICE:[UCX$REXEC], if they exist.
ECO B of these files is designed to work with ECO E or later of the
NET component. Using these new .COM files with older kernel code
will result in an extra blank line appearing at the beginning of
each RSH or REXEC session.
ECO C 23-Feb-1996 Alpha and VAX
Images:
UCX$BIND_VALIDATE_SETUP.EXE UCX V4.0-10C
Problem and solution:
Addition of name server setup scripts.
Addition of metricview command.
Reference:
To set up the name server, execute: @sys$manager:ucx$bind_shell.com.
the main module. This module performs the preliminary
set ups and invokes the server menus.
The module validates for the BIND logicals and
creates the local loopback and root cache files in
the UCX$BIND directory. if they do not already exist.
o UCX$BIND_SERVER_DOC.COM
Complete documentation and reference for setting up the name
server.
o UCX$BIND_PRIM_SETUP.COM
Primary name server setup procedure. The module is invoked
from UCX$BIND_SHELL procedure.
o UCX$BIND_SEC_SETUP.COM
Secondary name server setup procedure. The module is invoked
from UCX$BIND_SHELL procedure.
Image: SYS$COMMON:[SYSEXE]UCX$BIND_VALIDATE_SETUP.EXE
This backend module to the name server configuration and setup
procedures searches for the domain records in the BIND config
database. If the records exist for a particular domain, an error
is returned. The module also prevents the same name server from
being configured both as a primary and a secondary server for the
same domain. Performs other simple record manipulation.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 Kernel Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 14-Nov-1995 Alpha and VAX
NOTE:
The correction to INETACP_TTSUP.MAR is already applied in the BL10
(SSB) kits for PLAT_V.VMS_V55 and PLAT_A.VMS_V70 ***
Images:
UCX$BGDriver.EXE UCX V4.0-10A
UCX$INTERNET_SERVICES.EXE UCX V4.0-10A
UCX$INTERNET_SERVICES_V6.EXE UCX V4.0-10A
UCX$INTERNET_SERVICES_SEC.EXE UCX V4.0-10A
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V4.0-10A
UCX$INETACP.EXE UCX V4.0-10A
Problems:
1. System crashes during shutdown due to deleting an interface that
has contradictory data in its IF structure. Namely, the IF is for
a SLIP device (i.e. SLx) but the IF$B_IFTYPE field indicates an
Ethernet device.
2. Inadequate ARP table causes too many ARP messages
to be broadcasted. Also, correct counting of ARP
messages to properly account for which ones are
broadcasts and which ones are not (INET_IF_VCI.MAR)
3. OpenVMS V7.0-only problem. On logout from TELNET,
the TELNET connection hangs. This is included here
for completeness to explain the presence of INETACP_TTSUP.MAR
in the SRC_PAT stream.
4. A READ operation with the LOCKBUF set could, upon receipt of
out-of-order TCP segments, leave the low water mark set in the
socket. Subsequent READ operations without LOCKBUF, or using a
smaller buffer size, would hang awaiting additional data.
5. System crash in security driver when using the local interface.
6. Synchronization crash in PWIP.
7. Crash (AXP only) after having deallocated the SLIP structure
to the INETCB free list, where it was re-allocated and corrupted.
8. System pool fills up with VCRPs, exhausting pool, causing a cluexit.
Solutions:
1. The problem is a flaw in the logic that creates Pseudo interfaces.
Creating a pseudo interface on an existing SLIP interface produced
the inconsistent data structures that led to the crash.
Corrected to prevent this from occurring.
Note this is a forward retrofit of ECO N of V3.3.
2. Allow for dynamic allocation of ARP table at UCX
startup. Note that this is an interim correction that
will require UCP support in a future release.
Note that this is a forward retrofit of ECO P of V3.3.
3. Correct the offset of REQCB$L_ALPHA_CHAN to match IRP$L_CHAN for
OpenVMS Alpha V7.0.
4. Clear the low water mark upon returning from any READ where
the LOCKBUF modifier was used.
5. In INET_IPINTR (INET_IN_OUT.MAR), in security driver conditional
code, check for zero pointer to IF_UCB, and if present, use the Local
interface.
6. Along with PWIP changes made in PWIP ECO A for V4.0,
the UCB$L_BG_TEL_UCB field is cleared when a BG channel is deassigned.
7. Dispatching for the REQCB$C_DEACTIVATE_SLIP function was
inexplicably left out of the AXP specific dispatch table.
The solution is to add dispatching to the table for this function.
8. This problem arises when you receive a large amount of duplicate
TCP packets, each containing a FIN only and a sequence
number that is one higher than the expected number. As a result, we
queue these redundant packets until all pool is consumed with them.
The problem is that we do not recognize them as redundant.
The solution is the addition of some simple logic into routine,
tcp_reass, in TCP_INPUT_VMS.C, which takes into account
that a packet containing a FIN consumes one unit of sequence
number. With the addition of this logic, we will recognize the
redundant packets and deallocate them immediately.
Enhancements:
1. Change the interface for the call to INET_COMPRESS_PACKET to
prepare the way for eventual PPP support.
2. Align the start of data in a VCRP on OpenVMS Alpha V7.0.
References:
1. CFS.33896.
2. CFS.33563, CFS.38218 and others.
3.
4. CFS.33932,
5. Internal report.
6. Internal report.
7. CFS.35206.
8. CFS.34368.
ECO B 18-Dec-1995 Alpha and VAX
Images:
UCX$BGDriver.EXE UCX V4.0-10
UCX$INTERNET_SERVICES.EXE UCX V4.0-10B
UCX$INTERNET_SERVICES_V6.EXE UCX V4.0-10B
UCX$INTERNET_SERVICES_SEC.EXE UCX V4.0-10B
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V4.0-10B
Problem:
IGMP group membership queries were not being answered, which
prevented local routers with IP multicasting capability from
learning of a UCX host's group memberships.
Solution:
Update internal tables so that IGMP messages will be
received and processed appropriately.
Reference:
CFS.35580.
ECO C 28-Dec-1995 Alpha and VAX
Images:
UCX$BGDriver.EXE UCX V4.0-10C
UCX$INTERNET_SERVICES.EXE UCX V4.0-10C
UCX$INTERNET_SERVICES_V6.EXE UCX V4.0-10C
UCX$INTERNET_SERVICES_SEC.EXE UCX V4.0-10C
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V4.0-10C
Problems:
System crash, INVEXCEPTN, due to VCRP$L_DEALLOC_RTN field being zero.
The problem arises because we attempt to deallocate an already
deallocated VCRP. The method of deallocating a VCRP is to call the
routine pointed at by the VCRP$L_DEALLOC_RTN field. This routine
then deallocates the VCRP and zeros out this field. An attempt to
deallocate it again results in a crash.
After urgent TCP data (OOB data) arrives and is read, the socket is
still considered to be in OOB state until non-OOB data arrives.
The select() call, however, was returning immediately in this case
due to the OOB state, even when no OOB data was available.
Solutions:
We arrive at this problem when we call routine ip_dooptions
from inet_ipintr in INET_IN_OUT.MAR, and ip_dooptions returns an error.
In this case, ip_dooptions already deallocated the VCRP and we then
were branching to deallocate it again. The solution is to test for
the error and then skip the deallocation in this case.
If the receive buffer is empty, do not return from select() with an
exception flag.
Reference:
CFS.36199,
CFS.36143.
ECO D 4-Jan-1996 Alpha and VAX
Images:
UCX$BGDriver.EXE UCX V4.0-10D
UCX$INTERNET_SERVICES.EXE UCX V4.0-10D
UCX$INTERNET_SERVICES_V6.EXE UCX V4.0-10D
UCX$INTERNET_SERVICES_SEC.EXE UCX V4.0-10D
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V4.0-10D
Problem:
If 2 processes share a socket and process A calls $DASSGN on that
shared BG device, I/O queued to the device by process B is
canceled.
Solution:
In INET$CANCEL, initialize two new fields in the UCB so that in the
future, we can determine that this is NOT the last deassign of this
device. In this case, we selectively cancel only the I/Os that belong
to the process doing the $DASSGN.
Reference:
CFS.33352,
CFS.26480.
ECO E 11-Jan-1996 - 29-Jan-1996 Alpha and VAX
Images:
UCX$BGDriver.EXE UCX V4.0-10E
UCX$INTERNET_SERVICES.EXE UCX V4.0-10E
UCX$INTERNET_SERVICES_V6.EXE UCX V4.0-10E
UCX$INTERNET_SERVICES_SEC.EXE UCX V4.0-10E
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V4.0-10E
UCX$INETACP.EXE UCX V4.0-10E
Problems:
1. Applications such as the PATHWORKS mail server, which disable
carriage control (CCL) after being invoked through RSH or REXEC,
were preventing the initial NULL byte from ever being sent.
2. System crash in TNDRIVER with INVEXCEPTN due to continuing sporadic
synchronization problems.
3. System enters a high IPL loop, repeatedly calling COM$FLUSHATTNS
from INET_FLUSH_ALL_AST.
4. System crash in EXE_STD$PRIMITIVE_FORK, trying to deliver what is
supposed to be an Attention AST but is actually a pointer to
the PWIPDRIVER receive socket call back routine.
5. When the UCX TELNET server accepted a connection from a host with a
12-digit IP address, that host's name was not correctly resolved.
Instead, the IP address was shown.
6. Automatically configuring SLIP interfaces through
"UCX SET CONFIG INTERFACE" etc. fails while hand configuring of the
same interface succeeds.
7. System crash in data link driver when you return to the data link
driver after it called you back from a AYNCH_JSB invocation. At that
time, you return to the data link R4 that contains a zero, and the
VCIB has been deallocated.
Solutions:
1. Allow the DCL procedure, which starts RSH and REXEC connections,
to perform the first output thereby assuring inclusion of the NULL.
2. The main part of this correction is to introduce more extensive
validation code in the TNDRIVER. However, some of the data to be
validated comes from the BGDRIVER and is conveniently passed to the
TNDRIVER in the INETCB structure. Therefore, you create a new field
in the INETCB, the INETCB$L_BG_UCB_SIZE_TYPE_FLCK field, and
initialize it in INETACP_INIT.MAR, in routine, INETACP_INIT_INETCB.
The data is referred to in the TNDRIVER in module
UCX$TN_SERVER_MAIN.MAR, in routines TN$START_COMMON and
TN_UCB_TO_BG_UCB.
3. This problem was introduced by ECO V. The problem arises in a loop
where you call COM$FLUSHATTNS. The solution is to only traverse the
loop once when doing selective cancel I/O.
4. This problem is a synchronization problem between PWIP and the
the BGDRIVER (or UCX$INTERNET_SERVICES for VAX). At the time of
the crash, a SOCKET structure points to a UCB but the
corresponding UCB does not point back to the SOCKET. This apparently
occurs when you are tearing down a connection in PWIP and some data
comes into the SOCKET. The correction for this problem requires
changes in NET and PWIP. In NET, we define two new bits:
UCB$x_BG_PWIP in the UCB$W_BG_FLAGS word and SOCKBUF$x_PWIP in the
SOCKBUF$L_FLAGS field. In NET, these bits are only looked at in
INET_MAIN.MAR. Both these bits are set and cleared in PWIP. Also,
previously PWIP only set the UCB$x_BG_SELECT bit in the
UCB$W_BG_FLAGS word instead of the first of these new bits. This led
to some confusion in INET_MAIN.MAR. Now we unambiguously label
PWIP devices. Note that the SOCKBUF$L_FLAGS field is declared in
INET_NPGD.SDL for macro code and a corresponding sb_flags field is
Digitallared in SOCKETVAR.H for the C code. To be consistent,
we also declare a new bit, SB_PWIP, to correspond to SOCKBUF$x_PWIP
even though it is not referred to in the C code.
5. Do not add a trailing space character to the ASCII form of the IP
address. This extra character caused the address to exceed the legal
length, in the case of a 12-digit address, and prevent translation.
6. When the configuration database contains an automatic SET INTERFACE
for a SLIP interface, the UCP implicitly performs a UCX SET INTERFACE
command that includes the /BROADCAST mask parameter. Since SLIP
interfaces do not support broadcasting, this causes us to reject the
interface. The solution is to introduce code in INETACP_SLIP, in
routine, CREATE_P5_BUFFER, to explicitly ignore the command to set a
broadcast address on the interface.
7. The normal flow on VCI port management calls to the data link is
that we issue a ASYNCH_JSB (which returns to our caller); VCI calls
us back when the port management function is initiated; VCI calls us
back after the port management event associated with the completion of
the function occurs. The problem was that if the VCI callback
indicated an error, we assumed that they would not make the second
callback and that therefore we should perform cleanup at the time of
the first callback. The result was that we cleaned up things that the
data link still needed.
The correction is to always assume that the second callback will
occur and to use a timeout mechanism for cleanup if they do not give
the second callback. In this way, you do not perform the cleanup
prematurely.
References:
1. Internal Report.
2. CFS.36056.
3. Internal testing.
4. CFS.33756.
5. CFS.27194.
6. Internal Report.
7. CFS.37081.
Notes:
1. To be effective, this update must be installed along
with a new SYS$SYSDEVICE:[UCX$REXEC]UCX$REXECD_STARTUP.COM
and SYS$SYSDEVICE:[UCX$RSH]UCX$RSHD_STARTUP.COM file, containing
an extra $ WRITE SYS$OUTPUT "" line.
These .COM files can be found in ECO B of the INSTALL component.
2. The INETACP code additions are benign and can co-exist with previous
TNDRIVER versions. However the new TNDRIVER requires the new INETACP.
4. These code additions require the corresponding new PWIPDRIVER, if one
is running PWIP.
ECO F 15-Feb-1996 Alpha and VAX
Images:
UCX$BGDriver.EXE UCX V4.0-10F (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V4.0-10F
UCX$INTERNET_SERVICES_V6.EXE UCX V4.0-10F
UCX$INTERNET_SERVICES_SEC.EXE UCX V4.0-10F
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V4.0-10F
UCX$INETACP.EXE UCX V4.0-10F
Problem:
1. Upon shutting down UCX on a node which participates in a cluster
alias but is not the current impersonator, we sent out a
misleading ARP broadcast announcing ourselves as an impersonator.
2. On VAX systems, when SLIP is enabled on a terminal line, the UCB
for the terminal has an unrelocated value for its FDT. This
situation might result in a crash.
Solution:
1. Check the status value returned in the LKSB (lock status block)
to determine whether we have actually been granted the cluster
lock or the LOCK_GRANTED_AST routine has been called as a result
of a $DEQ operation during normal shutdown.
2. In INET_SLIP_OPEN in INET_SLIP.MAR, we were already relocating the
class driver vector table. At the same time, we now relocate the
DDT$L_FDT field.
References:
1. CFS.34714.
2. Internal report.
ECO G 27-Feb-1996 Alpha and VAX
Images:
UCX$BGDriver.EXE UCX V4.0-10G (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V4.0-10G
UCX$INTERNET_SERVICES_V6.EXE UCX V4.0-10G
UCX$INTERNET_SERVICES_SEC.EXE UCX V4.0-10G
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V4.0-10G
UCX$INETACP.EXE UCX V4.0-10G
Problem:
Problems exist with shared sockets. First, the selective cancel I/O
functionality introduced in ECO D and refined in ECO E still
did not properly select I/Os to be canceled. Second, when
I/Os were selectively canceled, if the active IRP on a queue was
canceled, the queue was left in limbo with no mechanism for
restarting. Third, an original design flaw was found
in the code that implements the basic mechanism that manages the
read, write, and miscelanneous queues on a BG device. This flaw
effectively precluded true shared sockets and manifested itself
in the following way: when a queued operation completed,
the next operation on the queue was handled in the context
of the process that handled the first operation, even when the
new operation did not belong to this process. The result was
corruption of the address space of the process within whose
context the erroneous I/O was handled.
Solution:
The first problem was solved by tightening the selection
criteria in the INET_SHUTDOWN_FLUSH_* (INET_ACCESS.MAR) family
of routines so as to properly select the I/Os to be canceled and
to then reconstruct the queues. The second problem, restarting
stalled queues, was solved by introducing a new routine,
QUEUE_INET_KAST, in INET_MAIN.MAR, which is a simplified version of
INET_IRP_UP_1 for the purpose of restarting queues in the context of
a particular process. The third problem, where I/O requests were
being serviced in the wrong context, was solved by introducing a test
for the proper context into the main queue dispatching routine,
INET_ENQ_IO_RESTART in INET_RCV_XMT.MAR. When a mismatch is found,
the queue is left dormant but a call is made to the new routine,
QUEUE_INET_KAST, to restart the queue in the proper process context.
Reference:
Internal report of hung processes, in RWAST state,
when running NETSCAPE.
ECO H 29-Feb-1996 Alpha and VAX
Images:
UCX$BGDriver.EXE UCX V4.0-10H (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V4.0-10H
UCX$INTERNET_SERVICES_V6.EXE UCX V4.0-10H
UCX$INTERNET_SERVICES_SEC.EXE UCX V4.0-10H
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V4.0-10H
UCX$INETACP.EXE UCX V4.0-10H
Problem:
Code review of the ECO G fix turned up a very subtle and unlikely
to occur problem in the code that should be corrected for shared
sockets. The problem has to do with the INET_KAST mechanism that
delivers an AST to the process that owns an IRP that needs to
be "resumed". In the unlikely event that two IRP's on the same UCB,
belonging to different processes, need to be "resumed" simultaneously,
then the second of these IRP's will be processed in the context of the
wrong process. The reason that this appears to be so unlikely is that
for this to happen, there would have to be ongoing I/O on at least two
of the queus of one UCB, with the active IRP's belonging to different
processes, and the I/O's would need "resumption" within a very small
window.
Solution:
The solution to this is to add a test in INET_KAST, in INET_MAIN.MAR,
just before we "resume" an IRP. At that point we test that we are
executing in the context of the process that owns the IRP. If we are
then we just proceed. If we are not, we then queue the ACB to the
process that owns the IRP, and we exit from the current AST running
in the context of the wrong process. This will in effect cause us to
re-enter the routine we are currently executing in, INET_KAST, but in
the context of the correct process. We will then continue correctly.
Reference:
Internal code review.
ECO I 1-Apr-1996 Alpha and VAX
Image:
UCX$INETACP.EXE UCX V4.0-10I
Problem:
With the CASE_INSENSITIVE flag enabled, proxies were not being
correctly found in the communication proxy cache.
Solution:
Correct and simplify the sequential proxy lookup routine.
Reference:
Internal report.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 Telnet Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 01-Nov-1995 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V4.0-10A
Problem:
Most terminal settings appear to be lost when TELNET sets up the
interactive session with the remote host.
Solution:
TELNET honors the terminal's settings but sets the
terminal PASTHRU characteristic, which causes the client's terminal
driver to ignore those settings.
The correction involves recoding the client's terminal driver
interface to use the appropriate set of QIOs and library calls
so we do not require the PASTHRU setting.
Reference:
CFS.32095.
Problem:
The terminal type is not properly established.
Solution:
Correct previous changes by passing the pointer of the /TERMINAL_TYPE
qualifier value from MAIN to SESSIONStart(). Sense the pointer and,
if not set, determine the terminal type.
Reference:
CFS.33818.
Problem:
Problems with security break-in for TELNET and RLOGIN
attempts. Until now, we never reported the remote user name
for any login failures. As a result, all users would be locked
out from a given source after a certain number of incorrect
login attempts. In addition, beginning with OpenVMS VAX 6.0, the
intrusion database was changed and as a result, the behavior
for TELNET/RLOGIN was rendered different for the two platforms
(and also depended on the VMS version!).
Solution:
The SHOW INTRUSION display now appears as shown here
for all versions of VMS 6.2 and beyond: nodename:remote-username.
In addition, the remote node address/name/id still reported
in accounting. For any OpenVMS version prior to 6.2, it still behaves
the way it previously did because we do not want to conditionalize
code to behave differently for different OpenVMS versions.
Reference:
CFS.23114,
CFS.23543,
CFS.25308.
ECO C 27-Digital-1995 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V4.0-10C
Problem:
When virtual terminals are disabled, outbound TN devices are still
reported as mounted.
Solution:
Force all outbound devices to be marked non-mounted, regardless
of the virtual terminal setting.
Reference:
CFS.36076.
ECO D 11-Jan-1996 Alpha and VAX
Images:
UCX$TNDRIVER.EXE UCX V4.0-10D
Problem:
Continuing system crashes due to synchronization errors where the
TN UCB is pointing at an old BG UCB.
Solution:
Expand the validity tests introduced in ECO H above and make them
more extensive. In addition, add a new test to validate the
link between a supposed BG UCB and a SOCKET.
In expanding the validity tests, we now use data passed from the
BGDRIVER (in the INETCB). This means that this ECO of the TNDRIVER
requires at least ECO W of the NET facility.
In addition, as a build note, to properly link the TNDRIVER
with the reference to a new INETCB field, it is necessary to temporarily
copy the INET.MLB from the OBJ_PAT directories to the relevant OBJ
directories.
References:
CFS.36056.
ECO E 17-Jan-1996 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V4.0-10E
Problem:
On an OpenVMS Alpha system, the Tn3270 emulator does not load the
customized EBCDIC/DMCS Translation table and fails with the error
message %UCX-E-TRALOAFAI, failed to load translation tables from
SYS$SYSROOT:[SYSLIB]TN3270DEF.TBL.
Solution:
The image header format has changed. A new alias code has been defined
for OpenVMS Alpha and the location of the number of header disk
blocks has been moved. These changes required that a new LOAD_xxx
routine be developed. This routine is named LOAD_AXP.
References:
CFS.33698.
ECO F 6-Feb-1996 Alpha and VAX
Images:
UCX$TNDRIVER.EXE UCX V4.0-10F
Problem:
System crash due to corrupted memory. Specifically the area in a TN UCB
beyond the UCB$T_TEL_TTY_NAME, for a large number of bytes (close to
64KB), may have been trashed.
Solution:
The problem is an ineffective length calculation for a MOVC3
instruction. Apparently we calculate a negative length in some
circumstances, and then we did a compare (that was NOT unsigned) that
permitted a very large effective length to be used. The solution is
to ensure that it is within bounds.
References:
CFS.37455.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 IPC Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 02-Nov-1995 Alpha and VAX
Images:
UCX$IPC_SHR.EXE UCX V4.0-10A
Problem:
Registers R1 and R8 are confused causing SELECT to return incorrect
results. This usually affects those users who expect SS$_NORMAL as
opposed to an odd successful return value, such as SMTP.
Solution:
Correct the register usage.
Reference:
Per V4 review.
ECO B 23-Feb-1996 Alpha and VAX
Images:
UCX$IPC_SHR.EXE UCX V4.0-10B
Problem:
In UCX$CLOSE, we performed an IO$_DEACCESS operation. When sockets are
shared between multiple processes, one process closing
a socket would prevent other processes from continuing to use it.
Solution:
If the reference count on the affected device_socket is greater than 1,
skip the IO$_DEACCESS.
Reference:
Internal report.
ECO C 26-FEB-1996 Alpha and VAX
Image:
UCX$IPC_SHR.EXE UCX V4.0-10C
Problem:
The inet_addr does not resolve hex and octal prefixes correctly.
A Hex address must have a prefix "0x" and an octal address must have
a prefix of "0." The routine should return "-1" for all unresolved
addresses.
Solution:
The routine now checks for "0" as the first character and the
following "x". The routing also checks for trailing characters at
the end.
References:
CFS.37910.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 Management Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 01-Nov-1995 Alpha and VAX
Images:
UCX$UCP.EXE UCX V4.0-10A
Problem:
UCP crashes with the SET CONFIGURATION INTERFACE command when
an invalid broadcast mask is specified.
Solution:
Validate the broadcast mask string.
Reference:
CFS.32916.
ECO B 29-JAN-1996 Alpha and VAX
Images:
PING.EXE UCX V4.0-10B
Problem:
PING always returns $STATUS=1 when used with qualifiers.
Solution:
The finish() was corrected to return UCX$_LOOP[IN]ACT status codes.
Reference:
CFS.37154.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 PWIP Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 4-Dec-1995 Alpha and VAX
Images:
UCX$PWIPACP.EXE UCX V4.0-10A
UCX$PWIPDRIVER.EXE UCX V4.0-10A
Problems:
1. System crash due to pool corruption. We typically see the pattern:
00000000 00000000 xxxxxxxx yyyy0002
where xxxxxxxx is one of the IP addresses of the crashing system,
overwriting valid data in pool.
2. Various crashes in PWIP due to synchronization problems. For
example, one of the problems is due to the arrival of a
downstream write after an upstream disconnect has arrived.
Solutions:
1. The problem was found in routine Build_ADDR_ACK, in module
pwipdriver_ack.c, where we allocate and fill in an MBLK with data.
The last part of the data is an array of sockaddr_in structures,
which are filled in with the IP address(es) of the local system.
When the local system is multi-homed (i.e. it has more than one IP
address), this array has more than one entry. The problem was
found in the calculation for the address of the second and
subsequent entries in this array. The calculation in error used
the following "C" instruction:
sockaddr = sockaddr+sizeof(struct sockaddr_in);
Since sockaddr was declared:
struct sockaddr_in *sockaddr;
the result of the calculation was to add the SQUARE of the length
of an entry to sockaddr, rather than the length of one entry. This
result is because "C" considers each unit to be an entry structure
length. The correct calculation is to replace the offending line
with:
sockaddr = sockaddr + 1;
The crash resulted from the calculation giving an address well beyond
the end of the structure, falling into some other structure in pool.
When pool checking is NOT on, this error may go unnoticed for
long periods of time because it is likely that the corrupted
memory is currently unallocated.
2. One of the sources of the lack of synchronization was that
in several places in the code we were deassigning a BG device
without having first done a QIO IO$_DEACCESS on the device.
For normal UCX devices this is allowed, but for kernel
interface access devices, as are all PWIP BG devices, this
is not allowed. Therefore, the solution was to add explicit
IO$_DEACCESS|IO$M_SHUTDOWN QIO requests prior to deassigning
the BG devices. These changes were placed into several
routines in module PWIPACP_UCX.C.
Another source of the problem was the failure to verify that a
connection was in the midst of being torn down. To solve
this, we introduced two specific verification steps: one
in pwip_rast (in PWIPDRIVER_READ.C), and the other in
pwip_write (in PWIPDRIVER_WRITE.C). Specifically, we
verify in each case whether the PDCB and the BG UCB mutually
point at each other. If not, we conclude that the connection
is in the process of being torn down and we act accordingly.
Reference:
1.CFS.34737.
2.Internal testing.
ECO B 16-Jan-1996 Alpha and VAX
Images:
UCX$PWIPDRIVER.EXE UCX V4.0-10B
Problem:
System crash in EXE_STD$PRIMITIVE_FORK, trying to deliver what is
supposed to be an Attention AST but is actually a pointer to a
PWIPDRIVER receive socket call back routine.
Solution:
This problem is a synchronization problem between PWIP and the
BGDRIVER (or UCX$INTERNET_SERVICES for VAX). At the time of
the crash, we have a SOCKET structure that points to a UCB but the
corresponding UCB does not point back to the SOCKET. This apparently
occurs when we are tearing down a connection in PWIP and some data
comes into the SOCKET. The correction for this problem requires
making changes in NET and in PWIP. In PWIP, we eliminate the
BG_KERNEL_AST_HOOK bit (defined in PWIPDRIVER_UCX.H as equivalent to
UCB$x_BG_SELECT) and define the new BG_PWIP (equivalent to the new
NET bit UCB$x_BG_PWIP) and use it instead of BG_KERNEL_AST_HOOK. In
a small change in routine pwip_handrelease_transport, we no longer
always clear this bit. Now we clear it only if the UCB points to a
SOCKET. This change corresponds to a change in INET_MAIN.MAR (in
INET_DELIVER_ATTNAST) that eliminates the cause of the crash.
We also set the new SOCKBUF$x_PWIP bit in the RCV and XMT socket buffers
in routine pwip_handshake_transport, and we clear them in routine
pwip_handrelease_transport.
Note that for the ECO stream, PWIPDRIVER_UCX.H explicitly defines
SOCKBUF$M_PWIP as 0x20. For the normal stream, this definition will
be picked up from NET.
Reference:
CFS.33756.
ECO C 15-Feb-1996 Alpha and VAX
Images:
UCX$PWIPDRIVER.EXE UCX V4.0-10C
Problem:
System crash in PWIP_HANDRELEASE_TRANSPORT, called from CLOSE_DEV,
with the alleged BG UCB argument not actually a BG UCB.
Solution:
This problem is apparently another PWIP synchronization error.
We were handed a PDCB from upstream and we took the UCB pointer
from it. To alleviate the problem, we will now verify
that the purported UCB is still pointing back to the PDCB
before writing into the UCB.
Reference:
CFS.33756.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 INETDRIVER Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 01-Dec-1995 Alpha and VAX
Images:
UCX$INETDRIVER.EXE UCX V4.0-10A
Problem:
Multiprocessor system crashes with CPUSPINWAIT bugcheck.
Solution:
The I/O completion inserts the IRP into the CPU-specific
I/O completion queue and posts an interrupt to the CPU's
I/O completion routine. This code executed at IPL 0 and,
if the process was rescheduled onto another processor, it
is possible that the INSQUE instruction was attempting to
insert the IRP onto the last processor's I/O completion
queue. This situation could cause corruption in the IRP/ACB because
INSQUE is not interlocked between multiple processors.
The correction elevates IPL to IPL$_SCHED to prevent the
rescheduling of the process during this critical set of
instructions.
Reference:
CFS.34601.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 BIND Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 08-Nov-1995 Alpha and VAX
Images:
All UCX V4.0-10A
Problem:
IPC's select() did not work correctly. This component is
linked against the IPC object library, thereby requiring a
relink to pick up the correction.
Solution:
Relinked.
Reference:
None.
NOTE:
THE ABOVE IMAGE(S) ARE INCLUDED IN THE SECOND PASS UCX V4.0-10 SSB KIT
ECO B 23-Feb-1996 Alpha and VAX
Images:
UCX$NSLOOKUP.EXE UCX V4.0-10B
Problem:
While trying to list all/or WKS records in a domain, using
ls -d and ls -s commands of nslookup resulted in an access violation.
Solution:
The getprotobynumber searches the protocol database until the
matching port number is found (or until EOF is encountered).
Getprotobynumber makes a call to "getprotoent" and
"endprotoent" for opening/closing the protocol database, which
is not supported by the ucx kernel. The call did not check for
the error status but continued to print the broken-out fields
of the protoent structure, which resulted in an access violation. A
work around routine was added to perform the equivalent function.
Reference:
Internal report.
Problem:
Access violation while using "set [no]ignoretc" (ignore truncation errors
and "set vc" (set virtual circuit connection) for larger
response length.
Solution:
Corrected buffer overflow. Added a loop to take care of the truncated
response.
Reference:
Internal report.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 UCX$ACCESS_SHR.EXE Image
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO B 23-Feb-1996 Alpha and VAX
Images:
UCX$ACCESS_SHR.EXE UCX V4.0-10B
Problem:
On the localhost, issuing "UCX SHOW MX localhost"
returned the local record but filtered all the remaining MX
records.
Solution:
An invalid filter routine filtered MX records for the localhost,
affecting SMTP mail.
Reference:
CFS.33206.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 BIND SERVER Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 08-Nov-1995 Alpha and VAX
Images:
ALL UCX V4.0-10A
Problem:
IPC's select() did not work correctly. This component is
linked against the IPC object library, thereby requiring a
relink to pick up the correction.
Solution:
Relinked.
Reference:
None.
NOTE:
THE ABOVE IMAGE(S) ARE INCLUDED IN THE SECOND PASS UCX V4.0-10 SSB KIT
ECO B 14-Feb-1996 Alpha and VAX
Images:
UCX$BIND_SERVER.EXE UCX V4.0-10B
Problem:
DNS name server, when configured as a secondary, would report
that its database (db files) had expired records based on the
preset expiration time, and would therefore not perform "zone
transfer" for updating its records from the primary. "ucx sho
host" would still display the old records in the secondary.
In addition, the log file would display a "repetitive" annoying
message to the dns admin/user indicating the expiration of the
"db files," with every request for "zone transfer" or via
"ucx sho host." The log file would tend to grow over a period
of time.
The workaround available to the customer was to either delete
the backup copies of the database files relevant to the
secondary name server and restart the name server (only to see
it happening again after the expiration time) or to increase
the "serial #" of the SOA record in the primary server. Both
these workarounds called for repeated user intervention.
Solution:
With the expiration of the time (as set in the SOA record),
momentarily lower the "serial number" in the "SOA" record
that has been read via db_load routine to "zero" thus causing
the secondary name server to have a lower serial number
compared to the "serial number" in the SOA record of the
"primary." This situation would force the "zone transfer" to take
place. The correction is in sync with the DNS community
(4.9.3beta 32 BSD).
A validating routine was added in ns_forw.c to display the
error/warning message related to the expired zone (display
just once and remove duplicate messages).
Reference:
CFS.35882.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 BOOTP and TFTP Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 22-Feb-1996 Alpha and VAX
Images:
UCX$BOOTP.EXE UCX V4.0-10A
Problem:
Bootp ignores requests from clients that have no file
in the bootp database.
Solution:
Original code did not handle the case since bootp load file was
required by UCP.
Reference:
Internal report.
Images:
UCX$TFTP.EXE UCX V4.0-10A
Problem:
Tftp loops when client NAKs a DATA packet on an RRQ transfer.
Solution:
Server could not handle incoming NAKs and responded with its own
NAK, then insisted on looping, which sent billions of NAKs.
Reference:
None.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 NTP Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 23-Feb-1996 Alpha and VAX
Images:
UCX$NTPD.EXE UCX V4.0-10A
Problem:
Memory leak caused by not freeing the request packet in respond().
This occurs for client requests (e.g., "ntp " from Ultrix).
Solution:
Free() the request packet before transmitting the response PDU.
References:
CFS.37655.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 NFS Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 29-Nov-1995 Alpha and VAX
Images:
UCX$CFS_SHR.EXE UCX V4.0-10A
Problem:
All files with a .DIR extension are listed without the extension
whether they are directories or not if the TYPELESS_DIR
option is specified for an export entry.
Solution:
Added a check for FCH$V_DIRECTORY to ensure that the file
that ends in .DIR is a directory before removing its type.
Reference:
CFS.35040.
Problem:
With the UCX client, after a file has been renamed when a
new version is created, both files are deleted by mistake.
The new version is deleted because the client attempts to
rename NAME.EXT to NAME.EXT;1 as the first step in creating
the new version, and on a rename the server deletes the
target name if it already exists. Another change is
needed to prevent deleting the old version.
Solution:
Rename routine skips checking for pre-existing target name
if the operation is in VMS-to-VMS mode.
Reference:
CFS.33538
Problem:
Server returns null in the $ADF$ file for an unknown or
missing version limit. It should be %X7FFF. This
confuses the client into purging when it should not.
Solution:
Substitute %X7FFF for null in the VMS_VERLIMIT field of
the RDCB eXtension.
Reference:
CFS.33528.
Problem:
ACLs and device, volume, and file protections are not
supported properly.
Solution:
Sense V6+ of OpenVMS, add support for the volume ORB
and the new protection mask formats, and add support
for ACLs using VM variable allocations.
Reference:
CFS.22201.
ECO B 16-Feb-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE UCX V4.0-10B
Problem:
Renaming directory files on file systems that are
exported with the TYPELESS_DIRECTORIES option require
that the file type .DIR be specified on the from and
to file names.
Solution:
The file type .DIR should be enforced (if provided)
and defaulted to .DIR;1 if absent.
Reference:
CFS.37981
ECO C 20-Feb-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE UCX V4.0-10C
Problem:
When the export option NODATA_CONVERSION is selected for
a file system, STREAMCR files are converted to STREAMLF
format.
Solution:
Change the file system code to return the data in its raw
state when NODATA_CONVERSION is set, and convert from
STREAMCR to STREAMLF otherwise.
Reference:
CFS.38128.
ECO D 24-Mar-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE V4.0-10D
Problem:
When installing ECO A onto a non-V5 system, a protection
error (NOPRIV) is generated when performing the device
protection check.
Solution:
Change the system version check condition from an AND to
an OR in the NEQL check.
Reference:
CFS.38128.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 DNFS Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 22-Dec-1995 Alpha and VAX
Images:
UCX$DNFSACP*.EXE UCX V4.0-10A
Problem:
An uninitialized variable can cause a system crash on a
certain sequence of operations. The crash is consistently
reproducable on VAX with UCX V3.3, but does not happen
with the same sequence of operations on UCX V4.0. The
uninitialized variable is incorrect on both versions, even
though it is symptomless on V4.0.
Solution:
Initialize the variable.
Reference:
CFS.33538.
Problem:
An untranslatable hostname in a proxy record causes a
premature halt to the loading of the proxy database.
Solution:
Test return status from the hostname translation without
loading the status variable.
Reference:
CFS.34570.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 RSH Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 16-Nov-1995 Alpha and VAX
Images:
UCX$RSH.EXE UCX V4.0-10A
Problem:
Output from RSH is not correct both in leading and ending newlines.
The output logfile is missing blank lines. The output is prematurely
truncated (is not being flushed).
Solution:
Sense the device type of SYS$OUTPUT and modify routine write_output()
to generate the proper output. Ensure that the buffer is flushed.
References:
Internal reports.
Problem:
Problem using /SYSERROR in RSH command
Solution:
Alter the order for create/bind/connect sockets
in setup_network_environment(). When diagnostics/error
messages need to be sent to a different device other than
stdout, we need to execute code such that sock_1 gets
created/bound/connected first before we worth with sock_2.
No new code added, just changed the order of execution.
Reference:
CFS.31263.
ECO B 24-Jan-1996 Alpha and VAX
Images:
UCX$RSH.EXE UCX V4.0-10B
Problem:
Command lines not enclosed in quotes are converted to lower case.
Solution:
Parse the command line appropriately.
References:
Internal reports.
Problem:
Fragments of the output stream are lost if it contains NULL
character(s).
Solution:
Corrected.
References:
Internal reports.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 FTP Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 05-Feb-1996 Alpha and VAX
Images:
UCX$FTP.EXE UCX V4.0-10B
Problems:
FTP 'get' from IBM host hangs after file is copied.
FTP defaults to FILE.TXT and cannot use mixed-case.
Using the /INPUT qualifier causes FTP to hang without
executing the commands in the specified file.
UCX$FTP_RAW_BINARY, UCX$FTP_KEEPALIVE, and UCX$FTP_STREAMLF
logicals are not being translated correctly.
Unable to specify port number when using FTP in
ULTRIX mode ( ftp :== $ucx$ftp/ultrix).
/USER and /INPUT not working together.
Put command failing to HP3000.
Wild-card processing not returning RMS errors.
%SYSTEM-F-ACCVIO because of invalid command (type).
Files and directories created are always owned by the
FTP user instead of the owner of the parent directory.
FTP server always expects to work on port 21.
Protection problems when starting up Anonymous
FTP; can't read/write log file once it gets
created.
Inconsistent results when using search lists and/or
rooted logical names with various FTP commands (list,
dir, get, put, cd, pwd, lcd, show default, set default,
set default/local, and show default/local).
Cannot do an APPEND to a file when its filename
contains mixed-case characters.
Inconvenient to set up FTP as a foreign command with /ULTRIX
simply to be able to specify mixed-case filenames without
quotes.
Doing a PUT/GET results in the output file getting created
without the maximum record size (longest record) field being
set.
Cannot set Window Size beyond 32K.
Miscellaneous problems associated with ANONYMOUS access.
Added support for record mode transfer. When record structure
is specified (STRU RECORD), we issue EOR markings in between
records instead of the normal NVT characters for file
structure.
Solutions:
Corrected.
References:
ECO B 04-Mar-1996 Alpha and VAX
Images:
UCX$FTP.EXE UCX V4.0-10B
Problem:
RMS error on doing a 'get', when specifying a window
size of 64K.
Solution:
Fixed.
References:
None.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 FTPD Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 15-Feb-1996 Alpha and VAX
Images:
UCX$FTPC.EXE UCX V4.0-10A
Problems:
FTP 'get' from IBM host hangs after file is copied.
FTP defaults to FILE.TXT and cannot use mixed-case characters.
Using the /INPUT qualifier causes FTP to hang without
executing the commands in the specified file.
UCX$FTP_RAW_BINARY, UCX$FTP_KEEPALIVE, and UCX$FTP_STREAMLF
logicals are not being translated correctly.
Unable to specify port number when using FTP in
ULTRIX mode ( ftp :== $ucx$ftp/ultrix).
/USER and /INPUT not working together.
Put command failing to HP3000.
Wild-card processing not returning RMS errors.
%SYSTEM-F-ACCVIO because of invalid command (type).
Files and directories created are always owned by the
FTP user instead of the owner of the parent directory.
FTP server always expects to work on port 21.
Protection problems when starting up Anonymous
FTP; cannot read/write log file once it gets
created.
Inconsistent results when using search lists and/or
rooted logical names with various FTP commands (list,
dir, get, put, cd, pwd, lcd, show default, set default,
set default/local, and show default/local).
Cannot do an APPEND to a file when its filename
contains mixed-case characters.
Inconvenient to set up FTP as a foreign command with /ULTRIX
simply to be able to specify mixed-case filenames without
quotes.
Doing a PUT/GET results in the output file being created
without the maximum record size (longest record) field being
set.
Cannot set Window Size beyond 32K.
Miscellaneous problems associated with ANONYMOUS access.
Solutions:
Corrected.
References:
CFS.36835, CFS.38094, CFS.37556.
Problem:
UCX$FTPC process hangs in RWAST state.
Solution:
When a system-wide logical is defined ("UCX$FTP_SERVER_DBG"),
Resource Wait mode is disabled, allowing system
services to report any error status in its log file.
Reference:
CFS.29480.
Problem:
When an invalid username is specified, FTP issues an
'Invalid username' message without prompting for
a password. If an account is specified that has been
set with a secondary password, this message is also
passed on.
Solution:
Security corrections in 'user()' and 'pass()' so that no useful
information is given regarding a rejected login (such as
XXX is unknown' or 'Usernames with two passwords
not allowed FTP access.'
References:
None.
Problem:
STRU RECORD (record structure) does not appear to
work.
Solution:
Issue EOR markings in between records instead of the
normal NVT characters for file structure.
References:
CFS.29927, CFS.33514.
Problem:
The 'cd' command is restricted to using brackets as
opposed to '..', '<>' or no brackets at all.
Solution:
Fixed.
References:
CFS.38258.
ECO B 04-Mar-1996 Alpha and VAX
Images:
UCX$FTPC.EXE UCX V4.0-10B
UCX$FTPD.EXE UCX V4.0-10B
Problem:
RMS error on doing a 'get', when specifying a window
size of 64K.
Solution:
Fixed.
References:
None.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 LPD Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 15-Feb-1996 Alpha and VAX
Images:
UCX$LPD_SHR.EXE UCX V4.0-10B
UCX$LPD_SMB.EXE UCX V4.0-10B
UCX$LPD_RCV.EXE UCX V4.0-10B
UCX$LPQ.EXE UCX V4.0-10B
UCX$LPRM.EXE UCX V4.0-10B
UCX$LPRSETUP.EXE UCX V4.0-10B
UCX$TELNETSYM.EXE UCX V4.0-10B
Problem:
When running on a system with Word Perfect queues that have not been
de-integrated, symbiont has problems.
Solution:
Spot the problem and signal in the log and on the OPCOM that Word
Perfect queues must be de-integrated for UCX LPD to run.
Reference:
CFS.33189
Problem:
With inbound LPD jobs, the /DELETE that the LPD symbiont uses when it
submits the job to the target print queue causes problems if that print
queue expects the file not to be printed /DELETE. For example, one
customer had a custom symbiont running in the target queue that passed
the file on to another queue.
Solution:
Add new "nd" flag field to printcap. If "nd" field is present for a
printcap entry, UCX$LPD_QUEUE will submit the job without the
/DELETE qualifier. The "nd" field is a boolean field (like the "pa"
field) in that it has no value. If you want inbound jobs for a
particular printcap entry to be submitted as /NODELETE, use the "nd"
field as in this example:
BOGUS_P_ND|bogus_p_nd:\
:lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND.LOG:\
:lp=SOME_PRINTER:\
:nd:\
:sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND:
If you want inbound jobs for a particular printcap entry to be submitted
the "normal" way (ie. /DELETE), there should be no "nd" field in the
printcap entry. For example:
BOGUS_P_ND|bogus_p_nd:\
:lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND.LOG:\
:lp=SOME_PRINTER:\
:sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND:
LPRSETUP will create by default a printcap entry with no "nd" field.
(The default is /DELETE.)
Reference:
None.
Problem:
No support for inbound LPD jobs with 'v' (Raster file) control card.
Solution:
Handle it like a 'x' ie. binary file.
Reference:
CFS.35679.
Problem:
One PC LPD client implementation "probes" the LPD server when the PC
user configures a LPD client printer to validate the remote printer.
When the printer is configured, the LPD client connects to the LPD
server and issues a "print a job" command to the server for the LPD
queue.
If the server replies successfully, the LPD client sends an "abort job"
command and waits for the ACK before releasing the link. The UCX LPD
server was not ACKing the "abort job" command; it was simply
disconnecting the link. This was causing the PC LPD client to fail the
LPD configuration for the user.
Solution:
Handle the abort job like a NOOP. ACK it but keep link up and wait for
other side to disconnect or send another command.
Reference:
CFS.36109.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 SMTP Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 08-Nov-1995 Alpha and VAX
Images:
UCX$SMTP_MAILSHR.EXE UCX V4.0-10A
UCX$SMTP_RECEIVER.EXE UCX V4.0-10A
UCX$SMTP_SYMBIONT.EXE UCX V4.0-10A
UCX$SMTP_PARSESHR_TV.EXE UCX V4.0-10A
UCX$UUENCODE.EXE UCX V4.0-10A
UCX$UUDECODE.EXE UCX V4.0-10A
Problem:
IPC's select() did not work correctly. This component is
linked against the IPC object library thereby requiring a
relink to pick up the correction.
Solution:
Relink.
Reference:
Internal reports.
*** NOTE: THE ABOVE IMAGE(S) ARE INCLUDED IN THE SECOND PASS UCX V4.0-10 SSB KIT ***
ECO B 14-Feb-1996 Alpha and VAX
Images:
UCX$SMTP_MAILSHR.EXE UCX V4.0-10B
UCX$SMTP_RECEIVER.EXE UCX V4.0-10B
UCX$SMTP_SYMBIONT.EXE UCX V4.0-10B
UCX$SMTP_PARSESHR_TV.EXE UCX V4.0-10B
UCX$UUENCODE.EXE UCX V4.0-10B
UCX$UUDECODE.EXE UCX V4.0-10B
Problem:
ANAL MAIL would not find the files for any of the queue entries and
would delete the queue entries one by one. Later, on the pass where it
is looking for orphaned control files, it would find all the files that
belonged to the queue entries that were just deleted and submit them. If
it had not deleted the jobs, it wouldn't have had to requeue them.
The problem happened only where user disks were defined as
concealed logical names.
Solution:
Corrected.
Reference:
CFS.34311, CFS.33772.
Problem:
Garbage in one particular message in the log.
Solution:
Corrected.
Reference:
CFS.34311, CFS.33772.
Problem:
ANAL MAIL/DELETE would select some files to delete and some
not to delete, regardless of the value of the BEFORE= time.
In some cases, files created almost at the same time were processed
while one was deleted and another was not deleted. The creation
dates on the files were both well after the time in the /BEFORE.
Solution:
Corrected the OpenVMS date comparison routine.
Reference:
CFS.34311, CFS.33772.
Problem:
Sometimes ANAL MAIL would submit a new entry for every entry that was
already in the queue resulting in two entries for each file.
Solution:
Clean up GETQUIW system service context at beginning of each ANAL MAIL
command with call to GETQUIW with a CANCEL_OPERATION function code.
Reference:
none
Problem:
When ANAL MAIL runs on a system with much SMTP activity, it often
incorrectly performs files/queue entries created when the ANAL MAIL
command is processing. Sometimes it would mistakenly think that it
had an orphaned control file (for example, a control file with no
matching queue entry) and would submit the control file to the queue
resulting in the same control file submitted to the queue twice.
Other times it would think it found a queue entry with no
corresponding control file and would delete the queue entry when in
fact a corresponding control file actually existed, resulting in
an orphaned control file.
Solution:
Corrected.
Reference:
CFS.34311.
Problem:
When ANAL MAIL deletes a control file, the corresponding _TEXT file (if
any) is not deleted.
Solution:
Corrected.
Reference:
CFS.34311.
Problem:
If a file with the extension .UCX_nodename (where "nodename" is the
system's SCSNODENAME) appears in a users mail directory, ANAL MAIL
takes it be a control file even if it is not.
Solution:
Make a search string that we use trap for %%%%%%%%%%%%%%_*.UCX_nodename
rather than just *.UCX_nodename.
Reference:
CFS.34311.
Problem:
Double spacing of lines in SMTP logs.
Solution:
Corrected.
Reference:
None
Problem:
When running on a system with Word Perfect queues that have not been
de-integrated, symbiont has problems.
Solution:
Spot the problem and signal in the log and on the OPCOM that Word
Perfect queues must be de-integrated for UCX SMTP to run.
Reference:
CFS.34311.
Problem:
When bouncing a mail because a mail loop is detected (for example,
maximum hop count is exceeded), the symbiont leaves the control file
for the mail being bounced as a stray.
Solution:
Corrected.
Reference:
CFS.32922.
Problem:
A bounced mail message coming into a UCX SMTP system (for example,
a local user sends mail to a remote system that cannot deliver it
and bounces it back) is sometimes undeliverable because the SMTP
symbiont thinks it has too many RFC Received: headers. The symbiont
signals that the maximum number of hops is exceeded. Routine in
receiver to parse out headers of the incoming mail sometimes mistakes
the Received: RFC headers from the "Text of unsent message" section of
the incoming bounced mail for RFC headers of the bounced mail itself.
The problem occurred if the sum of the headers for the
incoming bounced mail and those that appeared in the text of the bounced
mail exceeded the maximum hop count.
Solution:
Corrected the receiver where it can sometimes miss the blank line at the
end of the RFC headers of the mail and start looking into the text of
the mail for Received headers.
Reference:
CFS.32922.
Problem:
Diagnosing receiver and symbiont problems that occur periodically but
are not reproducable at will requires that we turn on full diagnostics
for the component being looked at (receiver or symbiont). This causes
the log file(s) to grow large and slows down everything with all the
extra time spent writing to the log files.
Solution:
The new "snapshot" logging capability for the receiver and symbiont
allows you to run with full diagnostics turned on but only write the
diagnostics to the log file if an error is signaled. This saves disk
space and allows the receiver and/or symbiont to run at a normal speed.
As each line of diagnostic text is generated, it is saved in an internal
"snapshot" buffer of a size specified by a snapshot logical rather than
to the disk. The buffer is "circular" in that once it fills up, new
lines of text simply start to overwrite the old data already there. This
provides an up-to-date snapshot of the last lines of diagnostic
text.
There are two logicals for turning this feature on. One for the
receiver and one for the symbiont: UCX$SMTP_SYMB_SNAPSHOT_BLOCKS and
UCX$SMTP_RECV_SNAPSHOT_BLOCKS. The value of these logicals is the size
of the snapshot buffer in OpenVMS blocks (1 block being 512 bytes).
When turning this feature on, you are still required to define the
other SMTP diagnostic logicals that tell UCX SMTP what types of
logging you want. (For example, for the symbiont, you still need
to define UCX$SMTP_LOG_LEVEL to 5.) Two examples of setting up
symbiont and receiver snapshot logicals follow.
This example sets log level to 5 and turns on snapshot logging for
the SMTP symbiont with a snapshot buffer of 200 blocks.
$ DEFINE/SYSTEM UCX$SMTP_LOG_LEVEL 5
$ DEFINE/SYSTEM UCX$SMTP_SYMB_SNAPSHOT_BLOCKS 200
This example sets all the receiver diagnostics on and turns on
snapshot logging for the receiver with a snapshot buffer of 200
blocks:
$ DEFINE/SYSTEM UCX$SMTP_RECV_DEBUG 1
$ DEFINE/SYSTEM UCX$SMTP_RECV_TRACE 1
$ DEFINE/SYSTEM UCX$SMTP_RECV_SNAPSHOT_BLOCKS 200
Reference:
None
Problem:
If bounced mail comes into the system and cannot be delivered, it is
left as a stray control file.
Solution:
If bounced mail comes into the system and cannot be delivered, it is
sent to the local postmaster account - UCX_SMTP.
Reference:
CFS.32922.
Problem:
Bounced mail generated by the UCX SMTP symbiont does not have a To: RFC
header.
Solution:
Corrected.
Reference:
None
Problem:
If the symbiont cannot deliver a mail and cannot bounce it, it
leaves the bounced mail control file as a stray control file.
Solution:
If we can neither deliver nor bounce a mail, then deliver the mail to
the local postmaster account - UCX_SMTP. Only if we cannot deliver
the mail to the local postmaster account do we leave a stray control
file.
Reference:
CFS.32922.
Problem:
When bouncing mail because we have not been able to send it and have
requeued it repeatedly and can no longer requeue it because the SMTP
configuration maximum interval for the mail has expired, the symbiont
leaves the control file for the mail being bounced as a stray.
Solution:
Corrected.
Reference:
CFS.32922.
Problem:
If the symbiont encountered a network error sending an outbound mail
after it sent the MAIL FROM: command but before it sent the RCPT TO:
command, all remaining outbound mail would cause an access violation
in the symbiont and would fail.
Solution:
Corrected.
Reference:
CFS.32922.
Problem:
The UCX SMTP queue watcher program, UCX$RESTART_SMTPQ.COM, does not
support multiple execution queue setups.
Solution:
UCX$RESTART_SMTPQ.COM now supports multiple execution queue setups up to
nine execution queues (IE. UCX SET CONFIG /QUEUE=9.).
Reference:
CFS.34311.
Problem:
Symbiont code has mechanisms to find memory leaks but no mechanism to
find event flag leaks.
Solution:
Symbiont has diagnostics to dump the number of spare event flags (as
returned by LIB$GET_EF) at certain key points in the code to help find
event flag leaks. To turn them on, enter the following:
$ DEFINE/SYSTEM UCX$SMTP_LOG_EFS 1
$ UCX STOP MAIL
$ UCX START MAIL
Note: Numerous customers were reporting an insufficient event flags
(INSEF) error being signaled in their symbiont logs after which no
inbound mail could be delivered. This was the reason for creating the
new event flag leak diagnostics. The problem was caused
because the users on these systems had their mail forwarded to
PCSA% addresses and there is an event flag leak in the PCSA
MAIL$PROTOCOL code. The problem is *NOT* a UCX problem. The problem
has been reported to the engineering team responsible for the
PCSA MAIL$PROTOCOL code.
Problem:
Users with 8-bit ASCII characters in their username see the characters
changed by UCX SMTP before they get sent out to their final destination.
The UCX SMTP code sets the high order bit to 0 even if the SMTP CONFIG
/OPTION=EIGHT is set.
Solution:
UCX SMTP will not truncate 8-bit ASCII characters in the personal
name if the SMTP CONFIG/OPTION=EIGHT is set.
Reference:
Internal reports.
Problem:
UCX SMTP does not work correctly on multi-homed hosts.
Solution:
Corrected. Bind to INADDR_ANY rather than to a particular one of the
local addresses we get in to hostent structure for our local host.
Reference:
Numerous reports of problems.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 RCP Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 19-Feb-1996 Alpha and VAX
Images:
UCX$RCP.EXE UCX V4.0-10A
Problem:
Occasionally (or consistently from some hosts), RCP would
copy files incompletely. In most of these instances, one
would see a message ..NONAME-E-MESSAGE ...
Solution:
Perform 'blocked' reads on the server side so that the receive
does not complete prematurely. Also, enhance performance by
increasing the buffer size from 512 to 16384. As a result, the
speed of copy increased greatly.
References:
CFS.37432.
ECO B 26-Feb-1996 Alpha and VAX
Images:
UCX$RCP.EXE UCX V4.0-10B
Problem:
When a remote user runs out of diskquota, invocation of RCP
to copy a file to that remote host caused the system to hang or
give ambigious messages.
Solution:
Delay sending 'ack' until server can create/open
file for write operations. In cases where failures occur because of
disk quota limitations, unusual errors can occur, especially
when a request came from non-UCX clients. If a fatal error occurs
under those conditions, exit without continuing with execution.
Reference:
CFS.37432.
ECO C 29-Feb-1996 Alpha and VAX
Images:
UCX$RCP.EXE UCX V4.0-10C
Problem:
Some more instances when a remote user ran out of diskquota
and the RCP connection was not terminated.
Solution:
When there's enough disk quota to open/create the file but
not enough quota to complete all the writes, we must exit
after sending an error message.
Reference:
CFS.37432.
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 RPC Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A Alpha and VAX
Images:
UCX$RPCXDR_SHR.EXE UCX V4.0-10A
Libraries:
UCX$RPCXDR.OLB
Problem:
Routine xdr_double_T() [IEEE double precision floating] inadvertently
uses a call to XDR_GETLONG() and XDR_PUTLONG() when fetching the double
floating value. It should be using two XDR_GETLONG()s.
Solution:
Change the code accordingly.
References:
CFS.34466.
Problem:
DigitalC V5.2 includes support for the FD_SET macros.
Solution:
Change rpc/types.h to sense and set the appropriate symbol
to prevent the conflict.
References:
ECO B 28-Dec-1995 Alpha and VAX
Images:
UCX$RPCXDR_SHR.EXE UCX V4.0-10B
Libraries:
UCX$RPCXDR.OLB
Problem:
Direct and indirect calls to pmap_unset() fail to remove
registrations.
Solution:
The call to get the process ID failed to initialize the
PID to zero. The result was an invalid PID in the call
to the portmapper, thereby failing to remove the entry.
Reference:
CFS.36309.
Problem:
G Floating is not properly supported.
Solution:
Corrected the invalid exponent bias defined for the G_Floating
data type.
Reference:
CFS.35946.
ECO C 19-Feb-1996 Alpha and VAX
Images:
UCX$RPCXDR_SHR.EXE UCX V4.0-10C
Libraries:
none.
Problem:
More contemporary versions of the DECC header library include
the typedef of u_int while older versions do not. This causes
compilation problems with DECC versions after V5.0.
Solution:
Work with the DECC header file by sensing and defining
__U_INT and u_int in rpc/types.h as appropriate.
References:
CFS.38074.
INSTALLATION NOTES:
In order for the corrections in this kit to take effect, the system
must be rebooted. If the system is a member of a VMScluster, the
entire cluster should be rebooted.
REFERENCES:
IBM is a registered trademark of International Business Machines.
WordPerfect is a trademark of WordPerfect Corp.
This patch can be found at any of these sites:
Colorado Site
Georgia Site
Files on this server are as follows:
dec-axpvms-ucxeco_a_40_1.README
dec-axpvms-ucxeco_a_40_1-v0100--4.CHKSUM
dec-axpvms-ucxeco_a_40_1-v0100--4.CVRLET_TXT
dec-axpvms-ucxeco_a_40_1-v0100--4.pcsi-dcx_axpexe
dec-axpvms-ucxeco_a_40_1.cvrlet_txt
|