📄 relnotes.txt
字号:
. The ability to handle out of order TCP Packets is now supported. If a
packet arrives that is not the next one expected but is within the
current window, that packet will now be buffered until all previous
packets have arrived. Then all buffered packets can be acknowledged at
once. To facilitate this two routines were added to the file TCP.C.
They are 'tcp_ooo_packet' and 'check_ooo_list'. (ooo = out of order).
. The capability to do window probes has been added. In the past if the
foreign host advertised a windowsize of 0, then we would wait for the
foreign host to open up his window again. However, if the foreign host
misbehaved or the packet that updated the windowsize was lost then the
task could suspend forever. Now we send a window probe periodically to
make sure that the foreign host is still alive. The function
'windowprobe' was added to the file USER.C.
. The Nagle Algorithm has been implemented. The purpose of the Nagle
Algorithm is to avoid the SWS on the sender's side by coalescing short
TCP segments. Changes to 'netwrite' in USER.C were required.
. The macro SWAPPING is now used to specify whether byte swapping should
be performed. SWAPPING, if needed, is defined in COMPILER.H.
. In the config structure the defdom is now defined to be an array of 32
bytes instead of a "char *".
The following files have been updated for this release:
ARP.C BOOTP.C CONFILE.C DLL.C
EQUEUE.C IP.C NET.C NEW_IP.C
PROTINIT.C SOCKETS.C TCP.C TCPVARS.C
TCP_ERRS.C TIMER.C TOOLS.C UDP.C
USER.C UTIL.C CONFIG.H DATA.H
EXTERNS.H HOSTFORM.H NETEVENT.H PROTOCOL.H
SOCKDEFS.H SOCKETD.H TCP.H TCPDEFS.H
The following files have been created for this release:
HOSTS.C
The following files have been deleted and are no longer used:
No files were deleted.
*******************************************************************************
Version 2.0.G2.b JULY 26, 1995
*******************************************************************************
The following items were changed or corrected by this release
. In hostform.h the structure machinfo is defined. The fields sname and
hname were changed from char pointers to an array of 32 chars. Also the
field hw was removed from the definition of the config structure.
. Added code to IP.C to process fragmented packets. Note that this code
has not yet been tested.
. Changed the way a packet destined for a listening TCP port is processed.
Made changes to both tcpinterpret and tcpdo. This was to fix a bug that
caused ports to be lost when a non-SYN packet arrived for a listening
port. Also the function checkListeners was added at this time.
. Removed the function netpush from USER.C
. Changed netclose in USER.C. If the state of the connection was
SCWAIT and there was data in the in window the task would suspend
forever. Now the data is deallocated, and the connection closed
immediately.
. Changed the definition of CONNWAITTIME config.h from
#define CONNWAITTIME 20 to
#define CONNWAITTIME (20 * TICKSPERSEC)
This change was made because the wait time was meant to be in seconds
not in timer ticks.
. Changed the function NU_Recv_From in sockets.c so that the UDP
port is checked for data before suspension occurs. In the past the
calling task would be suspended regardless of whether or not there was
data waiting.
. Changed the function netwrite() so that upon returning from the call
to windowprobe() the correct number of bytes left to send is calculated.
Before the number of bytes sent by the window probe was used. This
value was usually 1 or 0.
. Changed the function netsend so that ODH can be used to send packets
of less than max size.
. Added logic that checks for a task suspended in the NU_Accept service
call when a new connection is established. If there is a task
waiting for this new connection to be established then that task is
resumed. Before an attempt to resume a task was always made, which
could cause problems if the task was suspended somewhere other than
the NU_Accept service call.
The following files have been updated for this release:
ARP.C BOOTP.C BOOTP.H CONFILE.C
DOMAIN EQUEUE.C IP.C NET.C
PROTINIT.C SOCKETS.C STDCS.C TCP.C
TCPVARS.C TOOLS.C UDP.C USER.C
UTIL.C BOOTP.H CONFIG.H DATA.H
DOMAIN.H EXTERNS.H HOSTFORM.H PROTOCOL.H
SOCKETD.H TCP_ERRS.H
The following files have been created for this release:
IP.H TARGET.H
The following files have been deleted and are no longer used:
COMPILER.H PCDEFS.H
*******************************************************************************
Version 2.1 JANUARY 25, 1996
*******************************************************************************
With this version begins a more conventional version numbering system. The
extension of Gx.x has been dropped.
The following items were changed or corrected by this release
. The function NET_Send was added to NET.C. This was done to eliminate
duplicate code that appeared in the files TCP.C, UDP.C, and ARP.C.
Obviously the duplicate code was removed from those three files. The
function arp_send_pkt in arp.c was eliminated completely. The affected
function in UDP.C was netusend(). The affected functions in TCP.C are
tcpresetfin(), tcp_sendack(), and tcpsend().
. The function arpinit() was renamed ARP_Init() and moved from the file
PROTINIT.C to the file ARP.C. This is part of the effort to bring
Nucleus NET into line with the standards used to code the kernels.
. tcpinterpret has been renamed TCP_Interpret.
. In BOOTP.C the variable next was made a static local variable rather than
a static global variable. It is now declared in the function rand().
. Added a timeout to the TCP close procesing. It was possible to get
suspended forever while trying to close a connection if the foreign host
crashed during the close or simply didn't handle the close properly. Now
a timeout feature has been added so that the local host will only wait so
long before giving up and aborting the connection. This required changes
to EQUEUE.C and netclose() in USER.C.
. Modified NU_Listen(). Combined 3 calls to NU_Allocate_Memory into 1.
Then the allocated block of memory is broken up into three chunks.
. Added code to tcp_retransmit to abort a TCP connection after a defined
number of retransmits occur. In config.h is where the number of
retransmits are defined. When the maximum number of retransmits is
reached a RST is sent to the foreign host.
. Added code to cleanup the various packet queues when a RST is received.
Otherwise buffers could get lost.
. netclose in USER.C was modified to clear all ACK events when the
connection closes. Otherwise an ACK event could be processed after a
connection has completely closed. This resulted in an ACK packet being
sent after a connection had closed.
. The NU_Accept service call has been changed so that the third parameter
is now of type "struct addr_struct *" rather than of type
"struct addr_struct **". As a result the application is now responsible
for allocating memory for the address structure. This was done because
when the memory was allocated within the service call it was never being
deallocated. So after repeated connections memory could become
exhausted.
. Function makeport() in PROTINIT.C has been changed. In the past memory
was allocated for a port entry before the check was made to see if an
entry was available. If an entry was not available the memory was never
deallocated. Now the check is made before the memory allocation.
. The function cacheupdate in ARP.C was modified. Before if the entry that
was being searched for was not the first in the list then the oldest
entry was used for the update, even if the entry being searched for
existed somewhere after the first. This problem has been fixed.
. It was possible for a connection to be accepted before it was completely
established. Changes were made to NU_SearchTaskList and to
NU_UpdateTaskTable to fix this problem.
. Padding was added to some structures and the ordering of fields within
structures was changed to prevent "unaligned access" errors on processors
that require word alignment.
. The code to select on multiple sockets was removed form sockets.c and
placed in a new file called SELECT.C. Also, the ability to select on
UDP sockets was added. In the past, selecting only on TCP sockets was
supported.
. The ability to retransmit TCP packets containing SYN and FIN flags was
added. Packets conatining those flags are treated as data packets.
. A TCP connection will now be aborted after a number of retransmits. In
the past a Nucleus NET host would retransmit a packet forever.
. The function checkfin no longer gives up the semaphore.
. UTIL.C was cleaned up. Some legacy code was removed.
. A bug in the function NU_Get_Host_ID was fixed. There was an
un-initialized pointer that caused 4 bytes of memory to be overwritten.
The following files have been updated for this release:
ARP.C BOOTP.C CONFIG.H CONFILE.C
DLL.C EQUEUE.C EXTERNS.H HOSTFORM.H
IP.C IP.H NET.C NETEVENT.H
NEW_IP.C PROTINIT.C PROTOCOL.H SCKPROTO.H
SOCKDEFS.H SOCKETD.H SOCKETS.C TCP.C
TCPVARS.C TCP_ERRS.C TCP_ERRS.H TIMER.C
TOOLS.C UDP.C USER.C UTIL.C
The following files have been created for this release:
ODH.C SELECT.C
The following files have been deleted and are no longer used:
PRAGMA.H
*******************************************************************************
Version 2.2 May 10, 1996
*******************************************************************************
The following items were changed or corrected by this release
. The way an ODH packet is deallocated was modified. On machines that
require word alignment, the old method would fail.
. The IP fragmentation code has been removed by bracketing it with macroes.
. When a RST was received while in the SYNR state the port_entry and
stat_entry fields for that TaskEntry were not cleared. So that TaskEntry
was never deallocated. That has been fixed.
. In ipinterpret the check for a broadcast address was fixed.
. In udpinterpret the check to see if the destination port # in the packet
matches a port on the local host was modified. Now a check is made to
insure the current entry is not a NULL pointer before a check for the
actual port number is made.
. The verification of the UDP checksum was moved to the top of
udpinterpret, ahead of the other checks.
. A memory leak in the NU_Listen service has been fixed. Whenever
NU_Listen is called memory is allocated for a Task_Entry structure. This
memory was never being freed when the socket was closed. This has been
fixed. See SPR0094 for details.
. The ability to broadcast packets from the application level was added.
As part of these modifications two new service calls NU_Setsockopt and
NU_Getsockopt were added.
. A bug in the transmission of a ICMP ping response was fixed.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -