TCPIP Updates – NET+OS 6.1

 

 

 

Last Updated: 11/22/06         Fix Count: 8

 

 

Title

Problem creating more than 61 sockets

 

Case:  1220906

 

Date Fixed: 11/22/06

 

Description

An application that creates approximately 61 - 64 threads that have all called accept to wait for a connection from a client can run into a problem where the system will freeze. This will only be seen when all the threads are waiting simultaneously for a connections from clients.

 

The code that implements accept was calling into an internal NET+OS TCPIP stack-related function that facilitates putting threads to sleep while waiting for system action. When the structure for holding information about these sleeping threads completely filled and returned an error condition code, the accept function was not checking the contents of this returned error code. This was leaving the accept code vulnerable to trying to wakeup a thread for which the sleep function's structure had not information. This was causing a freeze condition.

 

Solution

The accept function now checks the status returned by the sleep function. If this return code indicates an error, accept will return -1 as the socket that would have been created by the call to accept, indicating that the call to accept failed.

 

In addition, the number of events that the sleep function can wait on has been increased from 64 to 128, placing it on par with the number of sockets available within NET+OS.

 

An application can now create many more such accept-waiting threads than before. In addition, should the limit be reached, instead of freezing, the accept function will now gracefully return a negative status code to the application.

 

 

Title

Low Memory network conditions are slow to recover
 

Case: 16220

 

Date fixed: 09/22/06

 

Description

During extreme network activity, TCPIP stack enters a low memory

condition, causing dropped packets, and causing long delays in networking

applications.  This is most apparent in wireless applications.

 

Solution

Corrected defects in the TCPIP stack when entering low memory conditions.

 

 

Title

Sockets API bind failures

 

Case:  16346

 

Date Fixed: 06/16/06

 

Description

bind() fails when binding to a specific IP address (versus the more common

INADDR_ANY).

 

Solution

Corrected bind processing to handle specific IP addresses.

 

 

Title

TCP MSL now configurable

 

Case:  1202852

 

Date Fixed:  10/04/05

 

Description

Current implementation sets default to 120 seconds.

 

Solution

Made this configurable.  Now time that sockets must be in wait state after use is adjustable by user.

 

 

Title

IGMPv3 Packet Processing Failures

 

Case:  15849

 

Date Fixed:  07/11/05

 

Description

Multicasts across routers are failing because IGMPv3 packets are being

ignored.

 

Solution

IGMPv3 packet size is now ignored (IGMPv3 packets are longer than v2) and

the packet is treated like a v2 packet.

 

 

Title

TCP/ICMP blind connection reset attack

 

Case:  16474

 

Date Fixed:  06/28/05

 

Description

TCP connections are reset under the blind ICMP destination unreachable

attack.  Reproducible with Retina Network Security Scanner from eEye

Digital Security.

 

Solution

Added sequence number check into stack as suggested in

raft-gont-tcpm-icmp-attacks-03.txt.

 

 

Title

Multicast Issue when gateway is 0.0.0.0

 

Case:  15362

 

Date Fixed: 03/02/05

 

Description

Multicasts will not be transmitted if the gateway IP address is 0.0.0.0.

 

Solution

Added a routing call in aceCallbacks.c.

 

 

Title

Address conflict detection added

 

Case: internal

 

Date Fixed: 10/13/04

 

Description

Current implementation does not detect IP address conflicts.

 

Solution

Added feature to detect and report IP address conflicts.  See NADetectAddressConflict in the ApiReference.

 

 

Files:   netos\h\tcpip\ace.h

netos\h\tcpip\naip_global.h

netos\h\tcpip\naifconfig.h

netos\src\bsp\common\naifconfig.c

netos\h\tcpip\fpublic.h

netos\h\tcpip\config.h

netos\h\sockapi.h

netos\lib\32b\libtcpip.a (GNU)
            netos\lib\32b\tcpip.a (GHS)

netos\src\bsp\common\naip_global.c

            netos\src\bsp\platforms\ns9750_a\aceCallbacks.c

            netos\src\bsp\platforms\ns9750_a\naaddrconflict.h

            netos\src\bsp\platforms\ns9750_a\naaddrconflict.c

netos\src\posix\posix_thread.c

           

Special Instructions

 

 

Patch Link:  TCPIPUpdates_61

 

Dependencies

This patch also requires the installation of the following patch(es):

 

BSPUpdates_61

 

ApiReference_61