Release 6.1.9

This commit is contained in:
Yuxin Zhou 2021-10-13 06:48:36 +00:00
parent ddfb7fc423
commit acbab7219b
79 changed files with 420 additions and 390 deletions

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_auto_ip.h PORTABLE C */ /* nx_auto_ip.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -44,6 +44,9 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -60,6 +63,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Define the AutoIP ID that is used to mark the AutoIP structure as created. */ /* Define the AutoIP ID that is used to mark the AutoIP structure as created. */

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_dhcp_server.h PORTABLE C */ /* nx_dhcp_server.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -49,6 +49,9 @@
/* improved buffer length */ /* improved buffer length */
/* verification, */ /* verification, */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -65,6 +68,7 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Define the DHCP Server ID that is used to mark the DHCP Server structure as created. */ /* Define the DHCP Server ID that is used to mark the DHCP Server structure as created. */

View File

@ -9101,7 +9101,7 @@ ALIGN_TYPE *head;
/* FUNCTION RELEASE */ /* FUNCTION RELEASE */
/* */ /* */
/* _nx_dns_cache_delete_rr_string PORTABLE C */ /* _nx_dns_cache_delete_rr_string PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -9130,13 +9130,18 @@ ALIGN_TYPE *head;
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), */
/* fixed compiler warnings, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
static UINT _nx_dns_cache_delete_rr_string(NX_DNS *dns_ptr, VOID *cache_ptr, UINT cache_size, NX_DNS_RR *record_ptr) static UINT _nx_dns_cache_delete_rr_string(NX_DNS *dns_ptr, VOID *cache_ptr, UINT cache_size, NX_DNS_RR *record_ptr)
{ {
#ifdef NX_DNS_ENABLE_EXTENDED_RR_TYPES
UINT string_len; UINT string_len;
UINT size; UINT size;
#endif /* NX_DNS_ENABLE_EXTENDED_RR_TYPES */
/* Check the cache. */ /* Check the cache. */

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_ftp_client.h PORTABLE C */ /* nx_ftp_client.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -45,6 +45,9 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -61,6 +64,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Define the FTP Client ID. */ /* Define the FTP Client ID. */

View File

@ -492,7 +492,7 @@ UINT status;
/* FUNCTION RELEASE */ /* FUNCTION RELEASE */
/* */ /* */
/* _nx_ftp_server_delete PORTABLE C */ /* _nx_ftp_server_delete PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -514,7 +514,6 @@ UINT status;
/* CALLS */ /* CALLS */
/* */ /* */
/* fx_file_close Close file */ /* fx_file_close Close file */
/* nx_tcp_client_socket_unbind Unbind client socket */
/* nx_tcp_server_socket_unaccept Unaccept server socket */ /* nx_tcp_server_socket_unaccept Unaccept server socket */
/* nx_tcp_server_socket_unlisten Unlisten on server */ /* nx_tcp_server_socket_unlisten Unlisten on server */
/* nx_tcp_socket_delete Delete socket */ /* nx_tcp_socket_delete Delete socket */
@ -525,6 +524,7 @@ UINT status;
/* tx_thread_terminate Terminate thread */ /* tx_thread_terminate Terminate thread */
/* tx_timer_deactivate Deactivate timer */ /* tx_timer_deactivate Deactivate timer */
/* tx_timer_delete Delete timer */ /* tx_timer_delete Delete timer */
/* _nx_ftp_server_data_socket_cleanup Clean up data socket */
/* */ /* */
/* CALLED BY */ /* CALLED BY */
/* */ /* */
@ -537,6 +537,10 @@ UINT status;
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), */
/* fixed the issue of clearing */
/* data socket, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
UINT _nx_ftp_server_delete(NX_FTP_SERVER *ftp_server_ptr) UINT _nx_ftp_server_delete(NX_FTP_SERVER *ftp_server_ptr)
@ -576,30 +580,10 @@ NX_FTP_CLIENT_REQUEST *client_request_ptr;
if (client_request_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_id) if (client_request_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_id)
{ {
/* Disconnect data socket. */ /* Clean up the data socket. */
nx_tcp_socket_disconnect(&(client_request_ptr -> nx_ftp_client_request_data_socket), NX_NO_WAIT); _nx_ftp_server_data_socket_cleanup(ftp_server_ptr, client_request_ptr);
/* Unbind/unaccept the data socket. */
if (client_request_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_TRUE)
{
nx_tcp_server_socket_unaccept(&(client_request_ptr -> nx_ftp_client_request_data_socket));
nx_tcp_server_socket_unlisten(ftp_server_ptr -> nx_ftp_server_ip_ptr, client_request_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_port);
}
else
{
nx_tcp_client_socket_unbind(&(client_request_ptr -> nx_ftp_client_request_data_socket));
}
/* Delete data socket. */
nx_tcp_socket_delete(&(client_request_ptr -> nx_ftp_client_request_data_socket));
/* Close file. */
fx_file_close(&(client_request_ptr -> nx_ftp_client_request_file));
} }
/* Clear the passive transfer enabled flag. */
client_request_ptr -> nx_ftp_client_request_passive_transfer_enabled = NX_FALSE;
/* Reset the transfer mode as stream mode. */ /* Reset the transfer mode as stream mode. */
client_request_ptr -> nx_ftp_client_request_transfer_mode = NX_FTP_TRANSFER_MODE_STREAM; client_request_ptr -> nx_ftp_client_request_transfer_mode = NX_FTP_TRANSFER_MODE_STREAM;
@ -1355,7 +1339,7 @@ ULONG events;
/* FUNCTION RELEASE */ /* FUNCTION RELEASE */
/* */ /* */
/* _nx_ftp_server_command_process PORTABLE C */ /* _nx_ftp_server_command_process PORTABLE C */
/* 6.1.8 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -1407,11 +1391,10 @@ ULONG events;
/* nx_tcp_socket_disconnect Disconnect socket */ /* nx_tcp_socket_disconnect Disconnect socket */
/* nx_tcp_socket_receive Receive from command socket */ /* nx_tcp_socket_receive Receive from command socket */
/* nx_tcp_socket_send Send packet */ /* nx_tcp_socket_send Send packet */
/* nx_tcp_client_socket_unbind Unbind client socket */
/* nx_tcp_socket_delete Delete socket */
/* nx_tcp_socket_receive Receive packet */
/* nx_tcp_socket_receive_notify Register notification routine */ /* nx_tcp_socket_receive_notify Register notification routine */
/* nx_tcp_socket_transmit_configure Configure data transer socket */ /* nx_tcp_socket_transmit_configure Configure data transer socket */
/* _nx_utility_uint_to_string Convert number to string */
/* _nx_ftp_server_data_socket_cleanup Clean up data socket */
/* */ /* */
/* CALLED BY */ /* CALLED BY */
/* */ /* */
@ -1432,6 +1415,16 @@ ULONG events;
/* 08-02-2021 Yuxin Zhou Modified comment(s), */ /* 08-02-2021 Yuxin Zhou Modified comment(s), */
/* corrected the pad character,*/ /* corrected the pad character,*/
/* resulting in version 6.1.8 */ /* resulting in version 6.1.8 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), */
/* fixed the issue of clearing */
/* data socket and processing */
/* disconnection event, */
/* improved the PASV response, */
/* fixed the bug of processing */
/* STOR in passive mode, */
/* reset the packet prepend */
/* pointer for alignment, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
VOID _nx_ftp_server_command_process(NX_FTP_SERVER *ftp_server_ptr) VOID _nx_ftp_server_command_process(NX_FTP_SERVER *ftp_server_ptr)
@ -1691,6 +1684,14 @@ ULONG block_size;
_nx_ftp_server_response(&(client_req_ptr -> nx_ftp_client_request_control_socket), packet_ptr, _nx_ftp_server_response(&(client_req_ptr -> nx_ftp_client_request_control_socket), packet_ptr,
NX_FTP_CODE_CLOSE, "Logging Off"); NX_FTP_CODE_CLOSE, "Logging Off");
/* If create, cleanup the associated data socket. */
if (client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_id)
{
/* Clean up the client socket. */
_nx_ftp_server_data_socket_cleanup(ftp_server_ptr, client_req_ptr);
}
/* Now disconnect the command socket. */ /* Now disconnect the command socket. */
nx_tcp_socket_disconnect(&(client_req_ptr -> nx_ftp_client_request_control_socket), NX_FTP_SERVER_TIMEOUT); nx_tcp_socket_disconnect(&(client_req_ptr -> nx_ftp_client_request_control_socket), NX_FTP_SERVER_TIMEOUT);
@ -1790,16 +1791,6 @@ ULONG block_size;
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket)); nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file)); fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
} }
else
{
/* Setup the data port with a specific packet transmit retry logic. */
nx_tcp_socket_transmit_configure(&(client_req_ptr -> nx_ftp_client_request_data_socket),
NX_FTP_SERVER_TRANSMIT_QUEUE_DEPTH,
NX_FTP_SERVER_RETRY_SECONDS*NX_IP_PERIODIC_RATE,
NX_FTP_SERVER_RETRY_MAX,
NX_FTP_SERVER_RETRY_SHIFT);
}
} }
else else
{ {
@ -1952,28 +1943,12 @@ ULONG block_size;
_nx_ftp_server_block_header_send(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, 0); _nx_ftp_server_block_header_send(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, 0);
} }
/* Disconnect the data socket. */ /* Clean up the data socket. */
nx_tcp_socket_disconnect(&(client_req_ptr -> nx_ftp_client_request_data_socket), NX_FTP_SERVER_TIMEOUT); _nx_ftp_server_data_socket_cleanup(ftp_server_ptr, client_req_ptr);
/* Tear down the client data socket. */
if (client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_TRUE)
{
nx_tcp_server_socket_unaccept(&(client_req_ptr -> nx_ftp_client_request_data_socket));
nx_tcp_server_socket_unlisten(ftp_server_ptr -> nx_ftp_server_ip_ptr, client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_port);
}
else
{
nx_tcp_client_socket_unbind(&(client_req_ptr -> nx_ftp_client_request_data_socket));
}
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
/* Clear the open type in the client request structure. */ /* Clear the open type in the client request structure. */
client_req_ptr -> nx_ftp_client_request_open_type = 0; client_req_ptr -> nx_ftp_client_request_open_type = 0;
/* Clear the passive transfer enabled flag. */
client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled = NX_FALSE;
/* Allocate a new packet. */ /* Allocate a new packet. */
_nx_ftp_packet_allocate(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, &packet_ptr, NX_TCP_PACKET, NX_WAIT_FOREVER); _nx_ftp_packet_allocate(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, &packet_ptr, NX_TCP_PACKET, NX_WAIT_FOREVER);
@ -2084,45 +2059,7 @@ ULONG block_size;
{ {
/* Check if passive transfer enabled. */ /* Check if passive transfer enabled. */
if (client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_TRUE) if (client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_FALSE)
{
/* Set the disconnect callback. */
client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_disconnect_callback = _nx_ftp_server_data_disconnect;
/* Register the receive function. */
nx_tcp_socket_receive_notify(&(client_req_ptr -> nx_ftp_client_request_data_socket), _nx_ftp_server_data_present);
/* Now wait for the data connection to connect. */
status = nx_tcp_socket_state_wait(&(client_req_ptr -> nx_ftp_client_request_data_socket), NX_TCP_ESTABLISHED, NX_FTP_SERVER_TIMEOUT);
/* Check for connect error. */
if (status)
{
/* Yes, a connect error is present. Tear everything down. */
nx_tcp_server_socket_unaccept(&(client_req_ptr -> nx_ftp_client_request_data_socket));
nx_tcp_server_socket_unlisten(ftp_server_ptr -> nx_ftp_server_ip_ptr, client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_port);
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
#ifdef NX_FTP_FAULT_TOLERANT
/* Flush the media. */
fx_media_flush(ftp_server_ptr -> nx_ftp_server_media_ptr);
#endif
}
else
{
/* Setup the data port with a specific packet transmit retry logic. */
nx_tcp_socket_transmit_configure(&(client_req_ptr -> nx_ftp_client_request_data_socket),
NX_FTP_SERVER_TRANSMIT_QUEUE_DEPTH,
NX_FTP_SERVER_RETRY_SECONDS*NX_IP_PERIODIC_RATE,
NX_FTP_SERVER_RETRY_MAX,
NX_FTP_SERVER_RETRY_SHIFT);
}
}
else
{ {
/* Create an FTP client data socket. */ /* Create an FTP client data socket. */
@ -2712,16 +2649,6 @@ ULONG block_size;
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket)); nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file)); fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
} }
else
{
/* Setup the data port with a specific packet transmit retry logic. */
nx_tcp_socket_transmit_configure(&(client_req_ptr -> nx_ftp_client_request_data_socket),
NX_FTP_SERVER_TRANSMIT_QUEUE_DEPTH,
NX_FTP_SERVER_RETRY_SECONDS*NX_IP_PERIODIC_RATE,
NX_FTP_SERVER_RETRY_MAX,
NX_FTP_SERVER_RETRY_SHIFT);
}
} }
else else
{ {
@ -2949,24 +2876,8 @@ ULONG block_size;
_nx_ftp_server_block_header_send(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, 0); _nx_ftp_server_block_header_send(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, 0);
} }
/* Disconnect the data socket. */ /* Clean up the data socket. */
nx_tcp_socket_disconnect(&(client_req_ptr -> nx_ftp_client_request_data_socket), NX_FTP_SERVER_TIMEOUT); _nx_ftp_server_data_socket_cleanup(ftp_server_ptr, client_req_ptr);
/* Tear down the client data socket. */
if (client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_TRUE)
{
nx_tcp_server_socket_unaccept(&(client_req_ptr -> nx_ftp_client_request_data_socket));
nx_tcp_server_socket_unlisten(ftp_server_ptr -> nx_ftp_server_ip_ptr, client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_port);
}
else
{
nx_tcp_client_socket_unbind(&(client_req_ptr -> nx_ftp_client_request_data_socket));
}
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
/* Clear the passive transfer enabled flag. */
client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled = NX_FALSE;
/* Allocate a new packet. */ /* Allocate a new packet. */
_nx_ftp_packet_allocate(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, &packet_ptr, NX_TCP_PACKET, NX_WAIT_FOREVER); _nx_ftp_packet_allocate(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, &packet_ptr, NX_TCP_PACKET, NX_WAIT_FOREVER);
@ -3142,16 +3053,6 @@ ULONG block_size;
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket)); nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file)); fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
} }
else
{
/* Setup the data port with a specific packet transmit retry logic. */
nx_tcp_socket_transmit_configure(&(client_req_ptr -> nx_ftp_client_request_data_socket),
NX_FTP_SERVER_TRANSMIT_QUEUE_DEPTH,
NX_FTP_SERVER_RETRY_SECONDS*NX_IP_PERIODIC_RATE,
NX_FTP_SERVER_RETRY_MAX,
NX_FTP_SERVER_RETRY_SHIFT);
}
} }
else else
{ {
@ -3433,24 +3334,8 @@ ULONG block_size;
_nx_ftp_server_block_header_send(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, 0); _nx_ftp_server_block_header_send(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, 0);
} }
/* Disconnect the data socket. */ /* Clean up the data socket. */
nx_tcp_socket_disconnect(&(client_req_ptr -> nx_ftp_client_request_data_socket), NX_FTP_SERVER_TIMEOUT); _nx_ftp_server_data_socket_cleanup(ftp_server_ptr, client_req_ptr);
/* Tear down the client data socket. */
if (client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_TRUE)
{
nx_tcp_server_socket_unaccept(&(client_req_ptr -> nx_ftp_client_request_data_socket));
nx_tcp_server_socket_unlisten(ftp_server_ptr -> nx_ftp_server_ip_ptr, client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_port);
}
else
{
nx_tcp_client_socket_unbind(&(client_req_ptr -> nx_ftp_client_request_data_socket));
}
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
/* Clear the passive transfer enabled flag. */
client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled = NX_FALSE;
/* Allocate a new packet. */ /* Allocate a new packet. */
_nx_ftp_packet_allocate(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, &packet_ptr, NX_TCP_PACKET, NX_WAIT_FOREVER); _nx_ftp_packet_allocate(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, &packet_ptr, NX_TCP_PACKET, NX_WAIT_FOREVER);
@ -3634,6 +3519,14 @@ ULONG block_size;
case NX_FTP_PASV: case NX_FTP_PASV:
{ {
/* If create, cleanup the data socket. */
if (client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_id)
{
/* Clean up the data socket. */
_nx_ftp_server_data_socket_cleanup(ftp_server_ptr, client_req_ptr);
}
/* Try to find the data port. */ /* Try to find the data port. */
status = nx_tcp_free_port_find(ftp_server_ptr -> nx_ftp_server_ip_ptr, status = nx_tcp_free_port_find(ftp_server_ptr -> nx_ftp_server_ip_ptr,
ftp_server_ptr -> nx_ftp_server_data_port++, &port); ftp_server_ptr -> nx_ftp_server_data_port++, &port);
@ -3654,7 +3547,7 @@ ULONG block_size;
/* Create an FTP client data socket. */ /* Create an FTP client data socket. */
status = nx_tcp_socket_create(ftp_server_ptr -> nx_ftp_server_ip_ptr, &(client_req_ptr -> nx_ftp_client_request_data_socket), "FTP Server Data Socket", status = nx_tcp_socket_create(ftp_server_ptr -> nx_ftp_server_ip_ptr, &(client_req_ptr -> nx_ftp_client_request_data_socket), "FTP Server Data Socket",
NX_FTP_DATA_TOS, NX_FTP_FRAGMENT_OPTION, NX_FTP_TIME_TO_LIVE, NX_FTP_DATA_WINDOW_SIZE, NX_NULL, NX_NULL); NX_FTP_DATA_TOS, NX_FTP_FRAGMENT_OPTION, NX_FTP_TIME_TO_LIVE, NX_FTP_DATA_WINDOW_SIZE, NX_NULL, _nx_ftp_server_data_disconnect);
/* Determine if the listen is successful. */ /* Determine if the listen is successful. */
if (status != NX_SUCCESS) if (status != NX_SUCCESS)
@ -3670,6 +3563,16 @@ ULONG block_size;
break; break;
} }
/* Register the receive function. */
nx_tcp_socket_receive_notify(&(client_req_ptr -> nx_ftp_client_request_data_socket), _nx_ftp_server_data_present);
/* Setup the data port with a specific packet transmit retry logic. */
nx_tcp_socket_transmit_configure(&(client_req_ptr -> nx_ftp_client_request_data_socket),
NX_FTP_SERVER_TRANSMIT_QUEUE_DEPTH,
NX_FTP_SERVER_RETRY_SECONDS*NX_IP_PERIODIC_RATE,
NX_FTP_SERVER_RETRY_MAX,
NX_FTP_SERVER_RETRY_SHIFT);
/* Make sure each socket points to the corresponding FTP server. */ /* Make sure each socket points to the corresponding FTP server. */
client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_reserved_ptr = ftp_server_ptr; client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_reserved_ptr = ftp_server_ptr;
@ -3699,12 +3602,15 @@ ULONG block_size;
/* Pickup the IPv4 address of this IP instance. */ /* Pickup the IPv4 address of this IP instance. */
ip_address = client_req_ptr -> nx_ftp_client_request_control_socket.nx_tcp_socket_connect_interface -> nx_interface_ip_address; ip_address = client_req_ptr -> nx_ftp_client_request_control_socket.nx_tcp_socket_connect_interface -> nx_interface_ip_address;
/* Reset the packet prepend pointer for alignment. */
packet_ptr -> nx_packet_prepend_ptr = packet_ptr -> nx_packet_data_start + NX_TCP_PACKET;
/* Setup pointer to packet buffer area. */ /* Setup pointer to packet buffer area. */
buffer_ptr = packet_ptr -> nx_packet_prepend_ptr; buffer_ptr = packet_ptr -> nx_packet_prepend_ptr;
/* Now build PASV response. "227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)." */ /* Now build PASV response. "227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)." */
/* Verify packet payload. */ /* Verify packet payload. The max size of this message is 54. */
if ((packet_ptr -> nx_packet_data_end - packet_ptr -> nx_packet_prepend_ptr) < 54) if ((packet_ptr -> nx_packet_data_end - packet_ptr -> nx_packet_prepend_ptr) < 54)
{ {
@ -3721,46 +3627,28 @@ ULONG block_size;
memcpy(buffer_ptr, "227 Entering Passive Mode ", 26); /* Use case of memcpy is verified. */ memcpy(buffer_ptr, "227 Entering Passive Mode ", 26); /* Use case of memcpy is verified. */
/* Build the IP address and port. */ /* Build the IP address and port. */
buffer_ptr[26] = '('; j = 26;
buffer_ptr[j++] = '(';
buffer_ptr[27] = (UCHAR)('0' + (ip_address >> 24)/100); j += _nx_utility_uint_to_string((ip_address >> 24), 10, (CHAR *)(buffer_ptr + j), 54 - j);
buffer_ptr[28] = (UCHAR)('0' + ((ip_address >> 24)/10)%10); buffer_ptr[j++] = ',';
buffer_ptr[29] = (UCHAR)('0' + (ip_address >> 24)%10); j += _nx_utility_uint_to_string(((ip_address >> 16) & 0xFF), 10, (CHAR *)(buffer_ptr + j), 54 - j);
buffer_ptr[30] = ','; buffer_ptr[j++] = ',';
j += _nx_utility_uint_to_string(((ip_address >> 8) & 0xFF), 10, (CHAR *)(buffer_ptr + j), 54 - j);
buffer_ptr[31] = (UCHAR)('0' + ((ip_address >> 16) & 0xFF)/100); buffer_ptr[j++] = ',';
buffer_ptr[32] = (UCHAR)('0' + (((ip_address >> 16) & 0xFF)/10)%10); j += _nx_utility_uint_to_string((ip_address & 0xFF), 10, (CHAR *)(buffer_ptr + j), 54 - j);
buffer_ptr[33] = (UCHAR)('0' + ((ip_address >> 16) & 0xFF)%10); buffer_ptr[j++] = ',';
buffer_ptr[34] = ','; j += _nx_utility_uint_to_string((port >> 8), 10, (CHAR *)(buffer_ptr + j), 54 - j);
buffer_ptr[j++] = ',';
buffer_ptr[35] = (UCHAR)('0' + ((ip_address >> 8) & 0xFF)/100); j += _nx_utility_uint_to_string((port & 0XFF), 10, (CHAR *)(buffer_ptr + j), 54 - j);
buffer_ptr[36] = (UCHAR)('0' + (((ip_address >> 8) & 0xFF)/10)%10); buffer_ptr[j++] = ')';
buffer_ptr[37] = (UCHAR)('0' + ((ip_address >> 8) & 0xFF)%10); buffer_ptr[j++] = '.';
buffer_ptr[38] = ',';
buffer_ptr[39] = (UCHAR)('0' + (ip_address & 0xFF)/100);
buffer_ptr[40] = (UCHAR)('0' + ((ip_address & 0xFF)/10)%10);
buffer_ptr[41] = (UCHAR)('0' + (ip_address & 0xFF)%10);
buffer_ptr[42] = ',';
buffer_ptr[43] = (UCHAR)('0' + (port >> 8)/100);
buffer_ptr[44] = (UCHAR)('0' + ((port >> 8)/10)%10);
buffer_ptr[45] = (UCHAR)('0' + ((port >> 8)%10));
buffer_ptr[46] = ',';
buffer_ptr[47] = (UCHAR)('0' + (port & 255)/100);
buffer_ptr[48] = (UCHAR)('0' + ((port & 255)/10)%10);
buffer_ptr[49] = (UCHAR)('0' + ((port & 255)%10));
buffer_ptr[50] = ')';
buffer_ptr[51] = '.';
/* Set the CR/LF. */ /* Set the CR/LF. */
buffer_ptr[52] = 13; buffer_ptr[j++] = 13;
buffer_ptr[53] = 10; buffer_ptr[j++] = 10;
/* Set the packet length. */ /* Set the packet length. */
packet_ptr -> nx_packet_length = 54; packet_ptr -> nx_packet_length = j;
/* Setup the packet append pointer. */ /* Setup the packet append pointer. */
packet_ptr -> nx_packet_append_ptr = packet_ptr -> nx_packet_prepend_ptr + packet_ptr -> nx_packet_length; packet_ptr -> nx_packet_append_ptr = packet_ptr -> nx_packet_prepend_ptr + packet_ptr -> nx_packet_length;
@ -4327,7 +4215,7 @@ NX_FTP_SERVER *server_ptr;
/* FUNCTION RELEASE */ /* FUNCTION RELEASE */
/* */ /* */
/* _nx_ftp_server_data_disconnect_process PORTABLE C */ /* _nx_ftp_server_data_disconnect_process PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -4350,9 +4238,7 @@ NX_FTP_SERVER *server_ptr;
/* */ /* */
/* fx_file_close Close file */ /* fx_file_close Close file */
/* nx_ftp_packet_allocate Allocate a packet */ /* nx_ftp_packet_allocate Allocate a packet */
/* nx_tcp_client_socket_unbind Unbind client socket */ /* _nx_ftp_server_data_socket_cleanup Clean up data socket */
/* nx_tcp_socket_delete Delete socket */
/* nx_tcp_socket_disconnect Disconnect socket */
/* */ /* */
/* CALLED BY */ /* CALLED BY */
/* */ /* */
@ -4365,13 +4251,16 @@ NX_FTP_SERVER *server_ptr;
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), fixed */
/* the issue of processing */
/* disconnection event, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
VOID _nx_ftp_server_data_disconnect_process(NX_FTP_SERVER *ftp_server_ptr) VOID _nx_ftp_server_data_disconnect_process(NX_FTP_SERVER *ftp_server_ptr)
{ {
UINT i; UINT i;
UINT status;
UINT block_status; UINT block_status;
ULONG length; ULONG length;
NX_PACKET *packet_ptr; NX_PACKET *packet_ptr;
@ -4394,25 +4283,8 @@ NX_FTP_CLIENT_REQUEST *client_req_ptr;
/* Yes, a disconnect is present, which signals an end of file of a client FTP write request. */ /* Yes, a disconnect is present, which signals an end of file of a client FTP write request. */
/* First, cleanup this data socket. */ /* Cleanup this data socket. */
nx_tcp_socket_disconnect(&(client_req_ptr -> nx_ftp_client_request_data_socket), NX_FTP_SERVER_TIMEOUT); _nx_ftp_server_data_socket_cleanup(ftp_server_ptr, client_req_ptr);
/* Unbind/unaccept the data socket. */
if (client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_TRUE)
{
nx_tcp_server_socket_unaccept(&(client_req_ptr -> nx_ftp_client_request_data_socket));
nx_tcp_server_socket_unlisten(ftp_server_ptr -> nx_ftp_server_ip_ptr, client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_port);
}
else
{
nx_tcp_client_socket_unbind(&(client_req_ptr -> nx_ftp_client_request_data_socket));
}
/* And finally delete the data socket. */
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
/* Clear the passive transfer enabled flag. */
client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled = NX_FALSE;
/* Determine if the block mode is enabled. */ /* Determine if the block mode is enabled. */
if (client_req_ptr -> nx_ftp_client_request_transfer_mode == NX_FTP_TRANSFER_MODE_BLOCK) if (client_req_ptr -> nx_ftp_client_request_transfer_mode == NX_FTP_TRANSFER_MODE_BLOCK)
@ -4432,43 +4304,39 @@ NX_FTP_CLIENT_REQUEST *client_req_ptr;
/* Reset the client request activity timeout. */ /* Reset the client request activity timeout. */
client_req_ptr -> nx_ftp_client_request_activity_timeout = NX_FTP_ACTIVITY_TIMEOUT; client_req_ptr -> nx_ftp_client_request_activity_timeout = NX_FTP_ACTIVITY_TIMEOUT;
/* Pickup the file length. */ /* Check if file is open. */
length = (ULONG)client_req_ptr -> nx_ftp_client_request_file.fx_file_current_file_size; if (client_req_ptr -> nx_ftp_client_request_open_type == NX_FTP_OPEN_FOR_WRITE)
/* Close the file. */
status = fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
#ifdef NX_FTP_FAULT_TOLERANT
/* Flush the media. */
fx_media_flush(ftp_server_ptr -> nx_ftp_server_media_ptr);
#endif
/* Allocate a packet for sending the file write response. */
_nx_ftp_packet_allocate(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, &packet_ptr, NX_TCP_PACKET, NX_WAIT_FOREVER);
/* Now determine if the operation was successful. */
if ((status == FX_SUCCESS) && (length == client_req_ptr -> nx_ftp_client_request_total_bytes) && (block_status == NX_TRUE))
{ {
/* Successful client file write. */ /* Pickup the file length. */
length = (ULONG)client_req_ptr -> nx_ftp_client_request_file.fx_file_current_file_size;
/* Now send "250" message to indicate successful file write. */ /* Allocate a packet for sending the file write response. */
_nx_ftp_server_response(&(client_req_ptr -> nx_ftp_client_request_control_socket), packet_ptr, _nx_ftp_packet_allocate(ftp_server_ptr -> nx_ftp_server_packet_pool_ptr, client_req_ptr, &packet_ptr, NX_TCP_PACKET, NX_WAIT_FOREVER);
NX_FTP_CODE_COMPLETED, "File Written");
/* Now determine if the operation was successful. */
if ((length == client_req_ptr -> nx_ftp_client_request_total_bytes) && (block_status == NX_TRUE))
{
/* Successful client file write. */
/* Now send "250" message to indicate successful file write. */
_nx_ftp_server_response(&(client_req_ptr -> nx_ftp_client_request_control_socket), packet_ptr,
NX_FTP_CODE_COMPLETED, "File Written");
}
else
{
/* Unsuccessful client file write. */
/* Now send "550" message to indicate unsuccessful file write. */
_nx_ftp_server_response(&(client_req_ptr -> nx_ftp_client_request_control_socket), packet_ptr,
NX_FTP_CODE_BAD_FILE, "File Write Failed");
}
/* Clear the open type. */
client_req_ptr -> nx_ftp_client_request_open_type = 0;
} }
else
{
/* Unsuccessful client file write. */
/* Now send "550" message to indicate unsuccessful file write. */
_nx_ftp_server_response(&(client_req_ptr -> nx_ftp_client_request_control_socket), packet_ptr,
NX_FTP_CODE_BAD_FILE, "File Write Failed");
}
/* Clear the open type. */
client_req_ptr -> nx_ftp_client_request_open_type = 0;
} }
} }
} }
@ -4964,7 +4832,7 @@ NX_FTP_SERVER *server_ptr;
/* FUNCTION RELEASE */ /* FUNCTION RELEASE */
/* */ /* */
/* _nx_ftp_server_timeout_processing PORTABLE C */ /* _nx_ftp_server_timeout_processing PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -4990,10 +4858,9 @@ NX_FTP_SERVER *server_ptr;
/* fx_file_close Close file */ /* fx_file_close Close file */
/* nx_packet_release Release saved packet */ /* nx_packet_release Release saved packet */
/* nx_tcp_server_socket_relisten Relisten for another connect */ /* nx_tcp_server_socket_relisten Relisten for another connect */
/* nx_tcp_client_socket_unbind Unbind data socket */
/* nx_tcp_server_socket_unaccept Unaccept server connection */ /* nx_tcp_server_socket_unaccept Unaccept server connection */
/* nx_tcp_socket_delete Delete data socket */
/* nx_tcp_socket_disconnect Disconnect socket */ /* nx_tcp_socket_disconnect Disconnect socket */
/* _nx_ftp_server_data_socket_cleanup Clean up data socket */
/* */ /* */
/* CALLED BY */ /* CALLED BY */
/* */ /* */
@ -5006,6 +4873,10 @@ NX_FTP_SERVER *server_ptr;
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), */
/* fixed the issue of clearing */
/* data socket, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
VOID _nx_ftp_server_timeout_processing(NX_FTP_SERVER *ftp_server_ptr) VOID _nx_ftp_server_timeout_processing(NX_FTP_SERVER *ftp_server_ptr)
@ -5046,36 +4917,10 @@ NX_FTP_CLIENT_REQUEST *client_req_ptr;
if (client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_id) if (client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_id)
{ {
/* Disconnect client socket. */ /* Clean up the client socket. */
nx_tcp_socket_disconnect(&(client_req_ptr -> nx_ftp_client_request_data_socket), NX_NO_WAIT); _nx_ftp_server_data_socket_cleanup(ftp_server_ptr, client_req_ptr);
/* Unbind/unaccept the data socket. */
if (client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_TRUE)
{
nx_tcp_server_socket_unaccept(&(client_req_ptr -> nx_ftp_client_request_data_socket));
nx_tcp_server_socket_unlisten(ftp_server_ptr -> nx_ftp_server_ip_ptr, client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_port);
}
else
{
nx_tcp_client_socket_unbind(&(client_req_ptr -> nx_ftp_client_request_data_socket));
}
/* Delete the data socket. */
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
/* Ensure the file is closed. */
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
#ifdef NX_FTP_FAULT_TOLERANT
/* Flush the media. */
fx_media_flush(ftp_server_ptr -> nx_ftp_server_media_ptr);
#endif
} }
/* Clear the passive transfer enabled flag. */
client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled = NX_FALSE;
/* Reset the transfer mode as stream mode. */ /* Reset the transfer mode as stream mode. */
client_req_ptr -> nx_ftp_client_request_transfer_mode = NX_FTP_TRANSFER_MODE_STREAM; client_req_ptr -> nx_ftp_client_request_transfer_mode = NX_FTP_TRANSFER_MODE_STREAM;
@ -5166,7 +5011,7 @@ NX_FTP_SERVER *server_ptr;
/* FUNCTION RELEASE */ /* FUNCTION RELEASE */
/* */ /* */
/* _nx_ftp_server_control_disconnect_processing PORTABLE C */ /* _nx_ftp_server_control_disconnect_processing PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -5191,10 +5036,9 @@ NX_FTP_SERVER *server_ptr;
/* fx_file_close Close file */ /* fx_file_close Close file */
/* nx_packet_release Release saved packet */ /* nx_packet_release Release saved packet */
/* nx_tcp_server_socket_relisten Relisten for another connect */ /* nx_tcp_server_socket_relisten Relisten for another connect */
/* nx_tcp_client_socket_unbind Unbind data socket */
/* nx_tcp_server_socket_unaccept Unaccept server connection */ /* nx_tcp_server_socket_unaccept Unaccept server connection */
/* nx_tcp_socket_delete Delete data socket */
/* nx_tcp_socket_disconnect Disconnect socket */ /* nx_tcp_socket_disconnect Disconnect socket */
/* _nx_ftp_server_data_socket_cleanup Clean up data socket */
/* */ /* */
/* CALLED BY */ /* CALLED BY */
/* */ /* */
@ -5207,6 +5051,10 @@ NX_FTP_SERVER *server_ptr;
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), */
/* fixed the issue of clearing */
/* data socket, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
VOID _nx_ftp_server_control_disconnect_processing(NX_FTP_SERVER *ftp_server_ptr) VOID _nx_ftp_server_control_disconnect_processing(NX_FTP_SERVER *ftp_server_ptr)
@ -5245,36 +5093,10 @@ NX_FTP_CLIENT_REQUEST *client_req_ptr;
if (client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_id) if (client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_id)
{ {
/* Disconnect client socket. */ /* Clean up the client socket. */
nx_tcp_socket_disconnect(&(client_req_ptr -> nx_ftp_client_request_data_socket), NX_NO_WAIT); _nx_ftp_server_data_socket_cleanup(ftp_server_ptr, client_req_ptr);
/* Unbind/unaccept the data socket. */
if (client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_TRUE)
{
nx_tcp_server_socket_unaccept(&(client_req_ptr -> nx_ftp_client_request_data_socket));
nx_tcp_server_socket_unlisten(ftp_server_ptr -> nx_ftp_server_ip_ptr, client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_port);
}
else
{
nx_tcp_client_socket_unbind(&(client_req_ptr -> nx_ftp_client_request_data_socket));
}
/* Delete the data socket. */
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
/* Ensure the file is closed. */
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
#ifdef NX_FTP_FAULT_TOLERANT
/* Flush the media. */
fx_media_flush(ftp_server_ptr -> nx_ftp_server_media_ptr);
#endif
} }
/* Clear the passive transfer enabled flag. */
client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled = NX_FALSE;
/* Reset the transfer mode as stream mode. */ /* Reset the transfer mode as stream mode. */
client_req_ptr -> nx_ftp_client_request_transfer_mode = NX_FTP_TRANSFER_MODE_STREAM; client_req_ptr -> nx_ftp_client_request_transfer_mode = NX_FTP_TRANSFER_MODE_STREAM;
@ -5870,3 +5692,81 @@ UINT size;
break; break;
} }
} }
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _nx_ftp_server_data_socket_cleanup PORTABLE C */
/* 6.1.9 */
/* AUTHOR */
/* */
/* Yuxin Zhou, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function cleans up the data socket. */
/* */
/* INPUT */
/* */
/* ftp_server_ptr Pointer to FTP server */
/* client_req_ptr Pointer to client request */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* fx_file_close Close file */
/* nx_tcp_socket_disconnect Disconnect a socket */
/* nx_tcp_client_socket_unbind Release the data socket port */
/* nx_tcp_server_socket_unaccept Unaccept server connection */
/* nx_tcp_server_socket_unlisten Unlisten on server socket */
/* nx_tcp_socket_delete Delete socket */
/* */
/* CALLED BY */
/* */
/* _nx_ftp_server_command_process Process command */
/* _nx_ftp_server_data_disconnect_process */
/* Disconnect data socket */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* 10-15-2021 Yuxin Zhou Initial Version 6.1.9 */
/* */
/**************************************************************************/
VOID _nx_ftp_server_data_socket_cleanup(NX_FTP_SERVER *ftp_server_ptr, NX_FTP_CLIENT_REQUEST *client_req_ptr)
{
/* First, cleanup this data socket. */
nx_tcp_socket_disconnect(&(client_req_ptr -> nx_ftp_client_request_data_socket), NX_FTP_SERVER_TIMEOUT);
/* Unbind/unaccept the data socket. */
if (client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled == NX_TRUE)
{
nx_tcp_server_socket_unaccept(&(client_req_ptr -> nx_ftp_client_request_data_socket));
nx_tcp_server_socket_unlisten(ftp_server_ptr -> nx_ftp_server_ip_ptr, client_req_ptr -> nx_ftp_client_request_data_socket.nx_tcp_socket_port);
}
else
{
nx_tcp_client_socket_unbind(&(client_req_ptr -> nx_ftp_client_request_data_socket));
}
/* And finally delete the data socket. */
nx_tcp_socket_delete(&(client_req_ptr -> nx_ftp_client_request_data_socket));
fx_file_close(&(client_req_ptr -> nx_ftp_client_request_file));
#ifdef NX_FTP_FAULT_TOLERANT
/* Flush the media. */
fx_media_flush(ftp_server_ptr -> nx_ftp_server_media_ptr);
#endif
/* Clear the passive transfer enabled flag. */
client_req_ptr -> nx_ftp_client_request_passive_transfer_enabled = NX_FALSE;
}

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_ftp_server.h PORTABLE C */ /* nx_ftp_server.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -45,6 +45,11 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), */
/* fixed the issue of clearing */
/* data socket, included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -61,6 +66,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
#ifndef NX_FTP_NO_FILEX #ifndef NX_FTP_NO_FILEX
#include "fx_api.h" #include "fx_api.h"
@ -397,6 +404,7 @@ VOID _nx_ftp_server_timeout(ULONG ftp_server_address);
VOID _nx_ftp_server_timeout_processing(NX_FTP_SERVER *ftp_server_ptr); VOID _nx_ftp_server_timeout_processing(NX_FTP_SERVER *ftp_server_ptr);
VOID _nx_ftp_server_control_disconnect(NX_TCP_SOCKET *control_socket_ptr); VOID _nx_ftp_server_control_disconnect(NX_TCP_SOCKET *control_socket_ptr);
VOID _nx_ftp_server_control_disconnect_processing(NX_FTP_SERVER *ftp_server_ptr); VOID _nx_ftp_server_control_disconnect_processing(NX_FTP_SERVER *ftp_server_ptr);
VOID _nx_ftp_server_data_socket_cleanup(NX_FTP_SERVER *ftp_server_ptr, NX_FTP_CLIENT_REQUEST *client_req_ptr);
#endif /* NX_FTP_SOURCE_CODE */ #endif /* NX_FTP_SOURCE_CODE */

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_ppp.h PORTABLE C */ /* nx_ppp.h PORTABLE C */
/* 6.1.2 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -49,6 +49,9 @@
/* improved packet length */ /* improved packet length */
/* verification, */ /* verification, */
/* resulting in version 6.1.2 */ /* resulting in version 6.1.2 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -65,6 +68,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Define the PPP ID. */ /* Define the PPP ID. */
#define NX_PPP_ID 0x50505020UL #define NX_PPP_ID 0x50505020UL

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_pppoe_client.h PORTABLE C */ /* nx_pppoe_client.h PORTABLE C */
/* 6.1.3 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -47,6 +47,9 @@
/* 12-31-2020 Yuxin Zhou Modified comment(s), improved */ /* 12-31-2020 Yuxin Zhou Modified comment(s), improved */
/* string length verification, */ /* string length verification, */
/* resulting in version 6.1.3 */ /* resulting in version 6.1.3 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -63,6 +66,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Note: Prerequisite for using PPPoE. /* Note: Prerequisite for using PPPoE.
Redefine NX_PHYSICAL_HEADER to 24 to ensure enough space for filling in physical header. Redefine NX_PHYSICAL_HEADER to 24 to ensure enough space for filling in physical header.
Physical header:14(Ethernet header) + 6(PPPoE header) + 2(PPP header) + 2(four-byte aligment). */ Physical header:14(Ethernet header) + 6(PPPoE header) + 2(PPP header) + 2(four-byte aligment). */

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_pppoe_server.h PORTABLE C */ /* nx_pppoe_server.h PORTABLE C */
/* 6.1.4 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -47,6 +47,9 @@
/* 02-02-2021 Yuxin Zhou Modified comment(s), */ /* 02-02-2021 Yuxin Zhou Modified comment(s), */
/* fixed the compiler errors, */ /* fixed the compiler errors, */
/* resulting in version 6.1.4 */ /* resulting in version 6.1.4 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -63,6 +66,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Note: Prerequisite for using PPPoE. /* Note: Prerequisite for using PPPoE.
Redefine NX_PHYSICAL_HEADER to 24 to ensure enough space for filling in physical header. Redefine NX_PHYSICAL_HEADER to 24 to ensure enough space for filling in physical header.
Physical header:14(Ethernet header) + 6(PPPoE header) + 2(PPP header) + 2(four-byte aligment). */ Physical header:14(Ethernet header) + 6(PPPoE header) + 2(PPP header) + 2(four-byte aligment). */

View File

@ -24,7 +24,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_smtp_client.h PORTABLE C */ /* nx_smtp_client.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -43,6 +43,9 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_SMTP_CLIENT_H #ifndef NX_SMTP_CLIENT_H
@ -59,6 +62,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* NX SMTP Client configurable options. */ /* NX SMTP Client configurable options. */

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_telnet_client.h PORTABLE C */ /* nx_telnet_client.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -45,6 +45,9 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -61,6 +64,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Define the TELNET ID. */ /* Define the TELNET ID. */
#define NX_TELNET_CLIENT_ID 0x54454C4DUL #define NX_TELNET_CLIENT_ID 0x54454C4DUL

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_telnet_server.h PORTABLE C */ /* nx_telnet_server.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -45,6 +45,9 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -61,6 +64,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Define the Server TELNET ID. */ /* Define the Server TELNET ID. */
#define NX_TELNET_SERVER_ID 0x54454C4EUL #define NX_TELNET_SERVER_ID 0x54454C4EUL

View File

@ -27,7 +27,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_tftp_client.h PORTABLE C */ /* nx_tftp_client.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -46,6 +46,9 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -62,6 +65,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Define the NetX TFTP CLIENT ID. */ /* Define the NetX TFTP CLIENT ID. */
#define NX_TFTP_CLIENT_ID 0x54465460UL #define NX_TFTP_CLIENT_ID 0x54465460UL

View File

@ -27,7 +27,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_tftp_server.h PORTABLE C */ /* nx_tftp_server.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -46,6 +46,9 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -62,6 +65,8 @@ extern "C" {
#endif #endif
#include "nx_api.h"
/* Define the TFTP ID. */ /* Define the TFTP ID. */
#define NX_TFTP_SERVER_ID 0x54465461UL #define NX_TFTP_SERVER_ID 0x54465461UL

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* nx_api.h PORTABLE C */ /* nx_api.h PORTABLE C */
/* 6.1.8 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -73,6 +73,9 @@
/* added function to convert */ /* added function to convert */
/* unsigned integer to string, */ /* unsigned integer to string, */
/* resulting in version 6.1.8 */ /* resulting in version 6.1.8 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), and */
/* updated product constants, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@ -381,7 +384,7 @@ VOID _nx_trace_event_update(TX_TRACE_BUFFER_ENTRY *event, ULONG timestamp, ULONG
#define AZURE_RTOS_NETX #define AZURE_RTOS_NETX
#define NETX_MAJOR_VERSION 6 #define NETX_MAJOR_VERSION 6
#define NETX_MINOR_VERSION 1 #define NETX_MINOR_VERSION 1
#define NETX_PATCH_VERSION 8 #define NETX_PATCH_VERSION 9
/* The following symbols are defined for backward compatibility reasons.*/ /* The following symbols are defined for backward compatibility reasons.*/
#define EL_PRODUCT_NETX #define EL_PRODUCT_NETX

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */ /* COMPONENT DEFINITION RELEASE */
/* */ /* */
/* nx_arp.h PORTABLE C */ /* nx_arp.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -44,12 +44,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_ARP_H #ifndef NX_ARP_H
#define NX_ARP_H #define NX_ARP_H
#include "nx_api.h"
/* Define ARP Message format. This will get encapsulated by an Ethernet frame /* Define ARP Message format. This will get encapsulated by an Ethernet frame
as well. The Ethernet frame will typically have a 6-byte Ethernet destination as well. The Ethernet frame will typically have a 6-byte Ethernet destination

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */ /* COMPONENT DEFINITION RELEASE */
/* */ /* */
/* nx_icmp.h PORTABLE C */ /* nx_icmp.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -44,12 +44,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_ICMP_H #ifndef NX_ICMP_H
#define NX_ICMP_H #define NX_ICMP_H
#include "nx_api.h"
/* Define ICMP types and codes. */ /* Define ICMP types and codes. */

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */ /* COMPONENT DEFINITION RELEASE */
/* */ /* */
/* nx_igmp.h PORTABLE C */ /* nx_igmp.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -44,12 +44,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_IGMP_H #ifndef NX_IGMP_H
#define NX_IGMP_H #define NX_IGMP_H
#include "nx_api.h"
/* Define IGMP types and codes. */ /* Define IGMP types and codes. */

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */ /* COMPONENT DEFINITION RELEASE */
/* */ /* */
/* nx_ip.h PORTABLE C */ /* nx_ip.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -44,12 +44,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_IP_H #ifndef NX_IP_H
#define NX_IP_H #define NX_IP_H
#include "nx_api.h"
/* Define IP constants. */ /* Define IP constants. */

View File

@ -50,7 +50,7 @@
/* COMPONENT DEFINITION RELEASE */ /* COMPONENT DEFINITION RELEASE */
/* */ /* */
/* nx_md5.h PORTABLE C */ /* nx_md5.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -73,12 +73,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_MD5_H #ifndef NX_MD5_H
#define NX_MD5_H #define NX_MD5_H
#include "nx_api.h"
/* Define the MD5 context structure. */ /* Define the MD5 context structure. */

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */ /* COMPONENT DEFINITION RELEASE */
/* */ /* */
/* nx_packet.h PORTABLE C */ /* nx_packet.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -44,12 +44,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_PAC_H #ifndef NX_PAC_H
#define NX_PAC_H #define NX_PAC_H
#include "nx_api.h"
#define NX_PACKET_POOL_ID ((ULONG)0x5041434B) #define NX_PACKET_POOL_ID ((ULONG)0x5041434B)

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */ /* COMPONENT DEFINITION RELEASE */
/* */ /* */
/* nx_rarp.h PORTABLE C */ /* nx_rarp.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -44,12 +44,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_RARP_H #ifndef NX_RARP_H
#define NX_RARP_H #define NX_RARP_H
#include "nx_api.h"
/* Define RARP Message format. This will get encapsulated by an Ethernet frame /* Define RARP Message format. This will get encapsulated by an Ethernet frame
as well. The Ethernet frame will typically have a 6-byte Ethernet destination as well. The Ethernet frame will typically have a 6-byte Ethernet destination

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */ /* COMPONENT DEFINITION RELEASE */
/* */ /* */
/* nx_tcp.h PORTABLE C */ /* nx_tcp.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -44,12 +44,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_TCP_H #ifndef NX_TCP_H
#define NX_TCP_H #define NX_TCP_H
#include "nx_api.h"
/* Define TCP constants. */ /* Define TCP constants. */

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */ /* COMPONENT DEFINITION RELEASE */
/* */ /* */
/* nx_udp.h PORTABLE C */ /* nx_udp.h PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -44,12 +44,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), included */
/* necessary header file, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef NX_UDP_H #ifndef NX_UDP_H
#define NX_UDP_H #define NX_UDP_H
#include "nx_api.h"
/* Define UDP constants. */ /* Define UDP constants. */

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */ /* FUNCTION RELEASE */
/* */ /* */
/* _nx_tcp_socket_state_ack_check PORTABLE C */ /* _nx_tcp_socket_state_ack_check PORTABLE C */
/* 6.1 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -73,11 +73,17 @@
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), */
/* fixed the bug of race */
/* condition, */
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
VOID _nx_tcp_socket_state_ack_check(NX_TCP_SOCKET *socket_ptr, NX_TCP_HEADER *tcp_header_ptr) VOID _nx_tcp_socket_state_ack_check(NX_TCP_SOCKET *socket_ptr, NX_TCP_HEADER *tcp_header_ptr)
{ {
TX_INTERRUPT_SAVE_AREA
NX_TCP_HEADER *search_header_ptr; NX_TCP_HEADER *search_header_ptr;
NX_PACKET *search_ptr; NX_PACKET *search_ptr;
NX_PACKET *previous_ptr; NX_PACKET *previous_ptr;
@ -619,6 +625,9 @@ UINT wrapped_flag = NX_FALSE;
next pointer. */ next pointer. */
search_ptr = search_ptr -> nx_packet_tcp_queue_next; search_ptr = search_ptr -> nx_packet_tcp_queue_next;
/* Disable interrupts temporarily. */
TX_DISABLE
/* Set the packet to allocated to indicate it is no longer part of the TCP queue. */ /* Set the packet to allocated to indicate it is no longer part of the TCP queue. */
previous_ptr -> nx_packet_tcp_queue_next = ((NX_PACKET *)NX_PACKET_ALLOCATED); previous_ptr -> nx_packet_tcp_queue_next = ((NX_PACKET *)NX_PACKET_ALLOCATED);
@ -630,6 +639,9 @@ UINT wrapped_flag = NX_FALSE;
if (previous_ptr -> nx_packet_queue_next == ((NX_PACKET *)NX_DRIVER_TX_DONE)) if (previous_ptr -> nx_packet_queue_next == ((NX_PACKET *)NX_DRIVER_TX_DONE))
{ {
/* Restore interrupts. */
TX_RESTORE
/* Yes, the driver has already released the packet. */ /* Yes, the driver has already released the packet. */
/* Open up the transmit window. */ /* Open up the transmit window. */
@ -656,8 +668,8 @@ UINT wrapped_flag = NX_FALSE;
/* Simply reset the outstanding bytes. */ /* Simply reset the outstanding bytes. */
socket_ptr -> nx_tcp_socket_tx_outstanding_bytes = 0; socket_ptr -> nx_tcp_socket_tx_outstanding_bytes = 0;
/* Let driver release the packet. */ /* Restore interrupts. */
previous_ptr -> nx_packet_tcp_queue_next = ((NX_PACKET *)NX_PACKET_ALLOCATED); TX_RESTORE
} }
} }

View File

@ -207,7 +207,7 @@ UINT i;
/* FUNCTION RELEASE */ /* FUNCTION RELEASE */
/* */ /* */
/* _nx_utility_uint_to_string PORTABLE C */ /* _nx_utility_uint_to_string PORTABLE C */
/* 6.1.8 */ /* 6.1.9 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Yuxin Zhou, Microsoft Corporation */ /* Yuxin Zhou, Microsoft Corporation */
@ -243,6 +243,9 @@ UINT i;
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 08-02-2021 Yuxin Zhou Initial Version 6.1.8 */ /* 08-02-2021 Yuxin Zhou Initial Version 6.1.8 */
/* 10-15-2021 Yuxin Zhou Modified comment(s), */
/* checked invalid input value,*/
/* resulting in version 6.1.9 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
UINT _nx_utility_uint_to_string(UINT number, UINT base, CHAR *string_buffer, UINT string_buffer_size) UINT _nx_utility_uint_to_string(UINT number, UINT base, CHAR *string_buffer, UINT string_buffer_size)
@ -252,7 +255,7 @@ UINT digit;
UINT size; UINT size;
/* Check for invalid input pointers. */ /* Check for invalid input pointers. */
if ((string_buffer == NX_NULL) || (string_buffer_size == 0)) if ((string_buffer == NX_NULL) || (string_buffer_size == 0) || (base == 0))
{ {
return(0); return(0);
} }

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARCv2_EM/MetaWare Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARCv2_EM/MetaWare Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARC_HS/MetaWare Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARC_HS/MetaWare Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARM9/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARM9/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARM9/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARM9/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARM9/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX ARM9/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX C667X/TI Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX C667X/TI Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A15/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A15/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A5/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A5/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A7/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A7/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A5/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A5/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A5x/AC6 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A5x/AC6 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A7/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A7/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A7/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A7/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A7/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A7/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A8/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A8/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A8/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A8/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A8/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A8/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A9/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A9/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A9/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A9/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A9/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A9/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A9/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-A9/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M0/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M0/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -184,7 +184,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M0/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M0/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -181,7 +181,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M0/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M0/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M23/AC5 Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M23/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -182,7 +182,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M23/GNU Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M23/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -181,7 +181,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M23/IAR Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M23/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -183,7 +183,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -181,7 +181,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/Keil Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/Keil Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M33/AC5 Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M33/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -190,7 +190,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M33/GNU Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M33/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -181,7 +181,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M33/IAR Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M33/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M4/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M4/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -184,7 +184,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M3/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -181,7 +181,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M4/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M4/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M4/Keil Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M4/Keil Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M7/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M7/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -184,7 +184,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M7/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M7/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -181,7 +181,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M7/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-M7/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R4/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R4/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -179,7 +179,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R4/AC6 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R4/AC6 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -180,7 +180,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R4/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R4/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R4/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R4/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R5/AC5 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R5/AC5 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -180,7 +180,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R5/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R5/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R5/IAR Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Cortex-R5/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -200,7 +200,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Linux/GNU Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Linux/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -212,7 +212,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX RXv2/CCRX Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX RXv2/CCRX Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX RXv2/GNU Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX RXv2/GNU Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX RXv2/IAR Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX RXv2/IAR Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif

View File

@ -201,7 +201,7 @@
#ifdef NX_SYSTEM_INIT #ifdef NX_SYSTEM_INIT
CHAR _nx_version_id[] = CHAR _nx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * NetX Win32/VS2019 Version 6.1 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * NetX Win32/VS2019 Version 6.1.9 *";
#else #else
extern CHAR _nx_version_id[]; extern CHAR _nx_version_id[];
#endif #endif