Patch-ID# 101825-03
Keywords: TLI alignment memory system crashes trap
Synopsis: SunOS 4.1.3_U1: TLI Patch
Date: Mar/29/96

Solaris Release: 1.1.1A

SunOS Release: 4.1.3_U1A

Unbundled Product: 

Unbundled Release: 

Relevant Architectures: sparc

BugId's fixed with this patch: 1091548 1148146 1148365 1111395 1208046

Changes incorporated in this version: 1208046

Patches accumulated and obsoleted by this patch: 

Patches which conflict with this patch: 

Patches required with this patch: 

Obsoleted by: 

Files included with this patch: 

	README
	tcp_tli.o

Problem Description: 

1208046: 
Patch 101825-02 crashes system with memory alignment error. 
The fix in 101825-02 for bug#1148146 assumed that b_rptr of a 
mblk is always word aligned when casting for T_primitives type. 
The new fix checks for M_PROTO/M_PCPROTO messages before 
doing the type-casting.

1091548:
When an interative server (the host calling t_listen() with the same
descriptor for each new connection) issues a t_sndis() on an established
TCP connection, the connection is broken down, and the listening endpoint
is expected to be reuseable by a subsequent t_listen() using the same file
descriptor. Instead, t_listen() ignores subsequent connection requests.

1148146:
while a TLI client is doing a t_getstate, the process will
submit a job to TLI subsystem and sleeps in strdoioctl. This job
is queued on the TLI service queue. If at this time, a disconnect request
comes from the server, this t_getstate request will be flushed away from the jobqueue. Hence, the sleeping process will never be awakened.

1148365:
Under SunOS, an mbuf leaking problem exists when running a TLI
application. This causes the system to hang after a period of time.

1111395:
Applications hang if printf() instead of write() is used via listen/nlsadmin.
The problem is TLI subsystem does not handle certain IOCTL calls.
It simply ignores them without generating a reply.

Patch Installation Instructions: 

1) As root, make a backup of the original tcp_tli.o:

   # mv /usr/sys/`arch -k`/OBJ/tcp_tli.o /usr/sys/`arch -k`/OBJ/tcp_tli.o.FCS

2) Copy the appropriate tcp_tli.o to the OBJ directory:

   # cp `arch -k`/tcp_tli.o /usr/sys/`arch -k`/OBJ/tcp_tli.o

3) Config, make, and install a new kernel.  Reboot the system.
   Please refer to the System and Networking Administration manual
   for details on building and installing a new kernel.
