diff --git a/docs/revision_history.txt b/docs/revision_history.txt new file mode 100644 index 00000000..834c8e2b --- /dev/null +++ b/docs/revision_history.txt @@ -0,0 +1,5815 @@ + NetXDuo + +For version 6 and higher, please refer to the release notes on GitHub at https://github.com/eclipse-threadx/netxduo/releases. +Below is the revision history for 5.x. + +1. NetXDuo + +08-15-2019 NetX Duo generic code version 5.12. This release includes the + following major features: + + Files are modified to fix window size overflow: + nx_tcp_packet_send_control.c + nx_tcp_socket_retransmit.c + nx_tcp_socket_send_internal.c + + Files are modified to improve string length verification: + demo_netx_duo_multihome_tcp.c + demo_netx_duo_multihome_udp.c + demo_netx_duo_tcp.c + demo_netx_duo_udp.c + nx_api.h + nx_user.h + + Files are modified to improve RARP logic: + nx_rarp_enable.c + nx_rarp_periodic_update.c + nx_rarp_packet_receive.c + + File is created to improve string length verification: + nx_utility.c + + Files are modified to fix compiler warnings: + nx_ip_checksum_compute.c + nxd_ipv6_default_router_entry_get.c + + Files are modified to fix system state check: + nx_api.h + nx_icmp_packet_receive.c + nx_igmp_packet_receive.c + nx_tcp_client_bind_cleanup.c + nx_tcp_connect_cleanup.c + nx_tcp_disconnect_cleanup.c + nx_tcp_packet_receive.c + nx_tcp_receive_cleanup.c + nx_tcp_transmit_cleanup.c + nx_udp_packet_receive.c + + Files are modified to improve packet length verification: + nx_arp_announce_send.c + nx_arp_packet_receive.c + nx_arp_packet_send.c + nx_arp_probe_send.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_rs.c + nx_igmp_interface_report_send.c + nx_rarp_packet_receive.c + nx_rarp_packet_send.c + nx_tcp_packet_send_control.c + nx_udp_packet_receive.c + + Files are modified to support for 64-bit mode: + nx_api.h + nx_arp_queue_send.c + nx_icmp_interface_ping.c + nx_icmp_interface_ping6.c + nx_icmpv4_process_echo_reply.c + nx_icmpv4_send_error_message.c + nx_icmpv6_destination_table_periodic_update.c + nx_icmpv6_process_echo_reply.c + nx_icmpv6_process_na.c + nx_icmpv6_process_ns.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_queued_packets.c + nx_icmpv6_send_rs.c + nx_icmpv6_validate_neighbor_message.c + nx_icmpv6_validate_options.c + nx_icmpv6_validate_ra.c + nx_igmp_packet_process.c + nx_ip_checksum_compute.c + nx_ip_create.c + nx_ip_dispatch_process.c + nx_ip_driver_packet_send.c + nx_ip_fast_periodic_timer_entry.c + nx_ip_fragment_assembly.c + nx_ip_fragment_forward_packet.c + nx_ip_fragment_packet.c + nx_ip_header_add.c + nx_ip_packet_checksum_compute.c + nx_ip_packet_send.c + nx_ip_periodic_timer_entry.c + nx_ip_thread_entry.c + nx_ipv4_option_process.c + nx_ipv4_packet_receive.c + nx_ipv6_fragment_process.c + nx_ipv6_header_add.c + nx_ipv6_option_error.c + nx_ipv6_packet_receive.c + nx_ipv6_packet_send.c + nx_ipv6_process_hop_by_hop_option.c + nx_packet.h + nx_packet_data_adjust.c + nx_packet_debug_info_get.c + nx_packet_pool_create.c + nx_tcp_no_connection_reset.c + nx_tcp_packet_process.c + nx_tcp_packet_send_control.c + nx_tcp_packet_send_syn.c + nx_tcp_server_socket_relisten.c + nx_tcp_socket_packet_process.c + nx_tcp_socket_receive.c + nx_tcp_socket_retransmit.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_data_check.c + nx_udp_packet_receive.c + nx_udp_socket_bytes_available.c + nx_udp_socket_receive.c + nxd_ipv6_disable.c + nxd_udp_socket_send.c + nxde_icmp_ping.c + nxde_icmp_source_ping.c + nxe_packet_pool_create.c + + Other modified files: + demo_netx_duo_multihome_udp.c Fixed packet leak when IPv4 disabled. + nx_arp_packet_receive.c Fixed the ARP update on static entries. + nx_ip_checksum_compute.c Fixed alignment issue. + nx_ip_delete.c Allowed driver uninit to execute without preemption disabled. + nx_ip_dispatch_process.c Supported packet pool low watermark. + nx_ipv4_option_process.c Improved internal logic. + nx_ipv4_packet_receive.c Corrected the logic for checking DHCP message. + nx_ipv4_packet_receive.c Supported packet pool low watermark. + nxd_tcp_client_socket_connect.c Fixed a packet leak issue for TCP client. + nx_tcp_packet_process.c Fixed connection MSS. + Validated option after SEQ and ACK are checked. + nx_tcp_socket_packet_process.c Validated option after SEQ and ACK are checked. + nx_tcp_packet_send_syn.c Fixed connection MSS. + + +07/15/2018 NetX Duo generic code version 5.11. This release includes the + following major features: + + Files are modified to fix custom MSS value: + nx_api.h + nx_tcp_packet_process.c + nx_tcp_packet_send_syn.c + nx_tcp_server_socket_relisten.c + nx_tcp_socket_mss_get.c + nx_tcp_socket_mss_set.c + nx_tcp_socket_send_internal.c + + Files are modified to improve packet length verification: + nx_icmpv6_process_echo_reply.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_na.c + nx_icmpv6_process_packet_too_big.c + nx_icmpv6_validate_options.c + nx_ip_dispatch_process.c + nx_ipv4_packet_receive.c + nx_ipv6_packet_receive.c + nx_ipv6_process_hop_by_hop_option.c + nx_tcp_packet_process.c + + Files are modified to support Thread feature: + nx_api.h + nx_ipv6_process_hop_by_hop_option.c + nx_ipv6_util.c + nx_packet_allocate.c + + Files are modified to check interface for router lookup: + nx_icmpv6_process_redirect.c + nx_ipv6.h + nx_ipv6_packet_send.c + nxd_ipv6_router_lookup.c + + Files are modified to fix the logic to update the destination cache: + nx_icmpv6.h + nx_icmpv6_dest_table_add.c + nx_icmpv6_dest_table_find.c + nx_icmpv6_process_packet_too_big.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_queued_packets.c + nx_ipv6_packet_send.c + + Files are modified to support specified source interface for IPv6: + nx_icmp_ping6.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_rs.c + nx_ipv6.h + nxd_ipv6_interface_find.c + nxd_tcp_client_socket_connect.c + nxd_udp_socket_send.c + + Files are modified to improve internal logic: + nx_api.h + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_na.c + nx_icmpv6_process_ra.c + nx_icmpv6_send_error_message.c + nx_ip_create.c + nx_ip_dispatch_process.c + nx_ip_fragment_assembly.c + nx_ip_fragment_timeout_check.c + nx_ip_header_add.c + nx_ip_interface_attach.c + nx_ip_interface_physical_address_set.c + nx_ip_max_payload_size_find.c + nx_ipv4_option_process.c + nx_ipv6_header_add.c + nx_ipv6_option_error.c + nx_ipv6_packet_copy.c + nx_ipv6_packet_send.c + nx_ipv6_util.c + nx_packet_allocate.c + nx_packet_release.c + nx_packet_transmit_release.c + nx_ram_network_driver.c + nx_tcp_client_socket_bind.c + nx_tcp_packet_process.c + nx_tcp_packet_send_control.c + nx_tcp_packet_send_syn.c + nx_tcp_server_socket_accept.c + nx_tcp_socket_disconnect.c + nx_tcp_socket_retransmit.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_data_check.c + nx_udp_socket_bind.c + nx_udp_socket_receive.c + nxd_ipv6_default_router_delete.c + nxd_ipv6_interface_find.c + nxd_ipv6_search_onlink.c + nxd_tcp_client_socket_connect.c + nxd_udp_socket_send.c + + Files are modified to merge IPv6 loopback address with normal IPv6 address: + nx_api.h + nx_ip_create.c + nx_ip_max_payload_size_find.c + nxd_ipv6_disable.c + nxde_icmp_source_ping.c + nxde_ip_raw_packet_source_send.c + nxde_ipv6_address_get.c + nxde_udp_socket_source_send.c + + Files are modified to use macro to bring in symbol: _tx_thread_system_state: + nxe_ip_forwarding_disable.c + nxe_ip_forwarding_enable.c + nxe_packet_pool_info_get.c + nxe_tcp_enable.c + nxe_tcp_socket_receive_queue_max_set.c + nxe_udp_enable.c + nxe_udp_info_get.c + nxe_udp_socket_checksum_disable.c + nxe_udp_socket_checksum_enable.c + nxe_udp_socket_info_get.c + + Files are modified to remove unreachable code: + nx_tcp_socket_receive.c + nx_ipv6_packet_send.c + + Files are modified to be compatible with ThreadX 5.8 or later: + nx_api.h + nx_icmp_cleanup.c + nx_icmpv4.h + nx_ip.h + nx_ip_delete.c + nx_ip_raw_packet_cleanup.c + nx_ip_raw_packet_disable.c + nx_packet.h + nx_packet_pool_cleanup.c + nx_tcp.h + nx_tcp_cleanup_deferred.c + nx_tcp_client_bind_cleanup.c + nx_tcp_client_socket_unbind.c + nx_tcp_connect_cleanup.c + nx_tcp_deferred_cleanup_check.c + nx_tcp_disconnect_cleanup.c + nx_tcp_receive_cleanup.c + nx_tcp_server_socket_unaccept.c + nx_tcp_socket_connection_reset.c + nx_tcp_socket_disconnect.c + nx_tcp_socket_state_established.c + nx_tcp_socket_thread_suspend.c + nx_tcp_transmit_cleanup.c + nx_udp.h + nx_udp_bind_cleanup.c + nx_udp_receive_cleanup.c + nx_udp_socket_unbind.c + + Files are modified to support random port find: + nx_api.h + nx_tcp_client_socket_bind.c + nx_tcp_enable.c + nx_tcp_free_port_find.c + nx_udp_enable.c + nx_udp_free_port_find.c + nx_udp_socket_bind.c + + Files are modified to fix compiler errors when event trace is enabled: + nx_icmpv4_packet_process.c + nx_ip_create.c + nx_ip_forwarding_disable.c + nx_ip_forwarding_enable.c + nx_ip_fragment_enable.c + nx_ip_max_payload_size_find.c + nx_ip_raw_packet_filter_set.c + nx_ip_raw_packet_receive.c + nx_ip_static_route_add.c + nx_ip_static_route_delete.c + nx_packet_allocate.c + nx_rarp_disable.c + nx_rarp_enable.c + nx_rarp_info_get.c + nx_tcp.h + nx_tcp_connect_cleanup.c + nx_tcp_socket_block_cleanup.c + nx_tcp_socket_packet_process.c + nx_tcp_socket_receive_notify.c + nx_tcp_socket_state_syn_sent.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_window_update_notify_set.c + nx_trace_object_unregister.c + nx_trace_object_register.c + nx_udp_info_get.c + nx_udp_socket_checksum_disable.c + nx_udp_socket_checksum_enable.c + nx_udp_socket_info_get.c + nx_udp_socket_port_get.c + nxd_ipv6_address_change_notify.c + nxd_ipv6_stateless_address_autoconfig_enable.c + nxd_ipv6_stateless_address_autoconfig_disable.c + nxd_udp_socket_send.c + + Files are modified to avoid NULL pointer access in trace logging: + nx_ip_interface_info_get.c + nx_ip_thread_entry.c + nxd_ipv6_address_set.c + nxd_udp_packet_info_extract.c + + Files are modified to fix the delay of initial router solicitation: + nx_icmpv6.h + nx_icmpv6_send_rs.c + nx_user.h + nxd_ipv6_enable.c + nxd_ipv6_router_solicitation_check.c + nxd_ipv6_stateless_address_autoconfig_enable.c + + Files are modified to move the destination and ND cache tables to IP structure: + nx_api.h + nx_icmpv6.h + nx_icmpv6_DAD_clear_NDCache_entry.c + nx_icmpv6_dest_table_add.c + nx_icmpv6_dest_table_find.c + nx_icmpv6_destination_table_periodic_update.c + nx_icmpv6_packet_process.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_queued_packets.c + nx_ip_thread_entry.c + nx_ipv6_packet_send.c + nx_invalidate_destination_entry.c + nx_nd_cache.h + nx_nd_cache_add.c + nx_nd_cache_add_entry.c + nx_nd_cache_delete_internal.c + nx_nd_cache_fast_periodic_update.c + nx_nd_cache_find_entry.c + nx_nd_cache_find_entry_by_mac_addr.c + nx_nd_cache_interface_entries_delete.c + nx_nd_cache_slow_periodic_update.c + nx_system_initialize.c + nxd_icmp_enable.c + nxd_ipv6_destination_table_find_next_hop.c + nxd_ipv6_disable.c + nxd_ipv6_prefix_router_timer_tick.c + nxd_nd_cache_entry_delete.c + nxd_nd_cache_hardware_address_find.c + nxd_nd_cache_invalidate.c + nxd_nd_cache_ip_address_find.c + + Files are modified to add support for disabling IPv4: + demo_netx_duo_multihome_tcp.c + demo_netx_duo_multihome_udp.c + demo_netx_duo_tcp.c + demo_netx_duo_udp.c + nx_api.h + nx_arp.h + nx_arp_announce_send.c + nx_arp_dynamic_entries_invalidate.c + nx_arp_dynamic_entry_delete.c + nx_arp_dynamic_entry_set.c + nx_arp_enable.c + nx_arp_entry_allocate.c + nx_arp_entry_delete.c + nx_arp_gratuitous_send.c + nx_arp_hardware_address_find.c + nx_arp_info_get.c + nx_arp_initialize.c + nx_arp_interface_entries_delete.c + nx_arp_ip_address_find.c + nx_arp_packet_deferred_receive.c + nx_arp_packet_receive.c + nx_arp_packet_send.c + nx_arp_periodic_update.c + nx_arp_probe_send.c + nx_arp_queue_process.c + nx_arp_queue_send.c + nx_arp_static_entries_delete.c + nx_arp_static_entry_create.c + nx_arp_static_entry_delete.c + nx_arp_static_entry_delete_internal.c + nx_icmp.h + nx_icmp_enable.c + nx_icmp_interface_ping.c + nx_icmp_packet_process.c + nx_icmp_packet_receive.c + nx_icmp_ping.c + nx_icmp_queue_process.c + nx_icmpv4.h + nx_icmpv4_packet_process.c + nx_icmpv4_process_echo_reply.c + nx_icmpv4_process_echo_request.c + nx_icmpv4_send_error_message.c + nx_igmp.h + nx_igmp_enable.c + nx_igmp_info_get.c + nx_igmp_loopback_disable.c + nx_igmp_loopback_enable.c + nx_igmp_multicast_check.c + nx_igmp_multicast_interface_join.c + nx_igmp_multicast_interface_join_internal.c + nx_igmp_multicast_interface_leave.c + nx_igmp_multicast_interface_leave_internal.c + nx_igmp_multicast_join.c + nx_igmp_multicast_leave.c + nx_igmp_packet_process.c + nx_igmp_packet_receive.c + nx_igmp_periodic_processing.c + nx_igmp_queue_process.c + nx_ip.h + nx_ip_address_change_notify.c + nx_ip_address_get.c + nx_ip_address_set.c + nx_ip_create.c + nx_ip_delete.c + nx_ip_dispatch_process.c + nx_ip_driver_packet_send.c + nx_ip_forward_packet_process.c + nx_ip_forwarding_disable.c + nx_ip_forwarding_enable.c + nx_ip_fragment_assembly.c + nx_ip_fragment_forward_packet.c + nx_ip_fragment_packet.c + nx_ip_fragment_timeout_check.c + nx_ip_gateway_address_clear.c + nx_ip_gateway_address_get.c + nx_ip_gateway_address_set.c + nx_ip_header_add.c + nx_ip_interface_address_get.c + nx_ip_interface_address_set.c + nx_ip_interface_attach.c + nx_ip_interface_detach.c + nx_ip_interface_info_get.c + nx_ip_interface_status_check.c + nx_ip_max_payload_size_find.c + nx_ip_packet_receive.c + nx_ip_packet_send.c + nx_ip_raw_packet_send.c + nx_ip_raw_packet_source_send.c + nx_ip_route_find.c + nx_ip_static_route_add.c + nx_ip_static_route_delete.c + nx_ip_thread_entry.c + nx_ipv4.h + nx_ipv4_multicast_interface_join.c + nx_ipv4_multicast_interface_leave.c + nx_ipv4_option_process.c + nx_ipv4_packet_receive.c + nx_packet_allocate.c + nx_ram_network_driver.c + nx_rarp.h + nx_rarp_disable.c + nx_rarp_enable.c + nx_rarp_info_get.c + nx_rarp_packet_deferred_receive.c + nx_rarp_packet_receive.c + nx_rarp_packet_send.c + nx_rarp_periodic_update.c + nx_rarp_queue_process.c + nx_tcp_client_socket_connect.c + nx_tcp_no_connection_reset.c + nx_tcp_packet_process.c + nx_tcp_packet_send_control.c + nx_tcp_packet_send_syn.c + nx_tcp_server_socket_relisten.c + nx_tcp_server_socket_unaccept.c + nx_tcp_socket_block_cleanup.c + nx_tcp_socket_mss_set.c + nx_tcp_socket_peer_info_get.c + nx_tcp_socket_retransmit.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_state_ack_check.c + nx_udp_packet_info_extract.c + nx_udp_packet_receive.c + nx_udp_socket_receive.c + nx_udp_socket_send.c + nx_udp_source_extract.c + nx_user.h + nxd_icmp_enable.c + nxd_icmp_ping.c + nxd_icmp_source_ping.c + nxd_ip_raw_packet_source_send.c + nxd_tcp_client_socket_connect.c + nxd_tcp_socket_peer_info_get.c + nxd_udp_packet_info_extract.c + nxd_udp_socket_send.c + nxd_udp_socket_source_send.c + nxd_udp_source_extract.c + nxde_icmp_ping.c + nxde_icmp_source_ping.c + nxde_ip_raw_packet_send.c + nxde_ip_raw_packet_source_send.c + nxde_tcp_client_socket_connect.c + nxde_udp_socket_send.c + nxde_udp_socket_source_send.c + nxe_arp_dynamic_entries_invalidate.c + nxe_arp_dynamic_entry_set.c + nxe_arp_enable.c + nxe_arp_entry_delete.c + nxe_arp_gratuitous_send.c + nxe_arp_hardware_address_find.c + nxe_arp_info_get.c + nxe_arp_ip_address_find.c + nxe_arp_static_entries_delete.c + nxe_arp_static_entry_create.c + nxe_arp_static_entry_delete.c + nxe_icmp_enable.c + nxe_icmp_ping.c + nxe_igmp_enable.c + nxe_igmp_info_get.c + nxe_igmp_loopback_disable.c + nxe_igmp_loopback_enable.c + nxe_igmp_multicast_interface_join.c + nxe_igmp_multicast_interface_leave.c + nxe_igmp_multicast_join.c + nxe_igmp_multicast_leave.c + nxe_ip_address_change_notify.c + nxe_ip_address_get.c + nxe_ip_address_set.c + nxe_ip_forwarding_disable.c + nxe_ip_forwarding_enable.c + nxe_ip_gateway_address_clear.c + nxe_ip_gateway_address_get.c + nxe_ip_gateway_address_set.c + nxe_ip_interface_address_get.c + nxe_ip_interface_address_set.c + nxe_ip_interface_status_check.c + nxe_ip_raw_packet_send.c + nxe_ip_raw_packet_source_send.c + nxe_ip_static_route_add.c + nxe_ip_static_route_delete.c + nxe_ipv4_multicast_interface_join.c + nxe_ipv4_multicast_interface_leave.c + nxe_rarp_disable.c + nxe_rarp_enable.c + nxe_rarp_info_get.c + nxe_tcp_client_socket_connect.c + nxe_tcp_socket_peer_info_get.c + nxe_tcp_socket_send.c + nxe_udp_packet_info_extract.c + nxe_udp_socket_send.c + nxe_udp_socket_source_send.c + nxe_udp_source_extract.c + + Other modified files: + + nx_arp_packet_receive.c Added zero IP probe address check. + nx_arp_periodic_update.c Improved retry counter check logic. + nx_icmp_packet_receive.c Added logic for checking address of ICMP packet. + nx_icmpv6_process_echo_request.c Corrected the logic for processing multicast echo. + nx_igmp.h Declared nx_igmp_interface_report_send function. + nx_igmp_multicast_interface_leave_internal.c Optimized to use the report_send function. + nx_igmp_packet_process.c Fixed history information. + nx_igmp_periodic_processing.c Optimized to use the report_send function. + nx_ip_create.c Fixed address index. The value is cleared by nxd_ipv6_disable. + nx_ip_forward_packet_process.c Added check for class D address. + Corrected the logic for appending the overflowing data to the new packet. + nx_ip_interface_detach.c Optimized the logic for invalidating destination entries when the router is invalid. + nx_ipv6_fragment_process.c Fixed NULL pointer access. + nx_nd_cache.h Cleaned up internal functions. + nx_nd_cache_clear_IsRouter_field.c Removed unused function. + nx_nd_cache_init.c Removed unused function. + nx_packet.h Adjusted the packet data to fill the specified header. + nx_packet_data_append.c Fixed NULL pointer access. + nx_tcp_client_socket_unbind.c Fixed a bug where packets in the receive queue may not be properly released. + nx_tcp_packet_process.c Fixed the packet leak. + nx_tcp_server_socket_accept.c Fixed an issue where SYN is sent multiple times. + nx_tcp_socket_retransmit.c Fixed compiler error when NX_DISABLE_TCP_TX_CHECKSUM is defined. + nx_tcp_socket_send_internal.c Fixed window size when receiving duplicated ACKs. + Fixed empty packet. + nx_tcp_socket_state_ack_check.c Fixed ACK number check when zero window probe is ACKed. + Fixed the condition to update window size. + nx_tcp_socket_state_transmit_check.c Fixed window size when receiving duplicated ACKs. + nx_user.h Added symbol for checking address of ICMP packet. + nxd_ipv6_default_router_delete.c Removed one line function _nx_nd_cache_clear_IsRouter_field(). + nxd_ipv6_enable.c Fixed address index. The value is cleared by nxd_ipv6_disable. + nxd_ipv6_prefix_router_timer_tick.c Removed one line function _nx_nd_cache_clear_IsRouter_field(). + Optimized the logic for invalidating destination entries when the router is invalid. + nxd_nd_cache_invalidate.c Simplified the logic for invalidating all ND cache entries. + nxd_nd_cache_invalidate_internal.c Removed unused function. + nxd_udp_socket_send.c Fixed compiler error when NX_DISABLE_UDP_TX_CHECKSUM is defined. + nxe_ip_create.c Modified invalid IP address check. + nxe_ip_interface_attach.c Modified invalid IP address check. + + File created: + nx_igmp_interface_report_send.c Created internal function for sending join and leave reports. + nx_packet_data_adjust.c Adjusted the packet data to fill the specified header. + + +05/10/2016 NetX Duo generic code version 5.10. This release includes the + following major features: + + Files are modified to add an argument to the parameter list of _nx_icmpv6_send_ns: + nx_icmpv6.h + nx_icmpv6_perform_DAD.c + nx_icmpv6_send_ns.c + nx_ip_thread_entry.c + nx_ipv6_packet_send.c + nx_nd_cache_fast_periodic_update.c + + Files are modified to remove unused stub functions for trace: + nx_api.h + nx_trace_event_insert.c + nx_trace_event_update.c + nx_trace_object_register.c + nx_trace_object_unregister.c + + Files are modified to fix IPv6 router type: + nx_api.h + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_ip.h + nxd_ipv6_default_router_add.c + nxd_ipv6_default_router_entry_get.c + + Files are added or modified to avoid recursive call: + nx_icmpv6_send_ns.c + nx_ip_dispatch_process.c + nx_ipv6_header_add.c + nx_ipv6_packet_send.c + nx_ipv6_process_fragment_option.c + + Files are added or modified to remove unused IP pointer parameter: + nx_api.h + nx_icmpv6.h + nx_icmpv6_destination_table_periodic_update.c + nx_ip_thread_entry.c + nx_nd_cache.h + nx_nd_cache_add_entry.c + nx_nd_cache_delete_internal.c + nx_nd_cache_fast_periodic_update.c + nx_nd_cache_interface_entries_delete.c + nxd_ipv6_disable.c + nxd_nd_cache_entry_delete.c + nxd_nd_cache_invalidate.c + nxd_nd_cache_invalidate_internal.c + + Files are added or modified to optimized the logic for IP address conflict detection: + nx_api.h + nx_arp.h + nx_arp_announce_send.c + nx_arp_gratuitous_send.c + nx_arp_packet_receive.c + nx_arp_probe_send.c + + Files are modified to pass PC-Lint check: + nx_api.h + nx_icmpv4.h + nx_icmpv6.h + nx_ip_create.c + nx_ipv6.h + nx_nd_cache.h + nx_nd_cache_init.c + + Files are modified to support ASSERT macro: + nx_arp_packet_send.c + nx_icmpv6_dest_table_find.c + nx_icmpv6_send_queued_packets.c + nx_ip_checksum_compute.c + nxd_ipv6_router_lookup.c + nxd_tcp_client_socket_connect.c + + Files are modified to optimized the logic for TCP segment processing: + nx_tcp_socket_packet_process.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_syn_received.c + nx_tcp_socket_state_syn_sent.c + + Files are modified to remove unreachable code and deprecated functions: + nx_api.h + nx_arp.h + nx_arp_entry_allocate.c + nx_icmp.h + nx_icmpv4.h + nx_icmpv6.h + nx_icmpv6_process_na.c + nx_icmpv6_process_ns.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_queued_packets.c + nx_igmp.h + nx_ipv4.h + nx_ipv6.h + nx_ipv6_fragment_process.c + nx_ip_interface_detach.c + nx_nd_cache_find_entry_by_mac_addr.c + nx_packet.h + nx_tcp.h + nx_tcp_client_socket_bind.c + nx_tcp_packet_process.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_data_check.c + nx_tcp_socket_state_fin_wait1.c + nx_tcp_socket_state_syn_sent.c + nx_udp.h + nx_udp_socket_bind.c + nxd_ipv6_address_set.c + nxd_ipv6_router_lookup.c + nxd_ipv6_raw_packet_send_internal.c + nxd_tcp_client_socket_connect.c + nxde_udp_socket_send.c + nxde_icmp_source_ping.c + + Files are modified to optimize the logic of checksum calculation: + nx_icmp_interface_ping.c + nx_icmp_interface_ping6.c + nx_icmpv4_packet_process.c + nx_icmpv4_process_echo_request.c + nx_icmpv4_send_error_message.c + nx_icmpv6_packet_process.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_ns.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_rs.c + nx_ip_checksum_compute.c + nx_ip_fragment_packet.c + nx_ip_header_add.c + nx_ipv4_packet_receive.c + nx_tcp_packet_process.c + nx_tcp_packet_send_control.c + nx_tcp_socket_send_internal.c + nx_udp_socket_receive.c + nxd_udp_socket_send.c + + Files are modified to protect ND process in _nx_icmpv6_packet_process: + nx_icmpv6_process_na.c + nx_icmpv6_process_ns.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + + Files are modified to avoid static analysis error report: + nx_ipv6_fragment_process.c + nxd_ipv6_address_set.c + nxd_ipv6_default_router_entry_get.c + nxd_ipv6_interface_find.c + + + Other modified files: + nx_api.h Listed APIs by alphabetical order. + Added return status NX_CONTINUE. + Fixed typo of deprecated symbols. + nx_arp_entry_allocate.c Fixed a bug that is_static of arp entry was not set. + nx_arp_periodic_update.c Checked ARP expiration when NX_ARP_EXPIRATION_RATE is not zero. + Optimized the logic of updating ARP list. + nx_arp_static_entries_delete.c Optimized the logic. + nx_icmp_interface_ping6.c Optimized the logic due to NX_ICMPV6_ECHO is modified. + nx_icmpv4_process_echo_reply.c Optimized the logic due to NX_ICMPV4_ECHO is modified. + nx_icmpv6_destination_table_periodic_update.c Optimized the code. + nx_icmpv6_process_echo_reply.c Optimized the logic due to NX_ICMPV6_ECHO is modified. + nx_icmpv6_process_ra.c Fixed a bug that is_router of ND entry was not set. + nx_icmpv6_process_redirect.c Optimized the logic. + The destination table is not updated when packet is invalid. + nx_icmpv6_send_ns.c Verified interface before is was used. + nx_icmpv6_send_queued_packets.c Optimized the logic for fragmentation checking. + nx_icmpv6_validate_neighbor_message.c Fixed type check for destination address + when source address is unspecified. + nx_igmp_multicast_interface_leave_internal Fixed the bug for adding packet debug information. + nx_igmp_packet_process Added support for packet chaining. + Compute the checksum over all IGMP data, not just the header. + Modified the logic for checking packet length. + nx_igmp_periodic_processing Fixed the bug for adding packet debug information. + nx_ipv4.h Avoided redundant definition of fragmentation symbols. + nx_ip_driver_packet_send.c Optimized the logic for fragmentation checking. + nx_ip_fast_periodic_timer_entry.c Set function _nx_ip_fast_periodic_timer_entry to static. + nx_ip_forward_packet_process.c Fixed the bug for processing fragment bit. + nx_ip_interface_detach.c Checked interface status before processing. + nx_ip_route_find.c Fixed a bug that destination address is one of + the local interface addresses. + nx_ipv4_option_process.c Optimized the code. + nx_ipv4_packet_receive.c Adjusted processing order to make sure interface has IP address before forwarding. + nx_ipv6_fragment_process.c Cleared reserved field in fragment option. + nx_ipv6_option_error.c Optimized the logic for default case of switch. + nx_ipv6_packet_send.c Optimized the logic for fragmentation checking. + Removed unnecessary check. + nx_ipv6_perform_min_path_MTU_discovery.c Moved the functionality into nx_icmpv6_destination_table_periodic_update.c + nx_packet_data_extract_offset.c Removed duplicated for zero packet length. + nx_system_initialize.c Make sure this service cannot invoked more than once. + Created destination table MUTEX. + nx_tcp.h Cleaned up the logic to get SYN packet size. + nx_user.h Added NX_DISABLE_ICMPV4_ERROR_MESSAGE configuration option + nx_tcp_packet_process.c Fixed check for multicast source address. + nx_tcp_socket_delete.c Fixed socket state check. + nx_tcp_socket_disconnect.c Optimized the logic for checking wait_option. + nx_tcp_socket_receive.c Suspended the send request when the connection is in progress. + nx_tcp_socket_retransmit.c Fixed initial CWND value for fast recovery. + nx_tcp_socket_send_internal.c Fixed a bug that empty segment was sent when data append failed. + Fixed a bug of endless loop in packet queue traverse. + Fixed the alignment of chained packet. + Suspended the send request when the connection is in progress. + nx_tcp_socket_state_ack_check.c Fixed the calculation of TCP payload when packet + was not released by driver. + Fixed the check for immediately retransmission. + nx_tcp_socket_state_data_check.c Fixed NULL pointer access. + nx_tcp_socket_state_syn_received.c Optimized the logic for checking acknowledgment number. + nxd_icmp_ping.c Removed duplicated error check. + nxd_icmp_source_ping.c Removed duplicated error check. + nxd_ipv6_disable.c Deleted ND cache added to current IP only. + Protected ND cache process by mutex. + nxd_ipv6_interface_find.c Fixed a bug that destination address is one of + the local IPv6 addresses. + nxd_tcp_client_socket_connect.c Cleaned up the logic to get SYN packet size. + nxde_ip_raw_packet_send.c Removed unnecessary check. The return value of + _nxd_ip_raw_packet_source_send is always NX_SUCCESS. + nxe_ip_raw_packet_source_send.c Removed unnecessary check. The return value of + _nx_ip_raw_packet_source_send is always NX_SUCCESS. + + +02/22/2016 NetX Duo generic code version 5.9. This release includes the + following major features: + + Files are modified to fix compiler warnings: + demo_netx_duo_multihome_tcp.c + demo_netx_duo_multihome_udp.c + demo_netx_duo_tcp.c + demo_netx_duo_udp.c + nx_api.h + nx_icmpv4_packet_process.c + nx_icmpv6_DAD_failure.c + nx_icmpv6_dest_table_add.c + nx_icmpv6_dest_table_find.c + nx_icmpv6_destination_table_periodic_update.c + nx_icmpv6_packet_process.c + nx_icmpv6_process_echo_reply.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_na.c + nx_icmpv6_process_ns.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_rs.c + nx_ip_auxiliary_packet_pool_set.c + nx_ip_checksum_compute.c + nx_ip_dispatch_process.c + nx_ip_driver_deferred_enable.c + nx_ip_driver_deferred_receive.c + nx_ip_driver_packet_send.c + nx_ip_forward_packet_process.c + nx_ip_fragment_assembly.c + nx_ip_fragment_disable.c + nx_ip_fragment_enable.c + nx_ip_interface_capability_get.c + nx_ip_interface_capability_set.c + nx_ip_max_payload_size_find.c + nx_ip_packet_checksum_compute.c + nx_ip_packet_send.c + nx_ip_raw_packet_filter_set.c + nx_ip_raw_packet_processing.c + nx_ip_static_route_add.c + nx_ip_static_route_delete.c + nx_ipv6_fragment_process.c + nx_ipv6_option_error.c + nx_ipv6_packet_send.c + nx_ipv6_process_fragment_option.c + nx_ipv6_process_hop_by_hop_option.c + nx_ipv6_process_routing_option.c + nx_ipv6_util.c + nx_nd_cache_delete_internal.c + nx_packet_copy.c + nx_packet_data_append.c + nx_packet_pool_low_watermark_set.c + nx_tcp_cleanup_deferred.c + nx_tcp_periodic_processing.c + nx_tcp_socket_disconnect_complete_notify.c + nx_tcp_socket_establish_notify.c + nx_tcp_socket_queue_depth_notify_set.c + nx_tcp_socket_receive_queue_max_set.c + nx_tcp_socket_timed_wait_callback.c + nx_udp_socket_receive.c + nxd_icmpv6_ra_flag_callback_set.c + nxd_ipv6_address_change_notify.c + nxd_ipv6_address_delete.c + nxd_ipv6_address_get.c + nxd_ipv6_address_set.c + nxd_ipv6_default_router_add.c + nxd_ipv6_default_router_delete.c + nxd_ipv6_default_router_entry_get.c + nxd_ipv6_default_router_get.c + nxd_ipv6_default_router_number_of_entries_get.c + nxd_ipv6_disable.c + nxd_ipv6_enable.c + nxd_ipv6_multicast_interface_join.c + nxd_ipv6_multicast_interface_leave.c + nxd_ipv6_stateless_address_autoconfig_disable.c + nxd_ipv6_stateless_address_autoconfig_enable.c + nxd_nd_cache_entry_delete.c + nxd_nd_cache_entry_set.c + nxd_nd_cache_hardware_address_find.c + nxd_nd_cache_invalidate.c + nxd_nd_cache_invalidate_internal.c + nxd_nd_cache_ip_address_find.c + nxd_udp_socket_send.c + nxde_icmpv6_ra_flag_callback_set.c + nxde_ipv6_address_change_notify.c + nxde_ipv6_address_delete.c + nxde_ipv6_address_get.c + nxde_ipv6_address_set.c + nxde_ipv6_default_router_add.c + nxde_ipv6_default_router_delete.c + nxde_ipv6_default_router_entry_get.c + nxde_ipv6_default_router_get.c + nxde_ipv6_default_router_number_of_entries_get.c + nxde_ipv6_disable.c + nxde_ipv6_enable.c + nxde_ipv6_multicast_interface_join.c + nxde_ipv6_multicast_interface_leave.c + nxde_ipv6_stateless_address_autoconfig_disable.c + nxde_ipv6_stateless_address_autoconfig_enable.c + nxde_nd_cache_entry_delete.c + nxde_nd_cache_entry_set.c + nxde_nd_cache_hardware_address_find.c + nxde_nd_cache_invalidate.c + nxde_nd_cache_ip_address_find.c + nxe_ip_auxiliary_packet_pool_set.c + nxe_ip_interface_capability_get.c + nxe_ip_interface_capability_set.c + nxe_ip_raw_packet_filter_set.c + nxe_ip_static_route_add.c + nxe_ip_static_route_delete.c + nxe_packet_pool_low_watermark_set.c + nxe_tcp_socket_disconnect_complete_notify.c + nxe_tcp_socket_establish_notify.c + nxe_tcp_socket_queue_depth_notify_set.c + nxe_tcp_socket_receive_queue_max_set.c + nxe_tcp_socket_timed_wait_callback.c + + Files are modified to return NX_NOT_SUPPORTED when related compiler option is not enabled: + nx_api.h + nx_icmp.h + nx_icmpv6.h + nx_ipv6.h + nx_nd_cache.h + nx_packet.h + nx_tcp.h + nx_tcp_socket_disconnect_complete_notify.c + nx_tcp_socket_establish_notify.c + nx_tcp_socket_queue_depth_notify_set.c + nx_tcp_socket_timed_wait_callback.c + nxd_icmpv6_ra_flag_callback_set.c + nxd_ipv6_address_change_notify.c + nxd_ipv6_address_delete.c + nxd_ipv6_address_get.c + nxd_ipv6_address_set.c + nxd_ipv6_default_router_add.c + nxd_ipv6_default_router_delete.c + nxd_ipv6_default_router_entry_get.c + nxd_ipv6_default_router_get.c + nxd_ipv6_default_router_number_of_entries_get.c + nxd_ipv6_multicast_interface_join.c + nxd_ipv6_multicast_interface_leave.c + nxd_ipv6_stateless_address_autoconfig_disable.c + nxd_ipv6_stateless_address_autoconfig_enable.c + nxd_nd_cache_entry_delete.c + nxd_nd_cache_entry_set.c + nxd_nd_cache_hardware_address_find.c + nxd_nd_cache_invalidate.c + nxd_nd_cache_ip_address_find.c + nxde_icmpv6_ra_flag_callback_set.c + nxde_ipv6_address_delete.c + nxde_ipv6_address_get.c + nxde_ipv6_address_set.c + nxde_ipv6_default_router_add.c + nxde_ipv6_default_router_delete.c + nxde_ipv6_default_router_entry_get.c + nxde_ipv6_default_router_get.c + nxde_ipv6_default_router_number_of_entries_get.c + nxde_ipv6_stateless_address_autoconfig_disable.c + nxde_ipv6_stateless_address_autoconfig_enable.c + nxde_nd_cache_entry_delete.c + nxde_nd_cache_entry_set.c + nxde_nd_cache_hardware_address_find.c + nxde_nd_cache_invalidate.c + nxde_nd_cache_ip_address_find.c + nxe_ip_auxiliary_packet_pool_set.c + nxe_tcp_socket_disconnect_complete_notify.c + nxe_tcp_socket_establish_notify.c + nxe_tcp_socket_queue_depth_notify_set.c + nxe_tcp_socket_timed_wait_callback.c + + Files are modified to fix address index check for loopback interface: + nxde_icmp_source_ping.c + nxde_ip_raw_packet_source_send.c + nxde_udp_socket_source_send.c + nxe_ip_raw_packet_source_send.c + nxe_udp_socket_source_send.c + + Files are modified to support IP packet filter: + nx_api.h + nx_ip_packet_receive.c + nx_ip_packet_send.c + nx_ipv6_packet_send.c + + Files are added or modified to set TCP receive queue length: + nx_api.h + nx_tcp.h + nx_tcp_socket_create.c + nx_tcp_socket_receive_queue_max_set.c + nx_tcp_socket_state_data_check.c + nx_user.h + nxe_tcp_socket_receive_queue_max_set.c + + Files are added or modified to support packet pool low watermark: + nx_api.h + nx_packet.h + nx_packet_pool_low_watermark_set.c + nx_tcp_socket_state_data_check.c + nx_udp_packet_receive.c + nx_user.h + nxe_packet_pool_low_watermark_set.c + nxe_tcp_socket_receive_queue_max_set.c + + Files are modified to add mutex protection: + nx_rarp_disable.c + nx_tcp_socket_queue_depth_notify_set.c + nx_tcp_socket_receive_notify.c + nx_tcp_socket_timed_wait_callback.c + nx_tcp_socket_window_update_notify_set.c + + Files are added or modified to fix source selection for icmpv4 ping: + nx_icmpv4.h + nx_icmp_interface_ping.c + nx_icmp_ping.c + nxd_icmp_source_ping.c + + Files are modified to support ASSERT macro: + nx_api.h + nx_icmpv6_dest_table_add.c + nx_ip_header_add.c + nx_ip_driver_packet_send.c + nx_ipv6_packet_send.c + nxd_ipv6_destination_table_find_next_hop.c + nxd_ipv6_interface_find.c + + Files are added or modified to support NewReno algorithm: + nx_api.h + nx_tcp.h + nx_tcp_socket_retransmit.c + nx_tcp_fast_periodic_processing.c + nx_tcp_packet_send_syn.c + nx_tcp_socket_block_cleanup.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_state_transmit_check.c + nx_tcp_socket_state_syn_sent.c + nx_tcp_socket_state_syn_received.c + + Files are added or modified to optimize the logic of sending TCP control packet: + nx_tcp_packet_send_control.c + nx_tcp_packet_send_syn.c + nx_tcp_packet_send_ack.c + nx_tcp_packet_send_fin.c + nx_tcp_packet_send_rst.c + + Files are deleted due to they are not used: + nxe_igmp_multicast_interface_join_internal.c + nxe_igmp_multicast_interface_leave_internal.c + + Files are modified to unify the definition of ThreadX ticks per second, use TX_TIMER_TICKS_PER_SECOND to derive NX_IP_PERIODIC_RATE: + demo_netx_duo_multihome_tcp.c + demo_netx_duo_multihome_udp.c + demo_netx_duo_tcp.c + demo_netx_duo_udp.c + nx_api.h + nx_icmpv6_dest_table_add.c + nx_icmpv6_dest_table_find.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_icmpv6_validate_ra.c + nx_ip_create.c + nx_ip_fast_periodic_timer_entry.c + nx_system.h + nx_system_initialize.c + nx_tcp.h + nx_tcp_enable.c + nx_user.h + nxd_ipv6_disable.c + nxd_ipv6_enable.c + + Files are deleted or modified to simplified the logic of extracting the prefix: + nx_ipv6_address_find_prefix.c + nx_ipv6.h + nx_ipv6_prefix_list_delete_entry.c + + Files are modified to correct the IP Identification field for retransmitted packet: + nx_api.h + nx_ip_header_add.c + nx_packet_allocate.c + nx_packet_release.c + nx_tcp_socket_retransmit.c + + Files are added or modified to fix zero window probe packet: + nx_api.h + nx_tcp.h + nx_tcp_fast_periodic_processing.c + nx_tcp_packet_send_probe.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_state_ack_check.c + + Files are modified to correct the sequence and ACK number check for TCP disconnect process: + nx_api.h + nx_tcp.h + nx_tcp_server_socket_accept.c + nx_tcp_socket_packet_process.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_fin_wait1.c + nx_tcp_socket_state_fin_wait2.c + nx_tcp_client_socket_connect.c + + Files are modified to pass PC-Lint check: + nx_icmp.h + nx_icmpv6.h + nx_ip.h + nx_ipv4.h + nx_ipv6.h + nx_ipv6_prefix_list_delete.c + nx_nd_cache.h + nx_udp.h + nxd_icmp_ping.c + nxd_icmp_source_ping.c + nxd_icmpv6_ra_flag_callback_set.c + nxd_ip_raw_packet_send.c + nxd_ipv6_address_change_notify.c + nxd_ipv6_address_set.c + nxd_ipv6_default_router_add_internal.c + nxd_ipv6_destination_table_find_next_hop.c + nxd_ipv6_disable.c + nxd_ipv6_enable.c + nxd_ipv6_find_default_router_from_address.c + nxd_ipv6_find_max_prefix_length.c + nxd_ipv6_interface_find.c + nxd_ipv6_raw_packet_send_internal.c + nxd_ipv6_router_lookup.c + nxd_ipv6_search_onlink.c + nxd_ipv6_stateless_address_autoconfig_enable.c + nxd_nd_cache_entry_set.c + nxd_nd_cache_hardware_address_find.c + nxde_icmp_ping.c + nxde_icmp_source_ping.c + nxde_ip_raw_packet_send.c + nxde_ip_raw_packet_source_send.c + nxde_ipv6_address_delete.c + nxde_ipv6_default_router_delete.c + nxde_ipv6_multicast_interface_join.c + nxde_ipv6_multicast_interface_delete.c + nxde_nd_cache_entry_set.c + nxde_udp_socket_send.c + + + Files are modified to remove deprecated macro for IPv6 path MTU: + nx_icmpv6.h + nx_user.h + + + Files are added or modified to support packet debug feature: + nx_api.h + nx_arp_gratuitous_send.c + nx_arp_packet_deferred_receive.c + nx_arp_packet_send.c + nx_icmp_interface_ping6.c + nx_icmp_packet_process.c + nx_icmp_packet_receive.c + nx_icmp_ping.c + nx_icmpv4_packet_process.c + nx_icmpv6_packet_process.c + nx_icmpv6_process_echo_reply.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_na.c + nx_icmpv6_process_packet_too_big.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_rs.c + nx_igmp_multicast_interface_leave_internal.c + nx_igmp_packet_process.c + nx_igmp_packet_receive.c + nx_igmp_periodic_processing.c + nx_ip_dispatch_process.c + nx_ip_driver_packet_send.c + nx_ip_fragment_forward_packet.c + nx_ip_fragment_packet.c + nx_ip_packet_deferred_receive.c + nx_ip_packet_receive.c + nx_ip_packet_send.c + nx_ip_raw_packet_processing.c + nx_ip_raw_packet_send.c + nx_ip_raw_packet_source_send.c + nx_ip_thread_entry.c + nx_ipv4_packet_receive.c + nx_ipv6_fragment_process.c + nx_ipv6_packet_receive.c + nx_ipv6_process_fragment_option.c + nx_ipv6_process_hop_by_hop_option.c + nx_ipv6_process_routing_option.c + nx_packet.h + nx_packet_allocate.c + nx_packet_copy.c + nx_packet_data_append.c + nx_packet_debug_info_get.c + nx_packet_pool_create.c + nx_packet_release.c + nx_packet_transmit_release.c + nx_rarp_packet_deferred_receive.c + nx_rarp_packet_send.c + nx_tcp_packet_process.c + nx_tcp_packet_receive.c + nx_tcp_queue_process.c + nx_tcp_socket_packet_process.c + nx_tcp_socket_send.c + nx_tcp_socket_send_internal.c + nx_udp_packet_receive.c + nx_user.h + nxd_ip_raw_packet_source_send.c + nxd_udp_socket_send.c + + + Files are modified to support packet alignment for both header and payload: + nx_api.h + nx_packet_pool_create.c + nxe_packet_pool_create.c + nx_user.h + + Files are added or modified to ensure only one ARP entry point to specific address and optimized the ARP queued packet sending: + nx_api.h + nx_arp.h + nx_arp_queue_send.c + nx_arp_dynamic_entry_set.c + nx_arp_entry_allocate.c + nx_arp_static_entry_create.c + nx_arp_static_entry_delete_internal.c + nx_arp_packet_receive.c + nx_ip_driver_packet_send.c + + Files are modified to send TCP reset message when receive an illegal TCP option: + nx_tcp.h + nx_tcp_packet_process.c + nx_tcp_server_socket_relisten.c + nx_tcp_mss_option_get.c + nx_tcp_window_scaling_option_get.c + nx_tcp_no_connection_reset.c + + Files are modified to support for TCP TIMED WAIT state: + nx_tcp.h + nx_tcp_enable.c + nxd_tcp_client_socket_connect.c + nx_tcp_fast_periodic_processing.c + nx_tcp_socket_state_fin_wait1.c + nx_tcp_socket_state_fin_wait2.c + nx_tcp_socket_state_closing.c + nx_tcp_socket_packet_process.c + + Files are modified to optimize the code for deleting transmission control block + nx_tcp.h + nx_tcp_fast_periodic_processing.c + nx_tcp_client_socket_unbind.c + nx_tcp_socket_block_cleanup.c + nx_tcp_socket_connection_reset.c + nx_tcp_socket_disconnection.c + nx_tcp_socket_state_last_ack.c + + Files are added or modified to support ICMPv4 error message: + nx_icmpv4.h + nx_icmpv4_packet_process.c + nx_icmpv4_process_echo_reply.c + nx_icmpv4_process_echo_request.c + nx_icmpv4_send_error_message.c + nx_ip_dispatch_process.c + nx_ip_fragment_timeout_check.c + nx_udp_packet_receive.c + + Files are added or modified to support IP Option processing: + nx_ipv4.h + nx_ipv4_packet_receive.c + nx_ipv4_option_process.c + + Files are modified to correct the reassembly time: + nx_api.h + nx_user.h + nx_ip_fragment_assembly.c + + Files are modified to optimize the code. + nx_ip_gateway_address_set.c + nx_ipv4.h + nx_nd_cache_add.c + nx_nd_cache_add_entry.c + nx_nd_cache_find_entry.c + nx_tcp_client_bind_cleanup.c + nx_tcp_connect_cleanup.c + nx_tcp_disconnect_cleanup.c + nx_tcp_receive_cleanup.c + nx_tcp_transmit_cleanup.c + nxd_ipv6_stateless_address_autoconfig_disable.c + nxd_ipv6_stateless_address_autoconfig_enable.c + nxd_nd_cache_ip_address_find.c + nxd_nd_cache_hardware_address_find.c + nxde_ipv6_stateless_address_autoconfig_disable.c + nxde_ipv6_stateless_address_autoconfig_enable.c + nxe_ip_gateway_address_set.c + nxe_ip_raw_packet_receive.c + nxe_ip_static_route_add.c + + Files are modified to assembled all the fragments before calling NAT service: + nx_api.h + nx_ip_fragment_assembly.c + nx_ipv4_packet_receive.c + + The following table contains mappings from legacy names to the new names developers + are encouraged to use for furture development work. For backward compatibility reasons, + legacy names are still maintained. Therefore existing projects and build systems are not + affected. + + + Legacy Names New Names + + NX_ARP_DISABLE_AUTO_ARP_ENTRY NX_DISABLE_ARP_AUTO_ENTRY + NX_DISABLE_ICMPv4_RX_CHECKSUM NX_DISABLE_ICMPV4_RX_CHECKSUM + NX_DISABLE_ICMPv4_TX_CHECKSUM NX_DISABLE_ICMPV4_TX_CHECKSUM + NX_DISABLE_ICMPv6_RX_CHECKSUM NX_DISABLE_ICMPV6_RX_CHECKSUM + NX_DISABLE_ICMPv6_TX_CHECKSUM NX_DISABLE_ICMPV6_TX_CHECKSUM + NX_DUAL_PACKET_POOL_ENABLE NX_ENABLE_DUAL_PACKET_POOL + NX_IPV6_ADDRESS_CHANGE_NOTIFY_ENABLE NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY + NX_IPV6_DISABLE_PURGE_UNUSED_CACHE_ENTRIES NX_DISABLE_IPV6_PURGE_UNUSED_CACHE_ENTRIES + NX_IPV6_MULTICAST_ENABLE NX_ENABLE_IPV6_MULTICAST + NX_TCP_ENABLE_KEEPALIVE NX_ENABLE_TCP_KEEPALIVE + NX_TCP_ENABLE_MSS_CHECK NX_ENABLE_TCP_MSS_CHECK + NX_TCP_ENABLE_WINDOW_SCALING NX_ENABLE_TCP_WINDOW_SCALING + NX_TCP_QUEUE_DEPTH_UPDATE_NOTIFY_ENABLE NX_ENABLE_TCP_QUEUE_DEPTH_UPDATE_NOTIFY + NXDUO_DESTINATION_TABLE_SIZE NX_IPV6_DESTINATION_TABLE_SIZE + NXDUO_DISABLE_ICMPV6_ERROR_MESSAGE NX_DISABLE_ICMPV6_ERROR_MESSAGE + NXDUO_DISABLE_ICMPV6_REDIRECT_PROCESS NX_DISABLE_ICMPV6_REDIRECT_PROCESS + NXDUO_DISABLE_ICMPV6_ROUTER_ADVERTISEMENT_PROCESS NX_DISABLE_ICMPV6_ROUTER_ADVERTISEMENT_PROCESS + NXDUO_DISABLE_ICMPV6_ROUTER_SOLICITATION NX_DISABLE_ICMPV6_ROUTER_SOLICITATION + NXDUO_DISABLE_DAD NX_DISABLE_IPV6_DAD + NXDUO_DUP_ADDR_DETECT_TRANSMITS NX_IPV6_DAD_TRANSMITS + NXDUO_ICMPV6_MAX_RTR_SOLICITATIONS NX_ICMPV6_MAX_RTR_SOLICITATIONS + NXDUO_ICMPV6_RTR_SOLICITATION_INTERVAL NX_ICMPV6_RTR_SOLICITATION_INTERVAL + NX_CRYPTO_MAX_IV_SIZE_IN_BITS (Moved into IPsec module) + + Files are modified to rename symbols: + + nx_api.h + nx_arp_gratuitous_send.c + nx_arp_packet_receive.c + nx_arp_packet_send.c + nx_icmp_interface_ping6.c + nx_icmp_interface_ping.c + nx_icmpv4_packet_process.c + nx_icmpv4_process_echo_request.c + nx_icmpv4_send_error_message.c + nx_icmpv6_DAD_failure.c + nx_icmpv6_destination_table_periodic_update.c + nx_icmpv6_dest_table_add.c + nx_icmpv6_dest_table_find.c + nx_icmpv6.h + nx_icmpv6_packet_process.c + nx_icmpv6_perform_DAD.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_na.c + nx_icmpv6_process_ns.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_rs.c + nx_icmpv6_validate_ra.c + nx_igmp_multicast_interface_leave_internal.c + nx_igmp_periodic_processing.c + nx_invalidate_destination_entry.c + nx_ip_auxiliary_packet_pool_set.c + nx_ip_create.c + nx_ip_dispatch_process.c + nx_ip_fragment_timeout_check.c + nx_ip_interface_attach.c + nx_ip_interface_detach.c + nx_ip_packet_receive.c + nx_ip_packet_send.c + nx_ip_thread_entry.c + nx_ipv6_option_error.c + nx_ipv6_packet_receive.c + nx_ipv6_packet_send.c + nx_ipv6_prefix_list_delete_entry.c + nx_ipv6_process_fragment_option.c + nx_ipv6_process_routing_option.c + nx_mld.h + nx_nd_cache_add_entry.c + nx_nd_cache_delete_internal.c + nx_packet.h + nx_packet_pool_low_watermark_set.c + nx_rarp_packet_send.c + nx_system.h + nx_system_initialize.c + nx_tcp.h + nx_tcp_packet_process.c + nx_tcp_packet_send_control.c + nx_tcp_packet_send_syn.c + nx_tcp_periodic_processing.c + nx_tcp_server_socket_relisten.c + nx_tcp_socket_create.c + nx_tcp_socket_disconnect.c + nx_tcp_socket_queue_depth_notify_set.c + nx_tcp_socket_receive_queue_max_set.c + nx_tcp_socket_retransmit.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_data_check.c + nx_tcp_socket_state_established.c + nx_tcp_socket_state_syn_received.c + nx_tcp_socket_state_syn_sent.c + nx_tcp_window_scaling_option_get.c + nx_udp_packet_receive.c + nx_user.h + nxde_ipv6_address_change_notify.c + nxde_ipv6_multicast_interface_join.c + nxde_ipv6_multicast_interface_leave.c + nxd_icmp_enable.c + nxd_ipv6_address_change_notify.c + nxd_ipv6_address_delete.c + nxd_ipv6_address_set.c + nxd_ipv6_destination_table_find_next_hop.c + nxd_ipv6_disable.c + nxd_ipv6_enable.c + nxd_ipv6_interface_find.c + nxd_ipv6_multicast_interface_join.c + nxd_ipv6_multicast_interface_leave.c + nxd_ipv6_prefix_router_timer_tick.c + nxd_ipv6_router_solicitation_check.c + nxe_packet_pool_low_watermark_set.c + nxe_tcp_socket_create.c + nxe_tcp_socket_queue_depth_notify_set.c + nxe_tcp_socket_receive_queue_max_set.c + + + + Other modified files: + nx_api.h Removed internal functions. + Fixed typo for API names of stateless address control. + Added a macro to disable warning of parameter not used. + nx_icmp_ping.h Optimized the data offset of request packet. + nx_icmp_interface_ping6.c Removed limitation of message size when sending echo request. + nx_icmpv6.h Updated the function name. + Removed unused argument of _nxd_ipv6_destination_table_find_next_hop. + nx_icmpv6_dest_table_add.c Fixed a bug when destination table was full, index of + array was out of bound. + nx_icmpv6_perform_DAD.c Updated the function name. + nx_icmpv6_DAD_clear_NDCache_entry.c Updated the function name and optimized the code. + nx_icmpv6_DAD_failure.c Renamed the argument name to make it sense. + nx_icmpv6_process_packet_too_big.c Fixed a bug that packet was not released. + nx_icmpv6_process_ra.c Fixed a bug that address was formed when prefix was link local. + Fixed the logic to find empty address entry. + Fixed retrans timer when it is 0. + nx_icmpv6_process_redirect.c Fixed return status check. Fixed endian of MTU. + nx_icmpv6_send_error_message.c Used wrong IPv6 address. + Fixed packet leak if IPsec SA disallows this packet. + Fixed multicast destination address check. + nx_icmpv6_send_queued_packets Optimized the logic for IPv6 fragment processing. + nx_icmpv6_send_rs.c Removed unreachable code. + nx_icmpv6_validate_neighbor_message.c Removed unused argument. + nx_icmpv6_validate_ra.c Removed unused argument. + nx_igmp_packet_process.c Optimized the logic of verifying checksum. + nx_igmp_periodic_process.c Removed useless code. + nx_ip_checksum_compute.c Fixed calculation for packet size that is only two bytes aligned. + nx_ip_create.c Removed the status check for TX API since internal call should be succeed. + nx_ip_deferred_link_status_process.c Removed cleanup logic when link was down. + nx_ip_delete.c Invalidated dynamic ARP entries and ND cache, + in case packets were queued. + nx_ip_dispatch_process.c Corrected length check for extension header. + Removed unreachable code. + nx_ip_driver_packet_send.c Added support for IPv4 link-local address + Optimized the logic for packet sending. + Added fragmentation check. + nx_ip_header_add.c Stored IP header for outgoing packet. + nx_ip_fragment_assembly.c Used the more recently arrived copy if fragments contain the same data. + Corrected the logic to find insert position for IPv6 fragments. + nx_ip_fragment_disable.c Removed unreachable code when NX_FRAGMENT_IMMEDIATE_ASSEMBLY is defined. + nx_ip_fragment_packet.c Removed unreachable code. + nx_ip_fragment_forward_packet.c Removed unreachable code. + nx_ip_forward_packet_process.c Added checks for link local address before forwarding. + nx_ip_interface_attach.c Fixed duplicate empty address. + nx_ip_interface_detach.c Simplified the logic to leave multicast group. + nx_ip_interface_status_check.c Checked driver code for NX_IP_LINK_ENABLED status. + Fixed the bug for wait_option. + nx_ip_packet_checksum_compute.c Removed code not used. Fixed offset when IPv4 header contained options. + Removed flag after IPv4 checksum calculated. + Fixed length calculation of IPv4 header. + nx_ip_packet_send.c Removed unreachable lines. + Initialized status value. + nx_ip_raw_packet_send.c Removed duplicate check for raw service enabled. + nx_ip_raw_packet_source_send.c Removed duplicate check for raw service enabled. + Optimized the code. + nx_ip_route_find.c Optimized search operation for loopback address. + Fixed a bug that loopback interface was used by multicast or broadcase address. + Added support for link-local address. + Verified whther or not routing address was reachable. + nx_ip_static_route_add.c Fixed a bug that mutex is not released before return. + nx_ip_status_check.c Removed duplicated code. + nx_ip_thread_entry.c Ensured the pointer function is valid before use. + nx_ipv4_packet_receive.c Fixed a bug in source check when address mapping is not needed. + nx_ipv6_fragment_process.c Fixed offset of fragment packets. + nx_ipv6_multicast_leave.c Removed unreachable code. + nx_ipv6_multicast_join.c Removed unreachable code. + nx_ipv6_option_error.c Removed duplicated check for function pointer. + nx_ipv6_packet_copy.c Fixed a bug that four extra bytes were incorrectly copied. + nx_ipv6_packet_send.c Removed fragment check when IPsec is disabled for PMTU, stored IP header for outgoing packet. + nx_ipv6_prefix_list_add_entry.c Fixed a bug that prefix was not sorted. + Removed unused argument. + nx_ipv6_prefix_list_delete_entry.c Optimized the logic to find address. + nx_ipv6_process_hop_by_hop_option.c Eliminated unreachable code. + nx_ipv6_util.c Removed unnecessary NULL check in IPv6_Address_Type. + nx_mld.h Cleaned up this file. + nx_packet_allocate.c Moved packet type check from _nxe_packet_allocate since + it is necessary when _nx_packet_allocate is called + by internal functions. + nx_packet_copy.c Copied the data of the first packet beginning at data starting position. + Fixed the bug for ip header pointer set. + nx_packet_pool_create.c Removed unreachable code. + nx_ram_network_driver.c Removed unused parameter in _nx_ram_network_driver_output. + Supported more commands. + nx_rarp_packet_receive.c Continued RARP when address mapping needed. + nx_tcp.h Defined the TCP minimum acceptable MSS. + Added missing TCP function declarations. + nx_tcp_client_socket_unbind.c Limited the socket state to closed only. + nx_tcp_fast_periodic_processing.c Modified the logic for zero window probe. + Updated ACK number and window size for retransmitted packet. + nx_tcp_packet_process.c Fixed invalid source address check. + Improved statistics of invalid packet. + Optimized the logic of processing RST packet for listen queue. + nx_tcp_periodic_processing.c Updated the retries to reach the max value. + nx_tcp_server_socket_accept.c Removed unreachable code. + nx_tcp_server_socket_unlisten.c Reset the socket state only when it was listening. + nx_tcp_socket_create.c Removed duplicated check for window size. + nx_tcp_socket_send_internal.c Modified the wait time. + Removed the TCP transmit suspended count limitation. + Modified to release IP mutex protection before a blocking call. + Replaced NX_NO_WAIT with the input wait_option in nx_packet_allocate, nx_packet_data_append. + Removed duplicated error check. + Optimized the logic of processing sending packet. + Fixed the alignment of subsequent packet in chain. + nx_tcp_socket_disconnect.c Removed check for transmit queue when connection was not established. + Called the cleanup routines after completed the tcp disconnected operation. + nx_tcp_socket_packet_process.c Removed the data check in CLOSE WAIT state. + Checked ACK for LAST ACK and CLOSING state. + Checked socket state before processing data. + Fixed a bug that the receive window can not recover. + nx_tcp_socket_receive.c Modified the logic for SWS avoidance algorithm. + nx_tcp_socket_state_ack_check.c Corrected the processing procedure for SYN/ACK bits. + Modified the logic to adjust congestion window during slow start and congestion avoidance. + Fixed a bug in ACK check logic if the packet was not transmitted by driver. + Stored IP header for outgoing packet. + nx_tcp_socket_state_closing.c Removed sending ACK message code if ACK did not acknowledge FIN. + nx_tcp_socket_state_data_check.c Fixed the ACKed packets in order. + Fixed the bug for updating receive window. + Trimmed the data that out of receive window. + Optimized the logic when a packet with old data is received. + Modified the logic for SWS avoidance algorithm. + nx_tcp_socket_state_established.c Removed unused parameter. + nx_tcp_socket_state_last_ack.c Removed sending ACK message code if ACK did not acknowledge FIN. + nx_tcp_socket_state_syn_sent.c Fixed sequence number for simultaneous connection. + Checked maximum value of window scale when it was set. + nx_tcp_socket_state_syn_received.c Updated tx_window_advertised value. + Checked maximum value of window scale when it was set. + Removed duplicated out of window check. + nx_tcp_window_scaling_option_get.c Limited the maximum value of window scale. + nx_nd_cache_init.c Removed the status check for TX API since internal call should be succeed. + nx_nd_cache_interface_entries_delete.c Removed duplicated deletion for destination table. + nx_tcp_packet_send_rst.c Modified reset ack number, sequence number and ACK bit according to incoming packet ACK bit. + nx_tcp_server_socket_relisten.c Released the protection before return. + nx_udp_packet_receive.c Removed duplicated check for function pointer. + nx_user.h Added ASSERT macros. Remvoed unused macros. + Added macros defined in nx_api.h but not in nx_user.h. + Sorted options by module. + nxd_ip_raw_packet_source_send.c Removed duplicate check for raw service enabled. + nxd_ipv6_address_delete.c Fixed a bug that if_index may be used before initialized. + nxd_ipv6_address_set.c Fixed a bug that mutex is not released before return. + Fixed link local duplicate address set. + nxd_ipv6_default_router_add_internal.c Returned error status when router table was full. + nxd_ipv6_default_router_delete.c Returned error status when router table was not found. + nxd_ipv6_default_router_entry_get.c Optimized logic comparing the interface. + nxd_ipv6_default_router_get.c Used the logic of _nxd_ipv6_default_router_entry_get. + nxd_ipv6_destination_table_find_next_hop.c Removed unused argument. + nxd_ipv6_disable.c Cleaned up ND_CACHE when ICMP was enabled. + nxd_ipv6_enable.c Corrected retransmit timer when it is zero. + nxd_ipv6_interface_find.c Used first up interface for link local multicast. + Fixed null pointer access. + nxd_nd_cache_entry_delete.c Removed duplicated deletion for destination table. + nxd_tcp_client_socket_connect.c Fixed the bug for address version check, updated the header size. + Fixed loopback destination. + Fixed the bug for socket state since it is updated in connect cleanup. + nxd_udp_socket_send.c Fixed statistics when IPv6 address was not valid. + nxde_ip_raw_packet_source_send.c Added the check for packet pointer. + nxde_ipv6_address_change_notify.c Checked calling thread. + nxde_ipv6_address_set.c Filtered address that was not unicast type. + nxde_udp_socket_send.c Fixed checking for header area of packet. + nxde_udp_socket_source_send.c Added the check for packet pointer. + nxe_arp_dynamic_entry_set.c Added the check for IP address. + nxe_arp_ip_address_find.c Added the check for invalid physical address. + nxe_arp_static_entry_create.c Added the check for invalid physical address. + Added the check for IP address. + nxe_arp_static_entry_delete.c Added the check for invalid physical address. + nxe_ip_create.c Added the priority check. + nxe_packet_allocate.c Moved packet type check to _nx_packet_allocate since + it is necessary when _nx_packet_allocate is called + by internal functions. + nxe_tcp_socket_create.c Checked window size when window scale was not enabled. + nxe_tcp_socket_send.c Fixed checking for header area of packet. + nxe_tcp_socket_disconnect_complete_notify.c Added the check for input parameters. + nxe_tcp_socket_establish_notify.c Added the check for input parameters. + nxe_tcp_socket_timed_wait_callback.c Added the check for input parameters. + nxe_udp_socket_send.c Fixed checking for header area of packet. + nxe_udp_socket_source_send.c Fixed checking for header area of packet. + + +01/12/2015 NetX Duo generic code version 5.8. This release includes the + following major features: + + + Files are modified to remove deprecated macro for IPv6 path MTU: + nx_icmpv6.h + nx_user.h + + + Files are added or modified to support ipv4 multicast feature: + nx_ipv4_multicast_interface_join.c + nx_ipv4_multicast_interface_leave.c + nxe_ipv4_multicast_interface_join.c + nxe_ipv4_multicast_interface_leave.c + + + Files are modified to fix compiler warnings: + nx_arp_packet_receive.c + nx_icmpv4_packet_process.c + nx_icmpv6.h + nx_icmpv6_dest_table_find.c + nx_icmpv6_packet_process.c + nx_icmpv6_process_echo_reply.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_na.c + nx_icmpv6_process_ns.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_queued_packets.c + nx_icmpv6_send_rs.c + nx_icmpv6_validate_neighbor_message.c + nx_icmpv6_validate_ra.c + nx_igmp_packet_process.c + nx_igmp_periodic_processing.c + nx_invalidate_destination_entry.c + nx_ip_checksum_compute.c + nx_ip_dispatch_process.c + nx_ip_forward_packet_process.c + nx_ip_fragment_assembly.c + nx_ip_fragment_packet.c + nx_ip_packet_receive.c + nx_ipv4_packet_receive.c + nx_ipv6_address_find_prefix.c + nx_ipv6_fragment_process.c + nx_ipv6_option_error.c + nx_ipv6_packet_copy.c + nx_ipv6_packet_receive.c + nx_ipv6_packet_send.c + nx_ipv6_prefix_list_add_entry.c + nx_ipv6_process_fragment_option.c + nx_ipv6_process_hop_by_hop_option.c + nx_ipv6_process_routing_option.c + nx_ipv6_util.c + nx_nd_cache_add.c + nx_nd_cache_add_entry.c + nx_nd_cache_find_entry.c + nx_packet_copy.c + nx_packet_data_append.c + nx_packet_data_retrieve.c + nx_tcp_no_connection_reset.c + nx_tcp_packet_process.c + nx_tcp_packet_send_ack.c + nx_tcp_packet_send_fin.c + nx_tcp_packet_send_rst.c + nx_tcp_packet_send_syn.c + nx_tcp_socket_bytes_available.c + nx_tcp_socket_mss_set.c + nx_tcp_socket_send.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_data_check.c + nx_udp_packet_receive.c + nx_udp_socket_receive.c + nxd_ipv6_address_set.c + nxd_ipv6_default_router_add_internal.c + nxd_ipv6_default_router_entry_get.c + nxd_ipv6_default_router_get.c + nxd_ipv6_destination_table_find_next_hop.c + nxd_ipv6_disable.c + nxd_ipv6_interface_find.c + nxd_ipv6_prefix_router_timer_tick.c + nxd_ipv6_search_onlink.c + nxd_nd_cache_hardware_address_find.c + nxd_nd_cache_ip_address_find.c + nxd_tcp_client_socket_connect.c + nxd_udp_socket_send.c + nxde_icmp_ping.c + nxde_icmp_source_ping.c + nxde_ip_raw_packet_send.c + nxe_ip_create.c + nxe_packet_pool_create.c + nxe_tcp_socket_create.c + nxe_tcp_socket_send.c + nxe_udp_socket_create.c + nxe_udp_socket_send.c + nxe_udp_source_extract.c + + + Files are modified to optimize NX_PACKET_STRUCT: + nx_api.h + nx_arp_dynamic_entry_set.c + nx_arp_packet_receive.c + nx_arp_packet_send.c + nx_icmp_interface_ping6.c + nx_icmp_ping.c + nx_icmpv4_packet_process.c + nx_icmpv6_packet_process.c + nx_icmpv6_process_echo_reply.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_na.c + nx_icmpv6_process_ns.c + nx_icmpv6_process_packet_too_big.c + nx_icmpv6_process_ra.c + nx_icmpv6_process_redirect.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_queued_packets.c + nx_icmpv6_send_rs.c + nx_igmp_packet_process.c + nx_igmp_periodic_processing.c + nx_ip_dispatch_process.c + nx_ip_forward_packet_process.c + nx_ip_fragment_assembly.c + nx_ip_fragment_disable.c + nx_ip_fragment_packet.c + nx_ip_fragment_timeout_check.c + nx_ip_packet_receive.c + nx_ip_packet_send.c + nx_ip_raw_packet_send.c + nx_ip_raw_packet_source_send.c + nx_ipv4.h + nx_ipv4_packet_receive.c + nx_ipv6.h + nx_ipv6_fragment_process.c + nx_ipv6_packet_receive.c + nx_ipv6_packet_send.c + nx_packet_allocate.c + nx_packet_copy.c + nx_packet_data_append.c + nx_packet_data_extract_offset.c + nx_packet_pool_create.c + nx_packet_release.c + nx_packet_transmit_release.c + nx_ram_network_driver.c + nx_rarp_packet_receive.c + nx_rarp_packet_send.c + nx_tcp_fast_periodic_processing.c + nx_tcp_packet_process.c + nx_tcp_packet_send_ack.c + nx_tcp_packet_send_fin.c + nx_tcp_packet_send_rst.c + nx_tcp_packet_send_syn.c + nx_tcp_server_socket_relisten.c + nx_tcp_socket_bytes_available.c + nx_tcp_socket_receive.c + nx_tcp_socket_receive_queue_flush.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_data_check.c + nx_tcp_socket_state_transmit_check.c + nx_tcp_socket_transmit_queue_flush.c + nx_udp_socket_receive.c + nx_udp_socket_source_send.c + nxd_ip_raw_packet_source_send.c + nxd_ipv6_raw_packet_send_internal.c + nxd_udp_packet_info_extract.c + nxd_udp_socket_send.c + nxd_udp_socket_source_send.c + nxde_udp_packet_info_extract.c + nxde_udp_socket_send.c + nxe_ip_raw_packet_send.c + nxe_ip_raw_packet_source_send.c + nxe_tcp_socket_send.c + nxe_udp_packet_info_extract.c + nxe_udp_socket_send.c + nxe_udp_socket_source_send.c + + + Files are modified to support the dual packet pool feature: + nx_api.h + nx_arp_gratuitous_send.c + nx_arp_packet_send.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_rs.c + nx_igmp_periodic_processing.c + nx_ip_create.c + nx_ip_auxiliary_packet_pool_set.c + nx_rarp_packet_send.c + nx_tcp_packet_send_ack.c + nx_tcp_packet_send_fin.c + nx_tcp_packet_send_rst.c + nx_tcp_packet_send_syn.c + nx_user.h + nxe_ip_auxiliary_packet_pool_set.c + + + Files are modified to optimize NX_UDP_SOCKET_STRUCT: + nx_api.h + nx_udp_socket_create.c + nxd_udp_socket_send.c + + + Files are added or modified to support the link status change feature: + nx_api.h + nx_arp_interface_entries_delete.c + nx_icmpv6.h + nx_ip.h + nx_ip_deferred_link_status_process.c + nx_ip_driver_link_status_event.c + nx_ip_link_status_change_notify_set.c + nx_ip_thread_entry.c + nx_nd_cache_interface_entries_delete.c + nxe_ip_link_status_change_notify_set.c + + + Files are added or modified in order to fact out the IPv4 packet transmit process: + nx_ip_driver_packet_send.c + nx_ip_header_add.c + nx_ip_packet_send.c + + + Files are modified to consolidate IGMP-related data structure in the IP instance: + nx_api.h + nx_igmp_multicast_check.c + nx_igmp_packet_process.c + nx_igmp_periodic_processing.c + nx_ip_packet_send.c + + + Files are added or modified to support the simple IPv4 routing and the NAT feature: + nx_api.h + nx_icmpv4_packet_process.c + nx_ip_forward_packet_process.c + nx_ip_fragment_forward_packet.c + nx_ip_packet_send.c + nx_ipv4_packet_receive.c + nx_tcp_free_port_find.c + nx_tcp_client_socket_bind + nx_tcp_no_connection_reset.c + nx_tcp_packet_process.c + nx_tcp_server_socket_listen + nx_tcp_server_socket_relisten.c + nx_udp_free_port_find.c + nx_udp_socket_bind.c + nx_user.h + + + Files are modified to support user defined random function: + nx_api.h + + + Files are modified to support the router advertisement flag callback feature: + nx_api.h + nx_icmpv6.h + nx_icmpv6_process_ra.c + nxd_icmpv6_ra_flag_callback_set.c + nxde_icmpv6_ra_flag_callback_set.c + + + Files are modified to support the ARP conflict defend feature: + nx_api.h + nx_arp_packet_receive.c + nx_arp_periodic_update.c + nx_ip_address_set.c + nx_ip_interface_address_set.c + nx_user.h + + + Files are added or modified to optimized the logic for ARP dynamic entry deletion: + nx_arp_dynamic_entries_invalidate.c + nx_arp_dynamic_entry_delete.c + nx_arp_entry_allocate.c + nx_arp_entry_delete.c + nxe_arp_entry_delete.c + nx_arp_static_entry_delete.c + nx_arp_static_entry_delete_internal.c + nx_ip_create.c + + + Files are added or modified to support IPv4 multicast join and leave feature: + nx_igmp.h + nx_igmp_multicast_interface_join.c + nx_igmp_multicast_interface_join_internal.c + nx_igmp_multicast_interface_leave.c + nx_igmp_multicast_interface_leave_internal.c + nx_igmp_multicast_join.c + nx_igmp_multicast_leave.c + nx_igmp_packet_process.c + nx_igmp_periodic_processing.c + nxe_igmp_multicast_interface_join_internal.c + nxe_igmp_multicast_interface_leave.c + nxe_igmp_multicast_interface_leave_internal.c + + + Files are modified to support the router alert feature: + nx_igmp_periodic_processing.c + nx_ip_fragment_packet.c + nx_ip_packet_send.c + nx_ipv4.h + + + Other modified files: + nx_api.h Added new APIs for ipv4 multicast and interface detach, added definition of reassembly + added definition of reassembly time, added new service nx_ip_gateway_address_clear, + removed duplicate declarations, mapped the old APIs to new APIs, fixed a bug that + nx_ipv4_packet_receive is mapped to _nx_igmp_multicast_leave_internal which is nonexistent. + nx_arp.h Added new APIs for ARP dynamic entry delete, static entry delete internal and interface entries + delete, added ARP defend deature. + nx_arp_packet_receive.c Fixed that packet is used after released, + added a feature that responds to a conflict GARP packet, + added an ARP man in the middle detection feature (NX_ARP_MAC_CHANGE_NOTIFICATION_ENABLE), + blocked adding entries to ARP cache with zero sender IP address, + prevent an ARP request matching an ARP entry sender address to change the mac address. + nx_arp_static_entry_create.c Fixed a bug that interface is not initialized before used. + nx_icmp_interface_ping6.c Fixed a bug for sequence when nx_ip_icmp_sequence is greater than 65535. + nx_icmpv4_packet_process.c Fixed checksum zero for echo reply packet. + nx_icmpv6_DAD_failure.c Fixed a bug that address was not removed from interface. + nx_icmpv6_perform_DAD.c Optimized process logic. + nx_icmpv6_send_error_message.c Fixed endianness of the offending packet, fixed handling multicast packet, + added logic to ensure data to copy does not exceed the ICMPv6 packet boundary. + nx_icmpv6_send_queued_packets.c Fixed the bug for unspecified address check. + Cleaned up the nd_entry after fragment processing. + nx_icmpv6_packet_process Modified the logic of checksum calculation. + nx_icmpv6_dest_table_add.c Protected cache with mutex nx_nd_cache_protection. + nx_icmpv6_process_redirect.c Protected cache with mutex nx_nd_cache_protection. + nx_ip.h Added new service nx_ip_gateway_clear, + added function to compute checksum for fragments, + nx_ipv4.h Added new service nx_ip_gatewar_clear. + nx_ip_create.c Supported loopback interface capability, + nx_ip_checksum_compute.c Optimized the logic. + fixed a bug when the priority of the calling thread is lower than IP thread. + nx_ip_fragment_assembly.c Added definition of reassembly time, fixed a bug in fragment queue. + nx_ip_fragment_packet.c Fixed checksum calculation when fragment is performed, + copied interface from header packet, fixed size of each fragment, + fixed a bug that NX_DISABLE_IP_TX_CHECKSUM option was ignored. + nx_ip_fragment_timeout_check.c Fixed the endian of offset flag before sending ICMPv6 error message. + Fixed a problem with reset of the tail fragment. + Fixed an error for reconnecting around a dropped fragment. + nx_ip_gateway_address_set.c Modified the logic to disallow a zero IP address. + nx_ip_packet_receive.c Added packet drop statisics for invalid packet. + nx_ip_packet_send.c Fixed destination address for non local network, + fixed a bug in loopback interface processing, + optimized the logic, + nx_ip_route_find.c Fixed a bug in loopback interface processing, + skipped interface which is down when finding route and gateway. + nx_ip_raw_packet_processing.c Fixed a bug that interrupt is not restored when no thread waiting for packets. + nx_ip_static_route_add.c Fixed a bug that route table may overflow, + added interface record when shifting route entries, + fixed a bug that unsigned number overflows. + nx_ip_static_route_delete.c Added interface record when shifting route entries. + nx_ip_max_payload_size_find.c Fixed a bug that src_address was set incorrectly, + removed unnecessary check for NULL pointer of IPv6 address. + nx_ipv4_packet_receive.c Supported processing fragmentation immediately, + supported checking for source IP address. + added a feature that receive unicast DHCP message. + nx_ipv6_fragment_process.c Fixed checksum calculation when fragment is performed, + used the same packet pool for original packet and fragmentations. + Increased the IP packet and bytes sent count. + nx_ipv6_packet_copy.c Fixed copy length check for destination packet. + nx_ipv6_packet_send.c Fixed checksum calculation when fragment is performed, optimized the logic. + nx_ipv6_prefix_list_delete_entry.c + Fixed IPv6 address when leave multicast group. + nx_ipv6_process_fragment_option.c Supported processing fragmentation immediately, + fixed the endian of offset flag before sending ICMPv6 error message. + nxd_ip_raw_packet_source_send.c Fixed source address selection for IPv6. + nxd_ipv6_address_set.c Fixed duplicate address set, fixed a bug when ip_address is null. + nxd_ipv6_default_router_add_internal.c + Checked router address whether it is reachable. + nxd_ipv6_default_router_get.c Got index from interface. + nxd_ipv6_default_router_number_of_entries_get.c + Got index from interface. + nxd_ipv6_disable.c Supported loopback address. Fixed a compiler error. + nxd_ipv6_enable.c Supported loopback address. + nxd_ipv6_interface_find.c Fixed return status when there is no address in interface, + supported loopback address, checked interface link status. + nxd_ipv6_raw_packet_send_internal.c + Fixed source address selection for IPv6. + nxd_ipv6_stateless_address_autoconfig_enable.c + Reset the solicitation count. + nxd_ipv6_stateless_address_autoconfig_disable.c + Reset the solicitation count. + nxd_ipv6_multicast_interafce_leave.c + Fixed the bug that return success status when find the same entry. + nx_nd_cache.h Updated time of ND cache to RFC recommended values. + nx_nd_cache_add.c Protected cache with mutex nx_nd_cache_protection. + nx_nd_cache_find_entry.c Removed the mutex release that is not necessary. + nx_nd_cache_find_entry_by_mac_addr.c + Fixed a bug that check the interface pointer before use. + nxd_nd_cache_entry_delete.c Fixed a bug that mutex is not released before return. + nx_packet_copy.c Removed the size check to avoid failure to copy for chain packet. + nx_packet_data_extract_offset.c Used memcpy to optmize data copy. + nx_packet_data_retrieve.c Used memcpy to optmize data copy. + nx_packet_data_append.c Fixed a bug that releases already released packet. + nx_packet_pool_create.c Cleared pool structure before used. + nx_tcp_mss_option_get.c Fixed endless loop when option length is not set. + nx_tcp_packet_process.c Checked source address for syn packets that are queued. + nx_tcp_server_socket_relisten.c Fixed a bug that syn_received_notify was not called. + nx_tcp_socket_delete.c Not allowed to delete before resources are cleaned. + nx_tcp_socket_packet_process.c Fixed a bug ACKs, URGs, RSTs should be processed even sequence + is out of window. + nx_tcp_socket_send.c: Moved process logic to internal function. + nx_tcp_socket_send_internal.c Fixed a bug when socket is not connected, supported + to send small segmentation when length of packet is less than window size. + nx_tcp_socket_state_ack_check.c Fixed cwnd calculation. Fixed window size when ACK is duplicated. + nx_tcp_socket_state_data_check.c Supported to limit the number of packets that are out of order. + nx_tcp_socket_state_transmit_check.c + Moved logic when window size is non zero to send internal function. + nx_tcp_transmit_cleanup.c Removed adjusting sequence since packet in queue would + never contain TCP header. + nx_user.h Added definition for IP reassembly time, + added symbol that allow IP fragment reassemble immediately, + updated time of ND cache to RFC recommended values, + added source address check for incoming packet, + supported to limit the number of packets that are out of order. + nx_udp_packet_receive.c Fixed the endian of UDP header before sending ICMPv6 error message. + nx_udp_socket_delete.c Removed error checking that has been checked in nxe. + nx_udp_socket_receive.c Set packet pointer to NULL if no packet was available. + Removed special process of all ones checksum. + nxd_udp_socket_send.c Fixed source address selection for IPv6. + nxe_icmp_interface_ping6.c Checked interface validity. + nxde_icmp_source_ping.c Checked interface validity. + nxe_igmp_multicast_interface_join.c + Fixed the bug for IP protectio operation. + nxe_ip_gateway_address_set.c + Added the interface status check. + nxe_ip_interface_attach.c Modified invalid IP address check. + nxe_ip_interface_physical_address_get.c + Fixed a dead recursive call bug. + nxe_ip_interface_status_check.c Added interface validation checking. + nxde_ip_raw_packet_source_send.c Fixed address_index check. + nxde_ipv6_stateless_address_autoconfig_enable.c + Modified the comment and fixed the bug. + nxde_ipv6_stateless_address_autoconfig_disable.c + Modified the comment and fixed the bug. + nxde_ipv6_multicast_interface_leave.c + Modified the comment and fixed the bug. + nxde_ipv6_multicast_interface_join.c + Modified the comment and fixed the bug. + nxde_ipv6_default_router_number_of_entries_get.c + Modified the comment and fixed the bug. + nxde_ipv6_default_router_get.c + Modified the comment and fixed the bug. + nxde_ipv6_default_router_entry_get.c + Modified the comment and fixed the bug. + nxde_ipv6_address_delete.c + Modified the comment and fixed the bug. + nxde_nd_cache_entry_set Added the ID check for IP instance. + nxe_packet_release.c Modified the return value. + nxe_packet_transmit_release.c Modified the return value. + nxe_tcp_client_socket_connect.c Added server address check, + nxe_tcp_socket_queue_depth_notify_set.c + Added input parameters check, + nxe_tcp_socket_receive_notify.c Added input parameters check, + nxe_tcp_socket_transmit_configure.c + Added tcp feature check, + nxe_tcp_socket_window_update_notify_set.c + Added input parameters check, + nxe_udp_socket_source_send.c Improved the error checking logic. + nx_ram_network_driver.c Received special MAC address for IPv6 multicast address, + Correctly set the next IP. + + Files added: + nx_ip_gateway_address_clear.c + nx_ip_interface_detach.c + nx_ip_packet_checksum_compute.c + nxe_ip_gateway_address_clear.c + nxe_ip_interface_detach.c + + + + + +01/31/2013 NetX Duo generic code version 5.7. This release includes the + following major features: + + + Files are modified to allow conditional compilation for IP fragmentation support: + nx_arp_dynamic_entry_set.c + nx_arp_packet_receive.c + nx_ip_fragment_disable.c + nx_ip_fragment_enable.c + nx_ip_fragment_packet.c + nx_ip_fragment_timeout_check.c + nx_ip_info_get.c + nx_ip_packet_send.c + nx_ipv6_packet_send.c + nx_ipv6_process_fragment_option.c + + + Files are added or modified to support the interface capability feature: + nx_icmp_interface_ping6.c + nx_icmp_ping.c + nx_icmpv4_packet_process.c + nx_icmpv6_packet_process.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_ns.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_rs.c + nx_igmp_multicast_leave.c + nx_igmp_packet_process.c + nx_igmp_periodic_processing.c + nx_ip_checksum_compute.c + nx_ip_interface_capability_get.c + nx_ip_interface_capability_set.c + nx_ip_fragment_packet.c + nx_ip_packet_send.c + nx_ip_thread_entry.c + nx_ipv4_packet_receive.c + nx_ipv6_packet_send.c + nx_packet_allocate.c + nx_packet_copy.c + nx_packet_release.c + nx_tcp_packet_process.c + nx_tcp_packet_send_fin.c + nx_tcp_packet_send_rst.c + nx_tcp_packet_send_syn.c + nx_tcp_socket_send_internal.c + nx_udp_socket_receive.c + nxd_udp_socket_send.c + nxe_ip_interface_capability_get.c + nxe_ip_interface_capability_set.c + + + Files are modified to allow the chained packet feature to be removed: + nx_packet_allocate.c + nx_packet_copy.c + nx_packet_data_append.c + nx_packet_data_extract_offset.c + nx_packet_data_retrieve.c + nx_packet_release.c + + + Files are added or modified to support the IPv6 address change notify feature: + nx_icmpv6_DAD_failure.c + nx_icmpv6_perform_DAD.c + nx_icmpv6_process_ra.c + nx_ipv6_prefix_list_delete.c + nx_ipv6_prefix_list_delete_entry.c + nxd_ipv6_address_change_notify.c + nxd_ipv6_address_delete.c + nxd_ipv6_address_set.c + nxde_ipv6_address_change_notify.c + + + Files are added or modified to support the IP raw filter feature and + the raw receive queue depth feature: + nx_ip_raw_packet_enable.c + nx_ip_raw_packet_filter_set.c + nx_ip_raw_packet_processing.c + nx_ip_raw_receive_queue_max_set.c + nxe_ip_raw_packet_filter_set.c + nxe_ip_raw_receive_queue_max_set.c + + + Files are modified to reset the TCP internal timer when closing a socket: + nx_tcp_client_socket_unbind.c + nx_tcp_server_socket_accept.c + nx_tcp_server_socket_listen.c + nx_tcp_server_socket_relisten.c + nx_tcp_server_socket_unaccept.c + nx_tcp_server_socket_unlisten.c + nx_tcp_socket_state_fin_wait2.c + nx_tcp_socket_state_syn_received.c + + + Other modified files: + nx_arp_enable.c Cleaned up redundant logic. + nx_icmpv6_dest_table_add.c Protected cache with mutex nx_nd_cache_protection. + nx_icmpv6_process_na.c Modified the logic to set incoming interface to be the + address requested in the NA message. + nx_icmpv6_process_redirect.c Protected cache with mutex nx_nd_cache_protection. + nx_icmpv6_send_queued_packets.c Convert destination address to host byte order before + calling nx_icmpv6_dest_table_find. + nx_igmp_periodic_processing.c Fixed a bug preventing the loop from decrementing all + group update times. + nx_ip_create.c Initializes the device table and the address table. + nx_ip_dispatch_process.c Added upper layer protocol processing for IPv4 + nx_ip_driver_direct_command.c Modified function name + nx_ip_fragment_assembly.c Simplified the logic by calling nx_ip_dispatch_process() + for processing upper layer protocols. + nx_ip_fragment_packet.c Removed an extra alignment check + nx_ip_max_payload_size_find.c Added a case for IPsec + nx_ip_raw_packet_source_send.c Modified the constant for the raw packet type + nx_ip_raw_packet_send.c Modified the constant for the raw packet type + nx_ip_static_route_add.c Record the physical interface the route is attached to. + nx_ipv4_packet_receive.c Simplified the logic by calling nx_ip_dispatch_process() + for processing upper layer protocols. + nx_ipv6_fragment_process.c Fixed a compiler warning. + nx_ipv6_packet_receive.c Added IPv6 multicast support + nx_ipv6_packet_send.c Fixed a bug in the logic that does the IPv6 address + search, added a case where IPv6 address to MAC address + mapping is not needed. + nx_ipv6_prefix_list_delete.c Optimized the logic that computes the interface index. + nx_ipv6_util.c Fixed the all router multicast address. + nx_nd_cache_add.c Fixed compiler warnings, protected cache with mutex + nx_nd_cache_protection. + nx_nd_cache_find_entry.c Fixed a bug where an incorrect index value is used, + removed mutex release that is not necessary. + nx_tcp_fast_periodic_processing.c Fixed a bug that prevents TCP retry limit to be reached. + nx_tcp_no_connection_reset.c Fixed for IPsec. + nx_tcp_packet_process.c Validate MSS value, validate IP address, added internal + callback function. + nx_tcp_socket_disconnecte.c Corrected TCP ACK number when sending a RST. + nx_tcp_socket_packet_process.c Improved the handling of validating incoming TCP + segments. + nx_tcp_socket_receive.c Corrected the logic checking the receive queue against + the TCP socket state. + nx_tcp_socket_send.c Added logic to handle error status returned from + nx_tcp_socket_internal to fix a packet leak. + nx_tcp_socket_state_ack_check.c Fixed a bug determining if packets can be released from + the queue when the transmit window wraps, also + modified the return value. + nx_tcp_socket_state_data_check.c Optimized the logic for handling incoming TCP data + segments. + nx_tcp_socket_state_syn_received.c Updated the acknowledged receive sequence. + nx_tcp_socket_state_syn_sent.c Fixed a logic for invalid ACK check. + nx_udp_packet_receive.c Fixed compiler warnings. + nx_udp_socket_source_send.c Removed redundant code. + nxd_ip_raw_packet_sourcee_send.c Added additional parameters this service takes. + nxd_ip_raw_packet_send.c Added additional parameters this service takes. + nxd_ipv6_address_get.c Simplified the logic that finds the address index. + nxd_ipv6_default_router_add_internal.c Fixed compiler warning. + nxd_ipv6_interface_find.c Added IPv6 multicast support, added a case where the + destination address is an offlink address. + nxd_ipv6_router_solicitation_check.c Cleaned up a line of statement. + nxd_nd_cache_entry_set.c Bug fix: Use IPv6 address index to find physical + interface. + nxd_udp_packet_info_extract.c Simplified the logic that finds the interface index. + nxd_udp_socket_send.c Making sure the checksum is always generated for + IPv6 packets. + nxd_udp_socket_source_send.c Fixed the IP address detection logic. + nxde_ip_raw_packet_source_send.c Added additional parameters this service takes. + nxde_ip_raw_packet_send.c Added additional parameters this service takes. + + + Files added: + nx_ip_gateway_address_get.c + nx_ip_interafce_address_mapping_configure.c + nx_ip_interface_mtu_set.c + nx_ip_interface_physical_address_get.c + nx_ip_interface_physical_address_set.c + nx_tcp_socket_queue_depth_notify_set.c + nxd_ipv6_default_router_entry_get.c + nxd_ipv6_default_router_number_of_entries_get.c + nxd_ipv6_disable.c + nxd_ipv6_multicast_interface_join.c + nxd_ipv6_multicast_interafce_leave.c + nxd_ipv6_stateless_address_autoconfig_disable.c + nxd_ipv6_stateless_address_autoconfig_enable.c + nxde_ipv6_default_router_entry_get.c + nxde_ipv6_default_router_number_of_entries_get.c + nxde_ipv6_disable.c + nxde_ipv6_stateless_address_autoconfig_disable.c + nxde_ipv6_stateless_address_autoconfig_enable.c + nxde_ipv6_multicast_interface_join.c + nxde_ipv6_multicast_interface_leave.c + nxe_ip_gateway_address_get.c + nxe_ip_interface_mtu_set.c + nxe_ip_interface_physical_address_get.c + nxe_ip_interface_physical_address_set.c + nxe_tcp_socket_queue_depth_notify_set.c + + Files renamed: + + File Name in Release 5.6 File Name in Release 5.7 + + nx_ip_raw_packet_interface_send.c nx_ip_raw_packet_source_send.c + nx_udp_socket_interface_send.c nx_udp_socket_source_send.c + nxd_ip_raw_packet_interface_send.c nxd_ip_raw_packet_source_send.c + nxd_udp_socket_interface_send.c nxd_udp_socket_source_send.c + nxd_icmp_interface_ping.c nxd_icmp_source_ping.c + nxe_ip_raw_packet_interface_send.c nxe_ip_raw_packet_source_send.c + nxe_udp_socket_interface_send.c nxe_udp_socket_source_send.c + nxde_ip_raw_packet_interface_send.c nxde_ip_raw_packet_source_send.c + nxde_udp_socket_interface_send.c nxde_udp_socket_source_send.c + nxde_icmp_interface_ping.c nxde_icmp_source_ping.c + + + + + +10/10/2011 NetX generic code version 5.6. This release includes the following major features: + + * IPv4 and IPv6 multihome support + * TCP window scaling + * Allow applications to configure TCP Keep-alive feature on a per-socket basis + * Added support for TCP state change callback functions. + * Allow ICMP checksum operation to be removed + * Added support for IPsec + + Files modified in order to support multihome + nx_api.h + nx_arp.h + nx_arp_dynamic_entries_invalidate.c + nx_arp_dynamic_entry_set.c + nx_arp_gratuitous_send.c + nx_arp_packet_receive.c + nx_arp_packet_send.c + nx_arp_periodic_update.c + nx_arp_static_entry_create.c + nx_icmp.h + nx_icmp_ping.c + nx_icmp_ping6.c + nx_icmpv6.h + nx_icmpv6_DAD_failure.c + nx_icmpv6_packet_process.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_na.c + nx_icmpv6_process_ns.c + nx_icmpv6_process_ra.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_queued_packets.c + nx_icmpv6_send_rs.c + nx_icmpv5_packet_process.c + nx_igmp.h + nx_igmp_multicast_check.c + nx_igmp_multicast_join.c + nx_igmp_multicast_leave.c + nx_ip.h + nx_ip_create.c + nx_ip_delete.c + nx_ip_dispatch_process.c + nx_ip_driver_direct_command.c + nx_ip_fragment_packet.c + nx_ip_gateway_address_set.c + nx_ip_max_payload_size_find.c + nx_ip_packet_receive.c + nx_ip_packet_send.c + nx_ip_status_check.c + nx_ip_thread_entry.c + nx_ip_static_route_add.c + nx_ipv4.h + nx_ipv4_packet_receive.c + nx_ipv6.h + nx_ipv6_address_find_prefix.c + nx_ipv6_fragment_process.c + nx_ipv6_multicast.c + nx_ipv6_packet_receive.c + nx_ipv6_packet_send.c + nx_ipv6_prefix_list_delete_entry.c + nx_nd_cache.h + nx_nd_cache_add.c + nx_packet_allocate.c + nx_packet_copy.c + nx_ram_network_driver.c + nx_tcp_fast_periodic_processing.c + nx_tcp_packet_process.c + nx_tcp_packet_send_ack.c + nx_tcp_packet_send_fin.c + nx_tcp_packet_send_syn.c + nx_tcp_socket_mss_set.c + nx_tcp_socket_send.c + nx_tcp_socket_state_transmit_check.c + nx_udp.h + nx_udp_socket_create.c + nxd_ip_raw_packet_send.c + nxd_ipv6_default_router_add.c + nxd_ipv6_router_solicitation_check.c + nxd_nd_cache_entry_set.c + nxd_nd_cache_ip_address_find.c + nxd_udp_socket_send.c + nxde_ipv6_default_router_add.c + nxde_nd_cache_entry_set.c + nxde_nd_cache_ip_address_find.c + nxe_arp_gratuitous_send.c + nxe_igmp_multicast_join.c + nxe_ip_gateway_address_set.c + nxe_ip_status_check.c + nxe_tcp_socket_send.c + + Files changed to allow optionally exclude the ICMPv6 Error Messages feature + nx_icmpv6.h + nx_icmpv6_send_error_message.c + nx_ip_dispatch_process.c + nx_ip_fragment_assembly.c + nx_ip_fragment_timeout_check.c + nx_ipv6_process_fragment_option.c + nx_ipv6_process_routing_option.c + nx_udp_packet_receive.c + nx_user.h + + Files changed to support TCP window scaling: + nx_tcp.h + nx_tcp_mss_option_get.c + nx_tcp_packet_process.c + nx_tcp_packet_send_ack.c + nx_tcp_packet_send_fin.c + nx_tcp_packet_send_syn.c + nx_tcp_socket_create.c + nx_tcp_socket_send.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_data_check.c + nx_tcp_socket_state_syn_sent.c + nx_tcp_socket_state_syn_received.c + nx_user.h + nxe_tcp_socket_create.c + + + Files changed to support per-socket keepalive option: + nx_tcp_periodic_processing.c + nx_tcp_socket_create.c + nx_tcp_socket_state_ack_check.c + nx_tcp_socket_state_established.c + nx_tcp_socket_state_syn_received.c + nx_tcp_socket_state_syn_sent.c + + Files changed to support TCP state change callback functions: + nx_tcp.h + nx_tcp_socket_connection_reset.c + nx_tcp_socket_create.c + nx_tcp_socket_state_fin_wait1.c + nx_tcp_socket_state_fin_wait2.c + nx_tcp_socket_state_last_ack.c + nx_tcp_socket_state_syn_received.c + + Added a check to make sure this function only operates on an entry owned by ip_ptr. + nx_nd_cache_fast_periodic_update.c + nx_nd_cache_find_entry_by_mac_addr.c + nx_nd_cache_find_entry_and_add.c + nx_nd_cache_find_entry.c + nx_nd_cache_slow_periodic_update.c + + Files changed to allow ICMP checksum operation to be removed: + nx_icmp_ping.c + nx_icmpv4_packet_process.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_ns.c + nx_icmpv6_send_error_message.c + nx_icmpv6_send_ns.c + nx_icmpv6_send_rs.c + + + Files changed to support IPsec: + nx_icmp_ping.c + nx_icmpv4_packet_process.c + nx_icmpv6_DAD_clear_NDCache_entry.c + nx_icmpv6_DAD_failure.c + nx_icmpv6_packet_process.c + nx_icmpv6_perform_DAD.c + nx_icmpv6_process_echo_reply.c + nx_icmpv6_process_echo_request.c + nx_icmpv6_process_na.c + nx_icmpv6_process_ns.c + nx_icmpv6_send_error_message.c + nx_icmpv6_validate_neighbor_message.c + nx_ip_dispatch_process.c + nx_ip_max_payload_size_find.c + nx_ip_packet_send.c + nx_ip_thread_entry.c + nx_ipv4_packet_receive.c + nx_ipv6_packet_send.c + nx_ipv6_perform_min_path_MTU_discovery.c + nx_packet_allocate.c + nx_packet_copy.c + nx_tcp_no_connection_reset.c + nx_tcp_packet_send_ack.c + nx_tcp_packet_send_fin.c + nx_tcp_packet_send_rst.c + nx_tcp_packet_send_syn.c + nx_tcp_socket_create.c + nx_tcp_socket_send_internal.c + nx_udp_packet_receive.c + nxd_udp_socket_send.c + nxe_ip_max_payload_size_find.c + + Other modified files: + nx_api.h Added macro NX_PACKET_HEADER_PAD_SIZE to allow an application + to specify the number of ULONG words padded towards the end of the + NX_PACKET structure, giving the starting address of the paylaod + area to a desired alignment. + nx_icmpv6_dest_table_find.c Allowed this function to update the path MTU information + nx_icmpv6_destination_table_periodic_update.c + Upadted the path MTU logic, optimized the search process + nx_icmpv6_perform_DAD.c Added an option that allows caller to specify an IPv6 address for DAD. + nx_icmpv6_process_echo_reply.c Added ICMP statistical counter, removed ICMP header before passing the packet + to the thread + nx_icmpv6_process_na.c Optimized the NA packet process + nx_icmpv6_process_ra.c Optimized the destination table operation, added ICMP counters + nx_icmpv6_process_redirect.c Added ICMP statistical counter, optimized internal operation + nx_igmp_loopback_disable.c Added mutex protection + nx_igmp_loopback_enable.c Added mutex protection + nx_igmp_packet_process.c Allowed IGMP statistical counters to be compiled out, + impoved the handling of IGMPv1 packets + nx_ip_address_change_notify.c Added mutex protection + nx_ip_address_get.c Added mutex protection + nx_ip_address_set.c Added mutex protection + nx_ip_checksum_compute.c Fixed a compiler warning when the IPv6 feature is not enabled + nx_ip_delete.c: Clear the nx_ip_id field after the IP internal is cleaned up. + nx_ip_gateway_address_set.c Added missing mutex release if no interface found, allow the gateway to be cleared + nx_ip_fragment_assembly.c Improved fragment matching per RFC 791, fixed a compiler warning + nx_ip_packet_receive.c Added VOID* cast to avoid compiler warnings. + nx_ip_packet_send.c Added check for non null packet interface or next hop (e.g. gateway) + Fixed a bug where the prepend_ptr was incorrectedly adjusted before + calling nx_packet_transmit_release. + nx_ipv6.h Added and modified internal API prototypes + nx_ipv6_fragment_process.c Release all fragments when discarding a fragment + Added counter for total_fragments sent. + nx_ipv6_packet_send.c Fixed a bug where the prepend_ptr was incorrectedly adjusted before + calling nx_packet_transmit_release. + nx_ipv6_util.h Optimized internal operations, added a check for the FF05:: multicast range + nx_ip_status_check.c: Added the configurable wait option NX_IP_STATUS_CHECK_WAIT_TIME + nx_ipv6_option_error.c simplify the logic + nx_ipv6_packet_copy.c Fixed a compiler warning + nx_nd_cache_delete_internal.c Optimized the destination table search process + nx_packet_release Removed an IPv6 conditional compilation so the IP version field is cleaned up + nx_rarp_packet_receive.c Added initialization to avoid compiler warnings + nx_tcp_mss_option_get.c Corrected the logic in the option length calculation. + nx_tcp_no_connection_reset.c Added a parameter to indicate source IPv6 address to use when sending the RST packet. + nx_tcp_packet_send_ack.c Skip TCP checksum calculation if the feature is turned off. + nx_tcp_packet_send_fin.c Skip TCP checksum calculation if the feature is turned off. + nx_tcp_packet_send_rst.c Skip TCP checksum calculation if the feature is turned off. + nx_tcp_packet_send_syn.c Skip TCP checksum calculation if the feature is turned off. + nx_tcp_socket_packet_process.c Added check for acceptable RST, moved TCP header optino process into nx_tcp_packet_process + nx_tcp_periodic_process.c Added per-socket keep-alive feature. + nx_tcp_socket_receive Optimized internal logic, added netX trace event + Modified logic to always return a packet in the receive queue regardless of the TCP socket state + nx_tcp_server_socket_accept.c Clean up the socket data structure before responding to a new conenction. + nx_tcp_socket_state_closing.c Validate the ACK and SEQ number before closing down the socket + nx_tcp_socket_state_ack_check.c Fixed a corner case where the ACK number was incorrectly checked + Fixed another corner case when determining if packets can be released from the transmit queue + where the transmit window is wrapped. + nx_udp_packet_receive.c Optimized internal operations + nx_udp_socket_bytes_available: Modified output to error status if the socket port is not bound, corrected return value, fixed comiler warnings + nx_udp_socket_receive.c Removed redundant calls to checksum + nx_user.h Added options to remove ICMP checksum computation + nxd_icmp_enable.c Added mutex protection, optimized initilization process + nxd_ipv6_find_max_prefix_length.c Optimized the search algorithm + nxd_ipv6_prefix_router_timer_tick.c Clean up the destination table when a router times out + nxd_ipv6_router_lookup.c Check nd_cache_entry being valid before dereferencing it, + nxd_ipv6_router_solicitation_check.c Check router entry valid before updating its timer value optimized the router table search algorithm + nxd_ipv6_search_onlink.c Also search manually configured Ipv6 addresses for onlink nodes + nxd_nd_cache_entry_delete.c Make sure the ND cache entry exists before deleting it, also invalidated the destination table entry + nxd_tcp_client_socket_connect.c Do socket cleanup before sending the SYN packet + nxde_ip_raw_packet_send.c Added more error checking logic + nxde_udp_socket_send.c Added more error checking logic + nxe_ip_gateway_address_set.c Removed a requirement that ARP be enabled before setting IPv4 gateway address and + removed requirement that the service must be called from a thread + nxe_ip_max_payload_size_find.c Replaced source address with an index to the source address + nxe_ip_static_route_add.c Added a check to make sure the next hop address is directly reachable. + nxe_ip_static_route_delete.c Removed unused code + nxe_packet_release.c Removed unreachable code + nxe_packet_transmit_release.c Removed unreachable code + + + Files added: + demo_netx_duo_multihome_tcp.c + demo_netx_duo_multihome_udp.c + nx_icmp_interface_ping6.c + nx_icmpv6_dest_table_add.c + nx_icmpv6_process_packet_too_big.c + nx_igmp_multicast_interface_join.c + nx_ip_driver_interface_direct_command.c + nx_ip_interface_address_get.c + nx_ip_interface_address_set.c + nx_ip_interface_attach.c + nx_ip_interface_info_get.c + nx_ip_interface_status_check.c + nx_ip_raw_packet_interface_send.c + nx_ip_route_find.c + nx_nd_cache_add_entry.c + nx_packet_data_extract_offset.c + nx_tcp_socket_disconnect_complete_notify.c + nx_tcp_socket_establish_notify.c + nx_tcp_socket_send_internal.c + nx_tcp_socket_timed_wait_callback.c + nx_tcp_window_scaling_option_get.c + nx_udp_packet_info_extract.c + nx_udp_socket_interface_send.c + nxd_icmp_interface_ping.c + nxd_ip_raw_packet_interface_send.c + nxd_ipv6_address_delete.c + nxd_ipv6_address_get.c + nxd_ipv6_address_set.c + nxd_ipv6_default_router_get.c + nxd_udp_socket_interface_send.c + nxde_icmp_interface_ping.c + nxde_ip_raw_packet_interface_send.c + nxde_ipv6_address_delete.c + nxde_ipv6_address_get.c + nxde_ipv6_address_set.c + nxde_ipv6_default_router_get.c + nxde_udp_packet_info_extract.c + nxde_udp_socket_interface_send.c + nxe_icmp_interface_ping6.c + nxe_igmp_multicast_interface_join.c + nxe_ip_driver_interface_direct_command.c + nxe_ip_interface_address_get.c + nxe_ip_interface_address_set.c + nxe_ip_interface_attach.c + nxe_ip_interface_info_get.c + nxe_ip_interface_status_check.c + nxe_ip_raw_packet_interface_send.c + nxe_packet_data_extract_offset.c + nxe_tcp_socket_disconnect_complete_notify.c + nxe_tcp_socket_establish_notify.c + nxe_tcp_socket_timed_wait_callback.c + nxe_udp_packet_info_extract.c + nxe_udp_socket_interface_send.c + + + Files removed: + nx_icmpv6_dest_table_find_and_add.c + nx_icmpv6_dest_table_find_and_add.c + nx_ip_static_routing_disable.c + nx_ip_static_routing_enable.c + nx_ipv6_process_packet_too_big.c + nx_nd_cache_find_entry_and_add.c + nxd_ipv6_interface_address_get.c + nxd_ipv6_interface_address_set.c + nxd_ipv6_linklocal_address_get.c + nxd_ipv6_linklocal_address_set.c + nxd_udp_socket_set_interface.c + nxde_ipv6_interface_address_get.c + nxde_ipv6_interface_address_set.c + nxde_ipv6_linklocal_address_get.c + nxde_ipv6_linklocal_address_set.c + nxde_udp_socket_set_interface.c + nxe_ip_static_routing_disable.c + nxe_ip_static_routing_enable.c, + + +06/01/2010 NetX generic code version 5.5. This release includes the following major features: + Path MTU Discovery and IPv6 Advertised Link MTU + Internal debug modules removed (replaced with TraceX events) + + Other modifications are: + + nx_icmpv6_process_ra.c Path MTU support + Fixed bug in Neighbor Discovery cache processing + nx_icmpv6_process_redirect.c Path MTU support + nx_icmpv6_send_error_message.c Path MTU support + nx_icmpv6_send_queued_packets.c Path MTU support + Fixed a bug where NA packet is received how queued packets requiring fragmentation are sent + nx_ip_static_route_add.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING + nx_ip_static_route_delete.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING + nx_ip_static_route_find.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING + nx_ip_static_route_enable.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING + nx_ip_static_route_disable.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING + nx_ip_thread_entry.c Path MTU support + nx_ipv6_packet_send.c Path MTU support + Added a check if source and destination IP addresses are the same as part of Denial of service attack, + Added check for suitable next hop; no packet transmitted if not found by routing algorithm */ + Fixed bug how multicast packets are detected + nx_tcp_packet_process.c Modified RST packets sent in response to invalid data packets to include proper ACK number + nx_tcp_packet_send_rst.c Send a RST with proper ACK number in response to invalid data packet. + nx_tcp_socket_packet_process.c Removed duplicate logic that detects and sets MSS number from peer + Added logic for sending ACKs for out-of-order packet + Added check for duplicated SYNs + nx_tcp_socket_state_data_check.c Modified to send ACKs for out-of-order data packets + modified handling invalid RST control message + Added check for duplicated incoming SYNs + Fixed bug (corner case) handling overlapping sequence numbers + Make _nx_tcp_socket_state_data_trim and _nx_tcp_socket_state_data_trim_front + non-static function. + nx_tcp_socket_state_syn_sent.c Modified detection and handling of unacceptable ACK before sending RST packet + nxd_icmp_enable.c Path MTU support + nxd_ipv6_enable.c Replaced literal router solicitation parameters with macros defined in nx_user.h + nxd_ipv6_find_max_prefix_length.c Optimized the prefix match algorithm + nxd_udp_socket_send.c Corrected placement of IPSec ENABLED conditional code, + Added check for IPv6 logical outgoing interface + nxe_ip_static_routing_disable.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING + nxe_ip_static_routing_enable.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING + nx_icmpv6.h Path MTU support + nx_nd_cache.h Removed unused defines for Router and ND protocols + nx_user.h Added #defines for router solicitation parameters + Added NX_PACKET_HEADER_PAD_SIZE to pad towards the end of the NX_PACKET structure. + + +11/23/2009 NetX generic code version 5.4. This release includes the following major features: + Multiple IPv6 address support added + Path MTU and IPv6 Advertised Link MTU support removed + + Other modifications are: + + nx_ip_fragment_assembly.c Added check for invalid length (exceed maximum size limit) + nx_ip_max_payload_size.c New API:computes max packet payload that will not require fragmentation + nx_ip_packet_send.c Corrected NX_IP_LIMITIED_BROADCAST to NX_IP_LIMITED_BROADCAST as destination IP + nx_ipv6_packet_receive.c Added support for multiple IPv6 addresses + nx_ipv6_packet_send.c Made packet fragmentation conditional; if not enabled and fragmentation is required drop the packet + Added mutex protection around Neighbor Discovery cache table operations + nx_ipv6_utils.c Fixed bug in IPv6_Address_Type() for detecting multicast address type + nx_tcp_no_connection_reset.c For socket in CLOSED state, RST packet sequence number set to incoming ACK number + nx_tcp_fast_periodic_processing.c Replaced reference to primary IP global address with transmit socket outgoing interface address + nx_tcp_packet_process.c Added call to nxd_tcp_no_connection_reset depending if IPv6 is enabled on the IP instance if a RST + must be sent + Update the socket outgoing interface to the received packet interface + nx_tcp_packet_send_ack.c Added support for multiple IPv6 addresses + nx_tcp_packet_send_fin.c Added support for multiple IPv6 addresses + nx_tcp_packet_send_rst.c Added support for multiple IPv6 addresses + nx_tcp_packet_send_syn.c Added support for multiple IPv6 addresses + nx_tcp_socket_create.c Initialize socket outgoing interface with NULL instead of IP global address + nx_tcp_socket_send.c Added support for multiple IPv6 addresses + nx_tcp_socket_state_data_check.c Fixed minor compiler warning with conditional coding around IP block pointer declaration + nx_tcp_socket_state_transmit_check.c Renamed nx_tcp_window_update_callback_notify with nx_tcp_socket_window_update_notify + Added support for multiple IPv6 addresses + nx_tcp_socket_window_update_notify_set.c Renamed file from nx_tcp_socket_window_notify to nx_tcp_socket_window_notify_set + nx_udp_socket_create.c Initialize socket outgoing interface with NULL instead of IP global address + nx_udp_socket_receive.c Corrected placement of conditional #defines around extracting packet source and destination address + nx_udp_source_extract.c Modified for performing IPv4 packet extraction only + nxd_icmp_enable.c Removed path MTU support + nxd_icmp_ping.c Added check for IPv6 enabled for sending IPv6 echo request packets + nxd_ipv6_enabled.c Send an error status return if not IPv6 enabled + nxd_ipv6_find_max_prefix_length.c New function: finds the longest matching prefix between two IPv6 addresses + nxd_ipv6_interface_address_get.c New API: returns IPv6 address and prefix length based in the input interface index + nxd_ipv6_interface_address_set.c New API: Sets the IPv6 address and prefix length of the input interface index + nxd_ipv6_interface_find.c Added multiple IPv6 address support + nxd_ipv6_linklocal_address_get.c Replace reference to obsoleted IP link local address with IP instance zero index interface (designated + link local) + nxd_ipv6_linklocal_address_get.c Replace reference to obsoleted IP link local address with IP instance zero index interface (designated + link local) + nxd_ipv6_raw_packet_send_internal.c Added check for valid IP instance outgoing interface for packet destination + nx_nd_cache_entry_delete.c Added TraceX support + nxd_tcp_client_socket_connect.c Added support for multiple IPv6 addresses + nxd_tcp_socket_peer_info_get.c Added TraceX support + nxd_udp_socket_send.c Added support for multiple IPv6 addresses + nxd_udp_socket_set_interface.c Added support for multiple IPv6 addresses + nxd_udp_source_extract.c Optimized the logic for retrieving the IP address + nxde_ipv6_default_router_add.c Updated call to nxd_ipv6_default_router_add() based on changes to that function + nxde_udp_source_extract.c Added check for packet with invalid IP header + nxe_udp_source_extract.c Added check for packet with invalid IP header + nx_nd_cache.h Declared two new API, _nxd_nd_cache_entry_delete and _nxd_nd_cache_entry_set + nx_tcp.h Declared new API, _nxd_tcp_no_connection_reset + nx_user.h Removed NX_DISABLE_IPV6_PATH_MTU_DISCOVERY + + + +08/03/2009 NetX generic code version 5.3. This release includes the following major features: + Trace Events support + IPSec support + IGMP version 2 support + + Other modifications are: + + nx_igmp_enable.c IGMPv2 support + nx_igmp_multicast_leave.c IGMPv2 support + nx_igmp_packet_process.c IGMPv2 support + nx_igmp_periodic_processing.c IGMPv2 support + nx_ip_checksum_compute.c When adding last byte to the checksum, + cast the byte to unsigned short + nx_ip_fragment_assembly.c Fixed a packet size computation bug + nx_ip_packet_send.c Use nx_ip_packet_deferred_receive for loopback + nx_ipv6_packet_send.c Use nx_ip_packet_deferred_receive for loopback + nx_ip_thread_entry.c Added IPv6 destination table support + nx_tcp_socket_state_data_check.c Optimized TCP out-of-order data receive logic + Added support for TCP congestion avoidance + nx_tcp_socket_state_syn_received.c Added support for TCP congestion avoidance + nx_tcp_socket_state_syn_sent.c Added support for TCP congestion avoidance + nx_tcp_socket_state_transmit_check.c Added support for TCP congestion avoidance + nx_tcp_socket_windows_update_notify.c Added support for TCP congestion avoidance + nxd_tcp_client_socket_connect.c Revised TCP loopback connection handling + nx*.h Modified comment(s). + nx*.c Modified comment(s). + +12/30/2007 Initial NetX Duo generic code version 5.2. This release is based on NetX 5.1 for IPv4 support, + with features developed for IPv6. + + +2. NetXDuo Secure + +08/15/2019 NX Secure generic code version 5.12. This release includes the + following major features: + + Files are modified to store cipher suite pointer in the session: + nx_secure_dtls_hash_record.c + nx_secure_dtls_process_clienthello.c + nx_secure_dtls_send_serverhello.c + nx_secure_dtls_server_handshake.c + nx_secure_dtls_verify_mac.c + nx_secure_tls.h + nx_secure_tls_finished_hash_generate.c + nx_secure_tls_generate_keys.c + nx_secure_tls_generate_premaster_secret.c + nx_secure_tls_hash_record.c + nx_secure_tls_process_certificate_verify.c + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_process_clienthello.c + nx_secure_tls_process_server_key_exchange.c + nx_secure_tls_process_serverhello.c + nx_secure_tls_process_serverhello_extensions.c + nx_secure_tls_record_hash_calculate.c + nx_secure_tls_record_hash_initialize.c + nx_secure_tls_record_hash_update.c + nx_secure_tls_record_payload_decrypt.c + nx_secure_tls_record_payload_encrypt.c + nx_secure_tls_send_certificate_verify.c + nx_secure_tls_send_client_key_exchange.c + nx_secure_tls_send_record.c + nx_secure_tls_send_server_key_exchange.c + nx_secure_tls_send_serverhello.c + nx_secure_tls_server_handshake.c + nx_secure_tls_session_iv_size_get.c + nx_secure_tls_session_keys_set.c + nx_secure_tls_session_reset.c + nx_secure_tls_verify_mac.c + + Files are modified to optimize RAM usage for remote certificates by + utilizing otherwise unused space in the TLS packet reassembly buffer + and parsing the certificates directly within the reassembly buffer: + nx_secure_tls.h + nx_secure_tls_process_record.c + nx_secure_tls_process_remote_certificate.c + nx_secure_tls_remote_certificate_allocate.c + nx_secure_tls_remote_certificate_free_all.c + nx_secure_tls_session_packet_buffer_set.c + nx_secure_tls_session_receive_records.c + nx_secure_tls_session_x509_client_verify_configure.c + nx_secure_x509.h + nxe_secure_tls_session_x509_client_verify_configure.c + + Files are modified to add TLS session intialization checking: + nx_secure_tls.h + nx_secure_tls_session_create.c + nx_secure_tls_session_delete.c + nx_secure_tls_session_reset.c + nxe_secure_dtls_client_protocol_version_override.c + nxe_secure_dtls_client_session_start.c + nxe_secure_dtls_packet_allocate.c + nxe_secure_dtls_psk_add.c + nxe_secure_dtls_server_session_send.c + nxe_secure_dtls_server_session_start.c + nxe_secure_dtls_session_client_info_get.c + nxe_secure_dtls_session_end.c + nxe_secure_dtls_session_local_certificate_add.c + nxe_secure_dtls_session_local_certificate_remove.c + nxe_secure_dtls_session_receive.c + nxe_secure_dtls_session_reset.c + nxe_secure_dtls_session_send.c + nxe_secure_dtls_session_start.c + nxe_secure_dtls_session_trusted_certificate_add.c + nxe_secure_dtls_session_trusted_certificate_remove.c + nxe_secure_tls_active_certificate_set.c + nxe_secure_tls_client_psk_set.c + nxe_secure_tls_local_certificate_add.c + nxe_secure_tls_local_certificate_find.c + nxe_secure_tls_local_certificate_remove.c + nxe_secure_tls_packet_allocate.c + nxe_secure_tls_psk_add.c + nxe_secure_tls_remote_certificate_allocate.c + nxe_secure_tls_remote_certificate_buffer_allocate.c + nxe_secure_tls_remote_certificate_free_all.c + nxe_secure_tls_server_certificate_add.c + nxe_secure_tls_server_certificate_find.c + nxe_secure_tls_server_certificate_remove.c + nxe_secure_tls_session_alert_value_get.c + nxe_secure_tls_session_certificate_callback_set.c + nxe_secure_tls_session_client_callback_set.c + nxe_secure_tls_session_client_verify_disable.c + nxe_secure_tls_session_client_verify_enable.c + nxe_secure_tls_session_end.c + nxe_secure_tls_session_packet_buffer_set.c + nxe_secure_tls_session_protocol_version_override.c + nxe_secure_tls_session_receive.c + nxe_secure_tls_session_renegotiate.c + nxe_secure_tls_session_renegotiate_callback_set.c + nxe_secure_tls_session_reset.c + nxe_secure_tls_session_send.c + nxe_secure_tls_session_server_callback_set.c + nxe_secure_tls_session_sni_extension_parse.c + nxe_secure_tls_session_sni_extension_set.c + nxe_secure_tls_session_start.c + nxe_secure_tls_session_time_function_set.c + nxe_secure_tls_session_x509_client_verify_configure.c + nxe_secure_tls_trusted_certificate_add.c + nxe_secure_tls_trusted_certificate_remove.c + + + Files are modified to fix DTLS version handling: + nx_secure_dtls_send_clienthello.c + nx_secure_dtls_send_helloverifyrequest.c + nx_secure_dtls_server_handshake.c + nx_secure_dtls_session_start.c + + Files are modified to improve informational error return codes for + easier debugging of TLS errors: + nx_secure_dtls_client_handshake.c + nx_secure_dtls_process_clienthello.c + nx_secure_dtls_send_clienthello.c + nx_secure_dtls_send_serverhello.c + nx_secure_dtls_server_handshake.c + nx_secure_tls.h + nx_secure_tls_map_error_to_alert.c + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_process_finished.c + nx_secure_tls_process_server_key_exchange.c + nx_secure_tls_process_serverhello_extensions.c + nx_secure_tls_server_handshake.c + nx_secure_tls_ecc_generate_premaster_secret.c + nx_secure_tls_ecc_process_certificate_verify.c + nx_secure_tls_ecc_process_client_key_exchange.c + nx_secure_tls_ecc_process_server_key_exchange.c + nx_secure_tls_ecc_send_certificate_verify.c + nx_secure_tls_ecc_send_server_key_exchange.c + + Files are added or modified for the new API + "nx_secure_tls_session_alert_value_get": + nx_secure_dtls_process_record.c + nx_secure_tls.h + nx_secure_tls_api.h + nx_secure_tls_session_alert_value_get.c + nx_secure_tls_session_start.c + nxe_secure_tls_session_alert_value_get.c + + Files are modified to provide consistent error checking of return + values from generic NX_CRYPTO cipher routine APIs: + nx_secure_dtls_hash_record.c + nx_secure_tls_client_handshake.c + nx_secure_tls_finished_hash_generate.c + nx_secure_tls_generate_keys.c + nx_secure_tls_handshake_hash_init.c + nx_secure_tls_hash_record.c + nx_secure_tls_process_certificate_verify.c + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_record_payload_decrypt.c + nx_secure_tls_send_certificate_verify.c + nx_secure_tls_send_client_key_exchange.c + nx_secure_tls_server_handshake.c + nx_secure_tls_session_keys_set.c + nx_secure_tls_session_reset.c + nx_secure_x509_certificate_verify.c + nx_secure_x509_crl_verify.c + + Files are modified to improve the error return code when the + TLS crypto key buffer is too small for the chosen ciphersuite: + nx_secure_tls. + nx_secure_tls_session_keys_set.c + + Files are modified to improve packet length verification: + nx_secure_dtls_send_clienthello.c + nx_secure_dtls_send_serverhello.c + nx_secure_tls_ecc_generate_keys.c + nx_secure_tls_ecc_send_client_key_exchange.c + nx_secure_tls_generate_keys.c + nx_secure_tls_send_clienthello.c + nx_secure_tls_send_serverhello.c + + Files are modified to add caller checking: + nxe_secure_tls_active_certificate_set.c + nxe_secure_tls_client_psk_set.c + nxe_secure_tls_local_certificate_add.c + nxe_secure_tls_local_certificate_find.c + nxe_secure_tls_local_certificate_remove.c + nxe_secure_tls_metadata_size_calculate.c + nxe_secure_tls_packet_allocate.c + nxe_secure_tls_psk_add.c + nxe_secure_tls_remote_certificate_allocate.c + nxe_secure_tls_remote_certificate_buffer_allocate.c + nxe_secure_tls_remote_certificate_free_all.c + nxe_secure_tls_server_certificate_add.c + nxe_secure_tls_server_certificate_find.c + nxe_secure_tls_server_certificate_remove.c + nxe_secure_tls_session_certificate_callback_set.c + nxe_secure_tls_session_client_callback_set.c + nxe_secure_tls_session_client_verify_disable.c + nxe_secure_tls_session_client_verify_enable.c + nxe_secure_tls_session_create.c + nxe_secure_tls_session_delete.c + nxe_secure_tls_session_end.c + nxe_secure_tls_session_packet_buffer_set.c + nxe_secure_tls_session_protocol_version_override.c + nxe_secure_tls_session_receive.c + nxe_secure_tls_session_renegotiate.c + nxe_secure_tls_session_renegotiate_callback_set.c + nxe_secure_tls_session_reset.c + nxe_secure_tls_session_send.c + nxe_secure_tls_session_server_callback_set.c + nxe_secure_tls_session_sni_extension_parse.c + nxe_secure_tls_session_sni_extension_set.c + nxe_secure_tls_session_start.c + nxe_secure_tls_session_time_function_set.c + nxe_secure_tls_session_x509_client_verify_configure.c + nxe_secure_tls_trusted_certificate_add.c + nxe_secure_tls_trusted_certificate_remove.c + nxe_secure_x509_certificate_initialize.c + nxe_secure_x509_common_name_dns_check.c + nxe_secure_x509_crl_revocation_check.c + nxe_secure_x509_dns_name_initialize.c + nxe_secure_x509_extended_key_usage_extension_parse.c + nxe_secure_x509_extension_find.c + nxe_secure_x509_key_usage_extension_parse.c + + Files are modified to fix static anaylsis reports: + nx_secure_tls_generate_keys.c + nx_secure_tls_process_remote_certificate.c + nx_secure_tls_session_packet_buffer_set.c + nx_secure_tls_ecc_generate_keys.c + nx_secure_tls_ecc_send_server_key_exchange.c + + Files are modified to correct self-signed certificate verification + and support duplicate certificates sent by a remote host: + nx_secure_tls_process_remote_certificate.c + nx_secure_x509_certificate_chain_verify.c + + Files are modified to provide RFC 7507 version fallback SCSV support: + nx_secure_tls_process_clienthello.c + nx_secure_dtls_process_clienthello.c + nx_secure_dtls_send_clienthello.c + nx_secure_tls.h + nx_secure_tls_map_error_to_alert.c + nx_secure_tls_newest_supported_version.c + nx_secure_tls_protocol_version_get.c + nx_secure_tls_send_clienthello.c + nx_secure_tls_send_serverhello_extensions.c + nx_secure_tls_session_reset.c + + Files are modified to improve packet length verification: + nx_secure_dtls_allocate_handshake_packet.c + nx_secure_dtls_packet_allocate.c + nx_secure_dtls_process_record.c + nx_secure_dtls_process_receive_callback.c + nx_secure_dtls_send_helloverifyrequest.c + nx_secure_dtls_send_record.c + nx_secure_dtls_send_serverhello.c + nx_secure_dtls_session_end.c + nx_secure_dtls_session_receive.c + nx_secure_dtls_session_start.c + nx_secure_tls.h + nx_secure_tls_allocate_handshake_packet.c + nx_secure_tls_client_psk_set.c + nx_secure_tls_generate_keys.c + nx_secure_tls_generate_premaster_secret.c + nx_secure_tls_packet_allocate.c + nx_secure_tls_process_clienthello_extensions.c + nx_secure_tls_process_serverhello.c + nx_secure_tls_record_payload_decrypt.c + nx_secure_tls_send_certificate.c + nx_secure_tls_send_certificate_request.c + nx_secure_tls_send_certificate_verify.c + nx_secure_tls_send_changecipherspec.c + nx_secure_tls_send_client_key_exchange.c + nx_secure_tls_send_clienthello.c + nx_secure_tls_send_clienthello_extensions.c + nx_secure_tls_send_finished.c + nx_secure_tls_send_record.c + nx_secure_tls_send_server_key_exchange.c + nx_secure_tls_send_serverhello.c + nx_secure_tls_send_serverhello_extensions.c + nx_secure_tls_session_receive_records.c + nx_secure_tls_verify_mac.c + + Files are modified to add buffer boundary checking in ASN.1 parsing: + nx_secure_x509.c + nx_secure_x509.h + nx_secure_x509_asn1_tlv_block_parse.c + nx_secure_x509_certificate_revocation_list_parse.c + nx_secure_x509_crl_revocation_check.c + nx_secure_x509_distinguished_name_parse.c + nx_secure_x509_extended_key_usage_extension_parse.c + nx_secure_x509_extension_find.c + nx_secure_x509_key_usage_extension_parse.c + nx_secure_x509_pkcs1_rsa_private_key_parse.c + nx_secure_x509_pkcs7_decode.c + nx_secure_x509_subject_alt_names_find.c + + Files are added to support DTLS: + nx_secure_dtls.h + nx_secure_dtls_api.h + nx_secure_dtls_allocate_handshake_packet.c + nx_secure_dtls_client_handshake.c + nx_secure_dtls_client_protocol_version_override.c + nx_secure_dtls_client_session_start.c + nx_secure_dtls_hash_record.c + nx_secure_dtls_initialize.c + nx_secure_dtls_packet_allocate.c + nx_secure_dtls_process_clienthello.c + nx_secure_dtls_process_handshake_header.c + nx_secure_dtls_process_header.c + nx_secure_dtls_process_helloverifyrequest.c + nx_secure_dtls_process_record.c + nx_secure_dtls_psk_add.c + nx_secure_dtls_receive_callback.c + nx_secure_dtls_retransmit.c + nx_secure_dtls_retransmit_queue_flush.c + nx_secure_dtls_send_clienthello.c + nx_secure_dtls_send_handshake_record.c + nx_secure_dtls_send_helloverifyrequest.c + nx_secure_dtls_send_record.c + nx_secure_dtls_send_serverhello.c + nx_secure_dtls_server_create.c + nx_secure_dtls_server_delete.c + nx_secure_dtls_server_handshake.c + nx_secure_dtls_server_local_certificate_add.c + nx_secure_dtls_server_local_certificate_remove.c + nx_secure_dtls_server_notify_set.c + nx_secure_dtls_server_protocol_version_override.c + nx_secure_dtls_server_psk_add.c + nx_secure_dtls_server_session_send.c + nx_secure_dtls_server_session_start.c + nx_secure_dtls_server_start.c + nx_secure_dtls_server_stop.c + nx_secure_dtls_server_trusted_certificate_add.c + nx_secure_dtls_server_trusted_certificate_remove.c + nx_secure_dtls_server_x509_client_verify_configure.c + nx_secure_dtls_server_x509_client_verify_disable.c + nx_secure_dtls_session_cache.c + nx_secure_dtls_session_client_info_get.c + nx_secure_dtls_session_create.c + nx_secure_dtls_session_delete.c + nx_secure_dtls_session_end.c + nx_secure_dtls_session_local_certificate_add.c + nx_secure_dtls_session_local_certificate_remove.c + nx_secure_dtls_session_receive.c + nx_secure_dtls_session_reset.c + nx_secure_dtls_session_send.c + nx_secure_dtls_session_start.c + nx_secure_dtls_session_trusted_certificate_add.c + nx_secure_dtls_session_trusted_certificate_remove.c + nx_secure_dtls_verify_mac.c + nxe_secure_dtls_client_protocol_version_override.c + nxe_secure_dtls_client_session_start.c + nxe_secure_dtls_packet_allocate.c + nxe_secure_dtls_psk_add.c + nxe_secure_dtls_server_create.c + nxe_secure_dtls_server_delete.c + nxe_secure_dtls_server_local_certificate_add.c + nxe_secure_dtls_server_local_certificate_remove.c + nxe_secure_dtls_server_notify_set.c + nxe_secure_dtls_server_protocol_version_override.c + nxe_secure_dtls_server_psk_add.c + nxe_secure_dtls_server_session_send.c + nxe_secure_dtls_server_session_start.c + nxe_secure_dtls_server_start.c + nxe_secure_dtls_server_stop.c + nxe_secure_dtls_server_trusted_certificate_add.c + nxe_secure_dtls_server_trusted_certificate_remove.c + nxe_secure_dtls_server_x509_client_verify_configure.c + nxe_secure_dtls_server_x509_client_verify_disable.c + nxe_secure_dtls_session_client_info_get.c + nxe_secure_dtls_session_create.c + nxe_secure_dtls_session_delete.c + nxe_secure_dtls_session_end.c + nxe_secure_dtls_session_local_certificate_add.c + nxe_secure_dtls_session_local_certificate_remove.c + nxe_secure_dtls_session_receive.c + nxe_secure_dtls_session_reset.c + nxe_secure_dtls_session_send.c + nxe_secure_dtls_session_start.c + nxe_secure_dtls_session_trusted_certificate_add.c + nxe_secure_dtls_session_trusted_certificate_remove.c + + Files are modified to fix compiler errors when NX_SECURE_X509_DISABLE_CRL is defined: + nx_secure_x509.h + nx_secure_x509_certificate_revocation_list_parse.c + nx_secure_x509_crl_revocation_check.c + nx_secure_x509_crl_verify.c + nx_secure_x509_ecc_certificate_revocation_list_parse.c + nx_secure_x509_ecc_crl_verify.c + + Files are modified to support AES-GCM cipher: + nx_secure_crypto_method_self_test_aes.c + nx_secure_crypto_table_self_test.c + nx_secure_tls_record_payload_decrypt.c + nx_secure_tls_record_payload_encrypt.c + + Files are modified to fix swapped PSK identity and hint parameters + when sending to the remote host: + nx_secure_tls_send_client_key_exchange.c + nx_secure_tls_send_server_key_exchange.c + + Files are modified to fix Session ID handling problem (session ID + length is always 0 in the initial ServerHello): + nx_secure_tls_send_serverhello.c + + Files are modified to update scratch buffers to support the new + default 4096-bit RSA key size: + nx_secure_tls_process_certificate_verify.c + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_send_certificate_verify.c + nx_secure_tls_send_client_key_exchange.c + + Files are modified to fix issue with processing CertificateVerify + messages in a TLS Server with Client X.509 Certificate + verification enabled: + nx_secure_tls_process_remote_certificate.c + nx_secure_tls_process_certificate_verify.c + nx_secure_tls_remote_certificate_verify.c + nx_secure_tls_server_handshake.c + + Files are added to support new API for allocating buffer space + for incoming remote certificates: + nx_secure_tls_remote_certificate_buffer_allocate.c + nxe_secure_tls_remote_certificate_buffer_allocate.c + + Files are modified to support new API for allocating buffer space + for incoming remote certificates: + nx_secure_tls.h + nx_secure_tls_api.h + + Files are added to support new API for configuring Client X.509 + authentication for TLS servers: + nx_secure_tls_session_x509_client_verify_configure.c + nxe_secure_tls_session_x509_client_verify_configure.c + + Files are modified to support new API for Client X.509 authentication: + nx_secure_tls.h + nx_secure_tls_api.h + + Files are modified to clear cryptographic secret data on errors: + nx_secure_tls_session_receive_records.c + nx_secure_tls_session_send.c + + Files are modified to assure that random number values are always cast + to 32-bit type or smaller: + nx_secure_tls_generate_premaster_secret.c + + Files are modified to assure that CBC padding values are properly checked: + nx_secure_tls_record_payload_decrypt.c + + Files are modified to assure that MAC hash checking happens even if + decryption padding checking fails: + nx_secure_tls_record_payload_decrypt.c + nx_secure_tls_process_record.c + + Files are modified to free all allocated remote certificates in a + TLS server session as soon as certificate chain validation is + complete. TLS clients need the remote certificates until after + the key echange is complete so they are cleared later: + nx_secure_tls_process_remote_certificate.c + nx_secure_tls_send_client_key_exchange.c + + Files are modified to fix the usage of crypto metadata for hash method: + nx_secure_tls_local_certificate_add.c + nx_secure_tls_process_remote_certificate.c + nx_secure_tls_remote_certificate_verify.c + nx_secure_tls_session_create.c + nx_secure_tls_trusted_certificate_add.c + nx_secure_x509.h + nx_secure_x509_certificate_verify.c + nx_secure_x509_crl_verify.c + + Files are modified to support AEAD cipher: + nx_secure_tls.h + nx_secure_tls_record_payload_decrypt.c + nx_secure_tls_record_payload_encrypt.c + + Files are modified to reset TLS session state if the TLS connection fails: + nx_secure_tls_session_end.c + nx_secure_tls_session_start.c + + Files are modified to return errors if cryptographic routines are + improperly initialized: + nx_secure_tls.h + nx_secure_tls_finished_hash_generate.c + nx_secure_tls_process_finished.c + + Files are modified to support elliptic curve cryptography: + nx_secure_tls.h + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_process_server_key_exchange.c + nx_secure_tls_process_serverhello_extensions.c + nx_secure_tls_send_client_key_exchange.c + nx_secure_tls_send_clienthello_extensions.c + nx_secure_tls_send_server_key_exchange.c + nx_secure_tls_send_serverhello_extensions.c + nx_secure_dtls_process_clienthello.c + nx_secure_dtls_send_clienthello.c + nx_secure_dtls_send_serverhello.c + + Files are added or modified to optimize the logic: + nx_secure_tls_client_handshake.c + nx_secure_tls_payload_encrypt.c + nx_secure_tls_process_clienthello_extensions.c + nx_secure_tls_process_record.c + nx_secure_tls_send_certificate.c + nx_secure_tls_send_certificate_verify.c + nx_secure_tls_send_client_key_exchange.c + nx_secure_tls_send_clienthello.c + nx_secure_tls_send_clienthello_extensions.c + nx_secure_tls_send_serverhello.c + nx_secure_tls_send_serverhello_extensions.c + nx_secure_tls_server_handshake.c + nx_secure_tls_session_create.c + nx_secure_x509.c + nx_secure_x509_certificate_chain_verify.c + + Files are modified to add wait_option to _nx_secure_tls_send_certificate: + nx_secure_dtls_client_handshake.c + nx_secure_dtls_server_handshake.c + nx_secure_tls.h + nx_secure_tls_client_handshake.c + nx_secure_tls_send_certificate.c + nx_secure_tls_server_handshake.c + + Files are modified to fix renegotiation issue with certain browsers due to both + SCSV and the Secure Renegotiation extension being required (should be either/or): + nx_secure_tls.h + nx_secure_tls_map_error_to_alert.c + nx_secure_tls_process_clienthello.c + nx_secure_tls_process_clienthello_extensions.c + nx_secure_tls_process_serverhello_extensions.c + nx_secure_tls_session_renegotiate.c + nx_secure_tls_session_reset.c + + Files are modified about server state processing: + nx_secure_tls_process_clienthello.c + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_process_finished.c + nx_secure_tls_server_handshake.c + nx_secure_dtls_server_handshake.c + + Files are modified to add flexibility of using macros instead of direct C library function calls: + nx_secure_dtls_client_handshake.c + nx_secure_dtls_hash_record.c + nx_secure_dtls_packet_allocate.c + nx_secure_dtls_process_clienthello.c + nx_secure_dtls_process_clienthello.c + nx_secure_dtls_process_header.c + nx_secure_dtls_process_helloverifyrequest.c + nx_secure_dtls_process_record.c + nx_secure_dtls_send_clienthello.c + nx_secure_dtls_send_helloverifyrequest.c + nx_secure_dtls_send_record.c + nx_secure_dtls_send_serverhello.c + nx_secure_dtls_server_handshake.c + nx_secure_dtls_session_cache.c + nx_secure_dtls_session_create.c + nx_secure_dtls_session_reset.c + nx_secure_dtls_session_send.c + nx_secure_dtls_verify_mac.c + nx_secure_tls.h + nx_secure_tls_client_handshake.c + nx_secure_tls_client_psk_set.c + nx_secure_tls_finished_hash_generate.c + nx_secure_tls_generate_keys.c + nx_secure_tls_generate_premaster_secret.c + nx_secure_tls_key_material_init.c + nx_secure_tls_local_certificate_remove.c + nx_secure_tls_packet_allocate.c + nx_secure_tls_process_certificate_verify.c + nx_secure_tls_process_changecipherspec.c + nx_secure_tls_process_clienthello.c + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_process_finished.c + nx_secure_tls_process_remote_certificate.c + nx_secure_tls_process_serverhello.c + nx_secure_tls_process_serverhello_extensions.c + nx_secure_tls_psk_add.c + nx_secure_tls_psk_find.c + nx_secure_tls_record_payload_encrypt.c + nx_secure_tls_send_certificate_verify.c + nx_secure_tls_send_clienthello.c + nx_secure_tls_send_finished.c + nx_secure_tls_send_serverhello.c + nx_secure_tls_session_create.c + nx_secure_tls_session_keys_set.c + nx_secure_tls_session_reset.c + nx_secure_tls_session_sni_extension_parse.c + nx_secure_tls_verify_mac.c + nx_secure_x509_certificate_initialize.c + nx_secure_x509_certificate_revocation_list_parse.c + nx_secure_x509_certificate_verify.c + nx_secure_x509_crl_revocation_check.c + nx_secure_x509_distinguished_name_compare.c + nx_secure_x509_dns_name_initialize.c + nx_secure_x509_oid_parse.c + + Files are modified to add extension hook: + nx_secure_tls.h + nx_secure_tls_generate_keys.c + nx_secure_tls_generate_premaster_secret.c + nx_secure_tls_process_certificate_request.c + nx_secure_tls_process_certificate_verify.c + nx_secure_tls_process_clienthello.c + nx_secure_tls_process_clienthello_extensions.c + nx_secure_tls_process_serverhello_extensions.c + nx_secure_tls_process_server_key_exchange.c + nx_secure_tls_send_certificate_request.c + nx_secure_x509.h + nx_secure_x509_crl_verify.c + + Files are modified to properly initialize the crypto control block and pass crypto handled + into crypto internal functions: + nx_secure_tls.h + nx_secure_tls_finished_hash_generate.c + nx_secure_tls_generate_keys.c + nx_secure_tls_handshake_hash_init.c + nx_secure_tls_handshake_hash_update.c + nx_secure_tls_hash_record.c + nx_secure_tls_process_certificate_verify.c + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_process_serverhello_extensions.c + nx_secure_tls_process_server_key_exchange.c + nx_secure_tls_record_hash_initialize.c + nx_secure_tls_record_hash_update.c + nx_secure_x509_certificate_verify.c + nx_secure_x509_crl_verify.c + + Files are modified to clear encryption key and other secret data: + nx_secure_dtls_send_record.c + nx_secure_dtls_session_end.c + nx_secure_dtls_session_receive.c + nx_secure_dtls_session_start.c + nx_secure_tls_client_handshake.c + nx_secure_tls_finished_hash_generate.c + nx_secure_tls_generate_keys.c + nx_secure_tls_handshake_process.c + nx_secure_tls_hash_record.c + nx_secure_tls_process_certificate_verify.c + nx_secure_tls_process_record.c + nx_secure_tls_record_hash_calculate.c + nx_secure_tls_record_payload_encrypt.c + nx_secure_tls_send_record.c + nx_secure_tls_session_receive.c + nx_secure_tls_session_receive_records.c + nx_secure_tls_session_renegotiate.c + nx_secure_x509_crl_verify.c + + Files are added for crypto method self test: + nx_secure_crypto_method_self_test_3des.c + nx_secure_crypto_method_self_test_aes.c + nx_secure_crypto_method_self_test_des.c + nx_secure_crypto_method_self_test_hmac_md5.c + nx_secure_crypto_method_self_test_hmac_sha.c + nx_secure_crypto_method_self_test_md5.c + nx_secure_crypto_method_self_test_prf.c + nx_secure_crypto_method_self_test_rsa.c + nx_secure_crypto_method_self_test_sha.c + nx_secure_crypto_rng_self_test.c + nx_secure_crypto_table_self_test.c + nx_secure_crypto_table_self_test.h + + Other modified files: + nx_secure_dtls_process_clienthello.c Adjusted the function name. + nx_secure_dtls_send_clienthello.c Fixed endian issue. + nx_secure_module_hash_compute.c Compute the hash value of module. + nx_secure_tls_ecc_send_client_key_exchange.c Fixed swapped PSK identity and hint parameters. + nx_secure_tls_process_record.c Removed unused function parameter (internal API). + nx_secure_tls_session_receive_records.c Removed unused function parameter (internal API). + nx_secure_tls.h Supported ECC ciphersuite. + Disabled AEAD by default. + nx_secure_tls_api.h Modified the format slightly. + nx_secure_tls_check_protocol_version.c Fix compiler errors for position independence. + nx_secure_tls_ecc_process_certificate_request.c Fix the issue with no client certificate added. + nx_secure_tls_finished_hash_generate.c Fixed the function pointer checking. + nx_secure_tls_generate_keys.c Rearranged code sequence for static analysis. + nx_secure_tls_generate_premaster_secret.c Rearranged code sequence for static analysis. + nx_secure_tls_metadata_size_calculate.c Fixed the usage of crypto metadata for hash method. + nx_secure_tls_newest_supported_version.c Moved version override support to a separate API. + nx_secure_tls_process_certificate_verify.c Fixed compiler warnings. + nx_secure_tls_process_client_key_exchange.c Used random premaster for incorrect message. + Fixed endian issue. + nx_secure_tls_process_clienthello.c Corrected the index of compress method. + nx_secure_tls_process_clienthello_extensions.c Added buffer size checking. + nx_secure_tls_process_record.c Modified the format slightly. + nx_secure_tls_process_server_key_exchange.c Fixed endian issue. + nx_secure_tls_process_serverhello_extensions.c Fixed compiler warnings. + nx_secure_tls_protocol_version_get.c Moved version override support to a separate API. + + nx_secure_tls_record_payload_decrypt.c Modified the format slightly. + Fixed compiler issues. + nx_secure_tls_record_payload_encrypt.c Added CBC mode checking for chained packet. + Fixed packet buffer overflow while padding for AES-CBC. + nx_secure_tls_remote_certificate_buffer_allocate.c + Rearranged code sequence for static analysis. + nx_secure_tls_send_clienthello_extensions.c Send ClientHello extensions. + nx_secure_tls_send_record.c Skipped the hash when it was not required. + nx_secure_tls_send_server_key_exchange.c Fixed endian issue. + nx_secure_tls_send_serverhello_extensions.c Send ServerHello extensions. + nx_secure_tls_send_serverhello.c Fixed compiler warnings. + nx_secure_tls_session_create.c Fixed the usage of crypto metadata for hash method. + nx_secure_tls_session_iv_size_get.c Fixed IV size for TLS 1.0. + nx_secure_tls_session_keys_set.c Rearranged code sequence for static analysis. + nx_secure_tls_session_reset.c Optimized the logic. + nx_secure_tls_session_time_function_set.c Set a function pointer to get the current time. + nx_secure_tls_verify_mac.c Supported zero-length TLS application data records. + nx_secure_x509.c Fixed issues with parsing offsets and + version check in parsing unique IDs. + nx_secure_x509.h Fixed compiler warnings. + nx_secure_x509_certificate_revocation_list_parse.c + Improved CRL parsing. + nx_secure_x509_certificate_initialize.c Released mutex when return. + nx_secure_x509_oid_parse.c Fix compiler errors for position independence. + nx_secure_x509_pkcs1_rsa_private_key_parse.c Removed obsolete comment. + nxe_secure_tls_remote_certificate_buffer_allocate.c + Rearranged code sequence for static analysis. + nxe_secure_tls_session_create.c Checked duplicate creation. + nxe_secure_tls_session_delete.c Verified the session before it is deleted. + + Files renamed: + + File Name in Release 5.11 File Name in Release 5.12 + nx_secure_tls_session_timestamp_function_set.c nx_secure_tls_session_time_function_set.c + nxe_secure_tls_session_timestamp_function_set.c nxe_secure_tls_session_time_function_set.c + +12/15/2017 NX Secure generic code version 5.11. This release includes the + following major features: + + Session renegotiation and the Secure Renegotiation Indication extension + Full TLS session renegotiation is now supported, along with the + Secure Renegotiation Indication extension which prevents certain + Man-in-the-Middle attacks against renegotiation. + + Certificate verification callback + Added support to allow application to perform additional checks on + a certificate provided by a remote host during the TLS handshake utilizing + a user-supplied callback. + + Session callbacks for TLS Client and TLS Server + Added support to allow the application to process TLS extensions following + the reception of a Hello message from the remote host. This allows for + the application to respond to extensions requiring decisions such as + the Server Name Indication (SNI) extension which allows a client to specify + the name of the server it wishes to connect with. + + Multiple Server Certificate support + Added new API to support adding multiple device identity certificates, + possibly with the same Subject (Common Name, etc.) using a new unique + numeric identifier (supplied by the application). This allows a TLS server + to host multiple identity certificates and choose an approriate certificate + to send to a connecting client. Used with the TLS Server session callback, + the application can search for the appropriate certificate during the TLS + handshake, and the numeric identifier allows for name conflicts between + multiple server certificates used for the same device. + + Server Name Indication TLS extension + Added support for the TLS Server Name Indication (SNI) extension. This + extension allows a client to specify the server with which it is trying + to connect, allowing the server to select parameters and credentials + in the case where a single endpoint services multiple different server + identities. + + X.509 Certificate Revocation List parsing + Added support for X.509 CRLs. A new API (used with the certificate verification + callback) is provided to check revocation status for certificates recieved + during the TLS handshake. + + X.509 Key Usage and Extended Key Usage extensions support + Added helper functions to allow an application to check the Key Usage + and Extended Key Usage extensions in the certificate verification callback. + The extensions allow an application to determine if a certificate supplied + by a remote host is valid for a particular operation (e.g. identifying a + TLS server). + + DNS verification + Added support for checking the URL top-level domain name for a remote host + against the certificate provided by that remote host. A new API (used + with the certificate verification callback) is provided to compare the TLD + name of the URL used to access a host with the Common Name and subjectAltName + DNSName fields in the X.509 certificate provided by the remote host. + + Vendor-defined private key types + Added support for private key types beyond the standard DER-encoded RSA + keys. Vendor-defined private keys will be passed directly to the hardware + driver for the appropriate cryptographic operations, with the assumption + that all parsing, unwrapping, and processing of those keys will be handled + by the hardware or hardware driver. + + Files are modified or added to add session callbacks: + nx_secure_tls.h + nx_secure_tls_process_clienthello.c + nx_secure_tls_session_client_callback_set.c + nx_secure_tls_process_serverhello.c + nx_secure_tls_session_server_callback_set.c + nxe_secure_tls_session_client_callback_set.c + nxe_secure_tls_session_server_callback_set.c + + Files are modified to match the certificate ID: + nx_secure_tls_local_certificate_remove.c + nx_secure_tls_trusted_certificate_remove.c + nx_secure_x509.h + nx_secure_x509_certificate_chain_verify.c + nx_secure_x509_certificate_list_add.c + nx_secure_x509_certificate_list_find.c + nx_secure_x509_certificate_list_remove.c + nx_secure_x509_local_device_certificate_get.c + nx_secure_x509_store_certificate_find.c + nx_secure_x509_store_certificate_add.c + nx_secure_x509_store_certificate_remove.c + + Files are modified or added to support multiple extensions: + nx_secure_tls.h + nx_secure_tls_process_clienthello.c + nx_secure_tls_process_clienthello_extensions.c + nx_secure_tls_process_serverhello.c + nx_secure_tls_process_serverhello_extensions.c + nx_secure_tls_session_sni_extension_parse.c + nx_secure_tls_session_sni_extension_set.c + nxe_secure_tls_session_sni_extension_parse.c + nxe_secure_tls_session_sni_extension_set.c + + Files are modified or added to support DTLS: + nxe_secure_dtls_packet_allocate.c + nxe_secure_dtls_session_create.c + nxe_secure_dtls_session_delete.c + nxe_secure_dtls_session_end.c + nxe_secure_dtls_session_receive.c + nxe_secure_dtls_session_reset.c + nxe_secure_dtls_session_send.c + nxe_secure_dtls_session_start.c + nx_secure_dtls_allocate_handshake_packet.c + nx_secure_dtls_api.h + nx_secure_dtls_client_handshake.c + nx_secure_dtls.h + nx_secure_dtls_hash_record.c + nx_secure_dtls_packet_allocate.c + nx_secure_dtls_process_clienthello.c + nx_secure_dtls_process_handshake_header.c + nx_secure_dtls_process_header.c + nx_secure_dtls_process_helloverifyrequest.c + nx_secure_dtls_process_record.c + nx_secure_dtls_retransmit.c + nx_secure_dtls_retransmit_queue_flush.c + nx_secure_dtls_send_clienthello.c + nx_secure_dtls_send_handshake_record.c + nx_secure_dtls_send_helloverifyrequest.c + nx_secure_dtls_send_record.c + nx_secure_dtls_send_serverhello.c + nx_secure_dtls_server_handshake.c + nx_secure_dtls_session_cache.c + nx_secure_dtls_session_create.c + nx_secure_dtls_session_delete.c + nx_secure_dtls_session_end.c + nx_secure_dtls_session_receive.c + nx_secure_dtls_session_reset.c + nx_secure_dtls_session_send.c + nx_secure_dtls_session_start.c + nx_secure_dtls_verify_mac.c + nx_secure_tls_check_protocol_version.c + nx_secure_tls_finished_hash_generate.c + nx_secure_tls_handshake_hash_update.c + nx_secure_tls_newest_supported_version.c + nx_secure_tls_process_certificate_request.c + nx_secure_tls_send_certificate_verify.c + + Files are modified or added to optimize the logic: + nx_secure_tls_client_handshake.c + nx_secure_tls_ciphersuite_lookup.c + nx_secure_tls_finished_hash_generate.c + nx_secure_tls_generate_keys.c + nx_secure_tls_handshake_process.c + nx_secure_tls_key_material_init.c + nx_secure_tls_process_certificate_request.c + nx_secure_tls_process_certificate_verify.c + nx_secure_tls_process_changecipherspec.c + nx_secure_tls_process_header.c + nx_secure_tls_process_remote_certificate.c + nx_secure_tls_send_alert.c + nx_secure_tls_send_certificate.c + nx_secure_tls_send_certificate_verify.c + nx_secure_tls_send_changecipherspec.c + nx_secure_tls_send_clienthello.c + nx_secure_tls_send_record.c + nx_secure_tls_send_server_key_exchange.c + nx_secure_tls_send_serverhello.c + nx_secure_tls_server_handshake.c + nx_secure_tls_session_create.c + nx_secure_tls_session_iv_size_get.c + nx_secure_tls_session_keys_set.c + nx_secure_tls_session_start.c + nx_secure_tls_verify_mac.c + nx_secure_x509_certificate_list_find.c + nx_secure_x509_remote_endpoint_certificate_get.c + nx_secure_x509_store_certificate_add.c + nxe_secure_tls_packet_allocate.c + nxe_secure_tls_session_create.c + + Files are modified or added to support renegotiation: + nx_secure_tls.h + nx_secure_tls_client_handshake.c + nx_secure_tls_process_clienthello.c + nx_secure_tls_process_finished.c + nx_secure_tls_send_clienthello.c + nx_secure_tls_send_finished.c + nx_secure_tls_send_hellorequest.c + nx_secure_tls_send_serverhello.c + nx_secure_tls_session_receive.c + nx_secure_tls_session_receive_records.c + nx_secure_tls_session_renegotiate.c + nx_secure_tls_session_renegotiation_callback_set.c + nx_secure_tls_session_reset.c + nxe_secure_tls_session_renegotiate.c + nxe_secure_tls_session_renegotiation_callback_set.c + + Files are modified to support more ciphersuites: + nx_secure_tls.h + nx_secure_tls_process_clienthello.c + nx_secure_tls_record_payload_decrypt.c + nx_secure_tls_record_payload_encrypt.c + nx_secure_tls_send_certificate_verify.c + nx_secure_tls_send_client_key_exchange.c + nx_secure_tls_send_clienthello.c + + Files are modified to support ECJPAKE for DTLS: + nx_secure_tls.h + nx_secure_tls_generate_keys.c + nx_secure_tls_generate_premaster_secret.c + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_process_server_key_exchange.c + nx_secure_tls_psk_add.c + nx_secure_tls_record_payload_decrypt.c + nx_secure_tls_send_client_key_exchange.c + nx_secure_tls_send_server_key_exchange.c + nxe_secure_tls_psk_add.c + + Files are modified to fix compiler warnings: + nx_secure_tls_process_clienthello.c + nx_secure_tls_record_payload_decrypt.c + nx_secure_tls_remote_certificate_verify.c + nx_secure_tls_send_certificate.c + nx_secure_tls_session_end.c + nx_secure_x509.c + nx_secure_x509_certificate_chain_verify.c + nx_secure_x509_certificate_list_add.c + nx_secure_x509_certificate_list_find.c + nx_secure_x509_certificate_list_remove.c + nx_secure_x509_certificate_verify.c + nx_secure_x509_remote_endpoint_certificate_get.c + + Files are modified to support TLS protocol version override: + nx_secure_tls_check_protocol_version.c + nx_secure_tls_newest_supported_version.c + nx_secure_tls_session_reset.c + + Files are modified to support context specific ASN.1 tags: + nx_secure_x509_asn1_tlv_block_parse.c + nx_secure_x509_pkcs1_rsa_private_key_parse.c + nx_secure_x509_pkcs7_decode.c + + Files are added to hash record: + nx_secure_tls_record_hash_calculate.c + nx_secure_tls_record_hash_initialize.c + nx_secure_tls_record_hash_update.c + + Files are added to free remote certificate: + nx_secure_tls_remote_certificate_free.c + nx_secure_tls_remote_certificate_free_all.c + nxe_secure_tls_remote_certificate_free_all.c + + Files are added to support vendor-defined private key type: + nx_secure_tls_process_client_key_exchange.c + nx_secure_tls_send_certificate_verify.c + nx_secure_tls_send_client_key_exchange.c + nx_secure_x509.c + nx_secure_x509_certificate_initialize.c + nx_secure_x509_certificate_verify.c + nx_secure_x509_pkcs1_rsa_private_key_parse.c + nxe_secure_x509_certificate_initialize.c + + Files are added to support empty certificate messages: + nx_secure_tls_send_certificate.c + nx_secure_tls_send_certificate_verify.c + + Files are added for server certificate API: + nx_secure_tls_server_certificate_add.c + nx_secure_tls_server_certificate_find.c + nx_secure_tls_server_certificate_remove.c + nxe_secure_tls_server_certificate_add.c + nxe_secure_tls_server_certificate_find.c + nxe_secure_tls_server_certificate_remove.c + + Files are modified to add compare bit fields: + nx_secure_tls_send_certificate.c + nx_secure_x509.h + nx_secure_x509_certificate_chain_verify.c + nx_secure_x509_certificate_list_remove.c + nx_secure_x509_distinguished_name_compare.c + nx_secure_x509_remote_endpoint_certificate_get.c + + Other modified files: + nx_secure_tls.h Supported to configure symbols for PSK buffers. + Sorted the functions by alphabet order. + nx_secure_tls_api.h Sorted the API by alphabet order. + nx_secure_tls_check_protocol_version.c Supported TLS protocol version override. + nx_secure_tls_client_handshake.c Handled the return values. + Fixed packet leak issue. + nx_secure_tls_initialize.c Fixed the function name. + nx_secure_port.h Fixed a typo. + nx_secure_tls_generate_keys.c Added additional check for missing PRF. + nx_secure_tls_map_error_to_alert.c Updated mapping for certificate + verification failure. + nx_secure_tls_process_client_key_exchange.c Updated to new crypto API. + nx_secure_tls_process_record.c Fixed record length check. + nx_secure_tls_psk_find.c Returned the first associated PSK when + no hint is received. + nx_secure_tls_record_payload_encrypt.c Supported data in packet chain. + nx_secure_tls_remote_certificate_verify.c Added expiration data check. + nx_secure_tls_send_certificate.c Released mutex before block operation. + nx_secure_tls_send_clienthello.c Supported extensions. + nx_secure_tls_send_handshake_record.c Released packet on error. + nx_secure_tls_send_record.c Let the caller release packet when TCP send failed. + nx_secure_tls_send_serverhello.c Supported extensions. + nx_secure_tls_server_handshake.c Added support for server-side client + certificate verification. + Released packet on send failed. + nx_secure_tls_session_end.c Improved TLS session shutdown. + Released packet on send failed. + nx_secure_tls_session_reset.c Cleaned up existing certificate. + nx_secure_x509.c Added support for extension parsing. + nx_secure_x509.h Added support for extension parsing and fixed typos for API names. + nx_secure_x509_certificate_list_add.c Fixed the logic to add certificate with duplicate ID. + nx_secure_x509_distinguished_name_compare.c Supported empty name comparison. + Improved the distinguished name comparison logic. + nx_secure_x509_find_certificate_methods.c Updated API to take an ID for the + algorithm desired. + nx_secure_x509_local_device_certificate_get.c Used pre-defined symbols instead of + hardcoded values. + nx_secure_x509_pkcs7_decode.c Fixed signature length check. + + Other added files: + nx_secure_tls_active_certificate_set.c Set the active local certificate. + nx_secure_tls_local_certificate_find.c New API to find certificates by Common Name. + nx_secure_tls_send_certificate_request.c Populated an NX_PACKET with a CertificateRequest message. + nx_secure_tls_session_certificate_callback_set.c + Set up a function pointer that TLS will + invoke when a certificate is received. + nx_secure_tls_session_client_verify_disable.c Disabled client certificate verification. + nx_secure_tls_session_client_verify_enable.c Enabled client certificate verification. + nx_secure_tls_session_protocol_version_override.c + Overrided the TLS protocol version. + nx_secure_x509_certificate_revocation_list_parse.c + Supported revocation list parse. + nx_secure_x509_common_name_dns_check.c Checked a certificate's Common Name + against a Top Level Domain name (TLD). + nx_secure_x509_crl_revocation_check.c Supported revocation check. + nx_secure_x509_crl_verify.c Verified CRL. + nx_secure_x509_distinguished_name_parse.c Parsed a DER-encoded X.509 Distinguished Name. + nx_secure_x509_dns_name_initialize.c Initialized an X.509 DNS name. + nx_secure_x509_expiration_check.c Checked a certificate's validity period. + nx_secure_x509_extended_key_usage_extension_parse.c + Parse through an X.509 certificate for + an Extended KeyUsage extension. + nx_secure_x509_extension_find.c Added support for X.509 extension parsing. + nx_secure_x509_key_usage_extension_parse.c Parse through an X.509 certificate for + a KeyUsage extension. + nx_secure_x509_local_certificate_find.c Searched a given certificate store. + nx_secure_x509_oid_parse.c Parsed a DER-encoded Object Identifier string. + nx_secure_x509_subject_alt_names_find.c Searched X.509 subjectAltName. + nx_secure_x509_wildcard_compare.c Compared wildcard names. + nxe_secure_tls_active_certificate_set.c Set the active local certificate. + nxe_secure_tls_local_certificate_find.c New API to find local certificate by Common Name. + nxe_secure_tls_session_certificate_callback_set.c + Set up a function pointer that TLS will + invoke when a certificate is received. + nxe_secure_tls_session_client_verify_disable.c Disabled client certificate verification. + nxe_secure_tls_session_client_verify_enable.c Enabled client certificate verification. + nxe_secure_tls_session_protocol_version_override.c + Overrided the TLS protocol version. + nxe_secure_x509_common_name_dns_check.c Checked a certificate's Common Name + against a Top Level Domain name (TLD). + nxe_secure_x509_crl_revocation_check.c Supported revocation check. + nxe_secure_x509_dns_name_initialize.c Initialized an X.509 DNS name. + nxe_secure_x509_extension_find.c Added support for X.509 extension parsing. + nxe_secure_x509_extended_key_usage_extension_parse.c + Parse through an X.509 certificate for + an Extended KeyUsage extension. + nxe_secure_x509_key_usage_extension_parse.c Parse through an X.509 certificate for + a KeyUsage extension. + + Files renamed: + + File Name in Release 5.10 File Name in Release 5.11 + nx_secure_tls_process_server_certificate.c nx_secure_tls_process_remote_certificate.c + +06/09/2017 Initial NX Secure generic code version 5.10. + + +3. NetXDuo Secure Crypto + +08/15/2019 NX Secure generic code version 5.12. This release includes the + following major features: + + Files are modified to provide consistent error checking of return + values from generic NX_CRYPTO cipher routine APIs: + nx_crypto_const.h + nx_crypto_drbg.c + nx_crypto_ecjpake.c + nx_crypto_ecjpake.h + nx_crypto_phash.c + nx_crypto_pkcs1_v1.5.c + + Files are modified to improve error checking: + nx_crypto_ec.c + nx_crypto_ec.h + nx_crypto_ecdh.c + nx_crypto_ecdsa.c + nx_crypto_ecjpake.c + + Files are modified to fix the compiler warnings for cast-function-type: + nx_crypto_3des.c + nx_crypto_des.c + nx_crypto_des.h + nx_crypto_md5.c + nx_crypto_md5.h + nx_crypto_sha1.c + nx_crypto_sha1.h + + Files are modified to address issues raised by static anaylsis tools: + nx_crypto_aes.c + nx_crypto_cbc.c + nx_crypto_drbg.c + nx_crypto_ec.c + nx_crypto_ecjpake.c + nx_crypto_huge_number.c + nx_crypto_phash.c + nx_crypto_sha5.c + + Files are modified to add an "extern 'C'" wrapper for C++ compilers: + nx_crypto.h + nx_crypto_3des.h + nx_crypto_const.h + nx_crypto_des.h + nx_crypto_ecdsa.h + nx_crypto_hkdf.h + nx_crypto_hmac_md5.h + nx_crypto_hmac_sha1.h + nx_crypto_hmac_sha2.h + nx_crypto_hmac_sha5.h + nx_crypto_md5.h + nx_crypto_phash.h + nx_crypto_pkcs1_v1.5.h + nx_crypto_sha1.h + nx_crypto_sha2.h + nx_crypto_sha5.h + nx_crypto_tls_prf_1.h + nx_crypto_tls_prf_sha256.h + nx_crypto_tls_prf_sha384.h + nx_crypto_tls_prf_sha512.h + + Files are modified to avoid unaligned memory access: + nx_crypto_aes.c + nx_crypto_ccm.c + nx_crypto_ctr.c + nx_crypto_drbg.c + nx_crypto_xcbc_mac.c + + Files are modified or added to be FIPS 140-2 compliant: + nx_crypto.h + nx_crypto_3des.c + nx_crypto_3des.h + nx_crypto_aes.c + nx_crypto_cbc.c + nx_crypto_cbc.h + nx_crypto_ccm.c + nx_crypto_ccm.h + nx_crypto_const.h + nx_crypto_ctr.c + nx_crypto_ctr.h + nx_crypto_des.c + nx_crypto_des.h + nx_crypto_dh.c + nx_crypto_dh.h + nx_crypto_ec.c + nx_crypto_ec.h + nx_crypto_ecjpake.c + nx_crypto_ecjpake.h + nx_crypto_generic_ciphersuites.c + nx_crypto_hmac.c + nx_crypto_hmac.h + nx_crypto_hmac_md5.c + nx_crypto_hmac_md5.h + nx_crypto_hmac_sha1.c + nx_crypto_hmac_sha1.h + nx_crypto_hmac_sha2.c + nx_crypto_hmac_sha2.h + nx_crypto_hmac_sha5.c + nx_crypto_hmac_sha5.h + nx_crypto_huge_number.c + nx_crypto_huge_number.h + nx_crypto_huge_number_extended.c + nx_crypto_initialize.c + nx_crypto_md5.c + nx_crypto_md5.h + nx_crypto_method_self_test.c + nx_crypto_method_self_test.h + nx_crypto_method_self_test_3des.c + nx_crypto_method_self_test_aes.c + nx_crypto_method_self_test_des.c + nx_crypto_method_self_test_drbg.c + nx_crypto_method_self_test_ecdh.c + nx_crypto_method_self_test_ecdsa.c + nx_crypto_method_self_test_hmac_md5.c + nx_crypto_method_self_test_hmac_sha.c + nx_crypto_method_self_test_md5.c + nx_crypto_method_self_test_pkcs1.c + nx_crypto_method_self_test_prf.c + nx_crypto_method_self_test_rsa.c + nx_crypto_method_self_test_sha.c + nx_crypto_module_start.c + nx_crypto_null.h + nx_crypto_null_cipher.c + nx_crypto_phash.c + nx_crypto_phash.h + nx_crypto_pkcs1_v1.5.c + nx_crypto_pkcs1_v1.5.h + nx_crypto_rsa.c + nx_crypto_sha1.c + nx_crypto_sha1.h + nx_crypto_sha2.c + nx_crypto_sha2.h + nx_crypto_sha5.c + nx_crypto_sha5.h + nx_crypto_tls_prf_1.c + nx_crypto_tls_prf_1.h + nx_crypto_tls_prf_sha256.c + nx_crypto_tls_prf_sha256.h + nx_crypto_xcbc_mac.c + nx_crypto_xcbc_mac.h + + Files are modified to add operation method for elliptic curve cryptography: + nx_crypto.h + nx_crypto_const.h + nx_crypto_ec.c + nx_crypto_ec.h + nx_crypto_ecjpake.c + nx_crypto_ecjpake.h + nx_crypto_generic_ciphersuites.c + + Other modified files: + nx_crypto.h Avoided unexpected optimization on memset. + nx_crypto_aes.h Split operation functions for different modes. + nx_crypto_aes.c Split operation functions for different modes. + nx_crypto_const.h Set algorithm IDs to unique values. + nx_crypto_dh.c Fixed key length check. + nx_crypto_ecjpake.c Generated key pair using extra bits. + nx_crypto_generic_ciphersuites.c Split crypto methods to nx_crypto_methods.c, + remove CCM ciphersuites when AEAD was disabled. + nx_crypto_huge_number.c Optimized the logic. + nx_crypto_method_self_test_drbg.c Added return value checking of nx_crypto_init. + nx_crypto_rsa.h Modified to support RSA 4096 bits by default. + nx_crypto_generic_ciphersuites.c Removed CCM ciphersuites when AEAD was disabled. + + Other added files: + nx_crypto_drbg.c Supported DRBG. + nx_crypto_drbg.h Supported DRBG. + nx_crypto_ecdh.c Supported ECDH. + nx_crypto_ecdh.h Supported ECDH. + nx_crypto_ecdsa.c Supported ECDSA. + nx_crypto_ecdsa.h Supported ECDSA. + nx_crypto_methods.c Split from nx_crypto_generic_ciphersuites.c + nx_crypto_tls_prf_sha384.c Supported PRF SHA384 + nx_crypto_tls_prf_sha384.h Supported PRF SHA384 + nx_crypto_tls_prf_sha512.c Supported PRF SHA512 + nx_crypto_tls_prf_sha512.h Supported PRF SHA512 + +12/15/2017 Initial Crypto generic code version 5.11. + + +4. NetXDuo Addons + +Release 5.12 08-15-2019 + + demo_netx_auto_ip.c Improved string length verification. + nx_auto_ip.c Modified comments. + nx_auto_ip.h Modified comments. + + bsd_demo_raw.c Improved string length verification. + bsd_demo_tcp.c Improved string length verification. + bsd_demo_udp.c Improved string length verification. + nxd_bsd.h Supported BSD raw socket. + Added C++ extern wrapper. + nxd_bsd.c Supported BSD raw socket. + Added mutex protection. + Fixed BSD time calculation. + Improved packet length verification. + Modified API functions: + connect - Initialized the local interface after bind. + getaddrinfo - Fixed NULL pointer access. + inet_pton - Corrected dst buffer check. + + nxd_dhcp_client.c Improved string length verification. + Improved packet length verification. + Corrected the logic for checking DHCP message. + Fixed the outgoing interface. + Function is modified: + _nx_dhcp_client_send_with_zero_source_address() + Added check for invalid address. + nxd_dhcp_server.c Improved string length verification. + Corrected the interface for sending response in _nx_dhcp_respond_to_client_message(). + demo_netxduo_dhcpv6.c Improved string length verification. + nxd_dhcpv6_client.c Improved string length verification. + Validated the available payload in _nx_dhcpv6_send_request(). + Improved packet length verification. + nxd_dhcpv6_client.h Improved string length verification. + nxd_dhcpv6_server.c Added new APIs to improve buffer/string length verification. + Validated the DUID private length in _nx_dhcpv6_add_client_record(). + Improved packet length verification. + nxd_dhcpv6_server.h Added new APIs to improve buffer/string length verification. + + nxd_dns.h Improved internal logic. + nxd_dns.c Improved packet payload verification in _nx_dns_packet_pool_set(). + Improved string length verification. + Functions are modified: + _nx_dns_cache_delete_string() + _nx_dns_cache_find_answer() + _nx_dns_host_by_address_get_internal() + _nx_dns_process_a_type() + _nx_dns_process_aaaa_type() + _nx_dns_process_cname_type() + _nx_dns_process_mx_type() + _nx_dns_process_ns_type() + _nx_dns_process_soa_type() + _nx_dns_process_srv_type() + _nx_dns_process_txt_type() + _nx_dns_question_add() + _nx_dns_send_query_by_address() + Improved internal logic. + Functions are modified: + _nx_dns_send_query_by_address() + _nx_dns_send_query_get_rdata_by_name() + _nx_dns_name_string_unencode() + _nxde_dns_host_by_name_get() + Fixed compiler warnings in _nx_dns_process_txt_type(). + + demo_netxduo_ftp.c Improved string length verification. + demo_netxduo_ftp_client_pasv.c Improved string length verification. + nxd_ftp_client.c Improved internal logic. + Improved string length verification. + Improved buffer length verification. + nxd_ftp_client.h Removed FileX dependency. + Improved string length verification. + nxd_ftp_server.c Fixed a bug when there were more than one connection. + Fixed socket state check on receiving RST packet. + Improved string length verification. + Improved buffer length verification. + + nxd_http_client.h Included necessary headers. + Improved string length verification. + nxd_http_server.h Included necessary headers. + Improved string length verification. + nxd_http_client.c Added check of null pointer for username and password. + Improved packet length verification. + Improved string length verification. + nxd_http_server.c Fixed buffer size for DELETE method in _nx_http_server_digest_authenticate(). + Fixed compiler warnings in _nx_http_server_hex_ascii_convert(). + Improved logic to avoid timing attack in _nx_http_server_digest_authenticate() + and _nx_http_server_basic_authenticate(). + Improved string length verification. + Created function nx_http_server_type_retrieve() as + an alternative to nx_http_server_type_get(). + Added digest authentication callback support. + Improved packet length verification. + + demo_netx_duo_mdns.c Added simultaneous interface support. + nxd_mdns.c Added local resource records as known answer. + Functions are modified: + _nx_mdns_data_send() + _nx_mdns_known_answer_find() + Initialized is_present to fix the bug for processing service change notify. + Functions is modified: + _nx_mdns_cache_add_resource_record() + Corrected the cache pointer. + Functions is modified: + _nx_mdns_service_lookup() + Added simultaneous interface support. + Functions are modified or added or deleted: + _nx_mdns_additional_a_aaaa_find() + _nx_mdns_additional_resource_record_find() + _nx_mdns_address_change_process() + _nx_mdns_announcing_send() + _nx_mdns_cache_add_resource_record() + _nx_mdns_cache_find_resource_record() + _nx_mdns_continuous_query() + _nx_mdns_create() + _nx_mdns_data_send() + _nx_mdns_disable() + _nx_mdns_enable() + _nx_mdns_host_address_get() + _nx_mdns_host_name_register() + _nx_mdns_known_answer_find() + _nx_mdns_one_shot_query() + _nx_mdns_packet_process() + _nx_mdns_packet_rr_process() + _nx_mdns_packet_rr_set() + _nx_mdns_packet_send() + _nx_mdns_probing_send() + _nx_mdns_query_check() + _nx_mdns_query_send() + _nx_mdns_response_send() + _nx_mdns_rr_a_aaaa_add() + _nx_mdns_rr_nsec_add() + _nx_mdns_rr_parameter_set() + _nx_mdns_rr_ptr_add() + _nx_mdns_rr_txt_add() + _nx_mdns_service_add() + _nx_mdns_service_addition_info_get() + _nx_mdns_service_change_notify_process() + _nx_mdns_service_continuous_query() + _nx_mdns_service_delete() + _nx_mdns_service_interface_delete() + _nx_mdns_service_lookup() + _nx_mdns_service_one_shot_query() + _nx_mdns_service_query_stop() + _nx_mdns_timer_event_process() + _nx_mdns_thread_entry() + _nxe_mdns_service_add() + Fixed compiler warnings in _nx_mdns_ipv6_address_change_notify(). + Fixed ipv6 address string. + Functions are modified: + _nx_mdns_cache_delete_rr_string() + _nx_mdns_cache_find_resource_record() + _nx_mdns_packet_rr_data_set() + _nx_mdns_rr_a_aaaa_add() + Improve string length verification. + Functions are modified: + _nx_mdns_create() + _nx_mdns_disable() + _nxe_mdns_create() + _nxe_mdns_domain_name_set() + _nxe_mdns_service_add() + _nx_mdns_service_add() + _nxe_mdns_service_delete() + _nx_mdns_service_interface_delete() + _nxe_mdns_service_one_shot_query() + _nx_mdns_service_one_shot_query() + _nx_mdns_one_shot_query() + _nxe_mdns_service_continuous_query() + _nx_mdns_continuous_query() + _nxe_mdns_service_query_stop() + _nx_mdns_service_query_stop() + _nxe_mdns_service_lookup() + _nx_mdns_service_lookup() + _nxe_mdns_host_address_get() + _nx_mdns_host_address_get() + _nx_mdns_rr_ptr_add() + _nx_mdns_rr_srv_add() + _nx_mdns_rr_txt_add() + _nx_mdns_rr_nsec_add() + _nx_mdns_rr_parameter_set() + _nx_mdns_service_name_resolve() + _nx_mdns_service_name_assemble() + _nx_mdns_host_name_register() + _nx_mdns_timer_event_process() + _nx_mdns_probing_send() + _nx_mdns_packet_rr_add() + _nx_mdns_packet_rr_set() + _nx_mdns_packet_rr_process() + _nx_mdns_packet_rr_data_set() + _nx_mdns_conflict_process() + _nx_mdns_service_change_notify_process() + _nx_mdns_service_addition_info_get() + _nx_mdns_cache_add_resource_record() + _nx_mdns_cache_delete_string() + _nx_mdns_known_answer_find() + _nx_mdns_query_check() + _nx_mdns_service_mask_match() + Improve packet length verification. + Functions are modified: + _nx_mdns_packet_create() + _nx_mdns_packet_process() + nxd_mdns.h Added simultaneous interface support. + Fixed ipv6 address string. + Improve string length verification. + + nxd_mqtt_client.c Corrected the mutex processing for receiving MQTT CONNACK. + Added packet receive notify. + Checked return status of TLS setup in _nxd_mqtt_client_secure_connect(). + Deleted TLS session when disconnecting MQTT in _nxd_mqtt_process_disconnect(). + Deleted TLS session when MQTT connect failed. + Improved internal logic. + Corrected timeout for TLS session. + Improved packet length verification. + nxd_mqtt_client.h Added packet receive notify. + Changed the return type of tls_setup to UINT. + + demo_netx_nat.c Improved string length verification. + + nxd_pop3_client.c Improved packet length verification. + Improved internal logic. + Improved string length verification. + nxd_pop3_client.h Improved string length verification. + + demo_netx_ppp.c Improved string length verification. + Improved the logic. + + + nx_ppp.c Improved buffer length verification. + Functions are modified or added: + _nx_ppp_ipcp_configure_check() + _nx_ppp_lcp_configuration_retrieve() + Improved packet length verification. + Functions are modified or added: + _nx_ppp_chap_challenge_respond() + _nx_ppp_chap_challenge_send() + _nx_ppp_create() + _nx_ppp_ipcp_configure_check() + _nx_ppp_lcp_code_reject() + _nx_ppp_lcp_configuration_retrieve() + _nx_ppp_lcp_configure_reply_send() + _nx_ppp_pap_authentication_request() + _nx_ppp_ping_request() + _nx_ppp_receive_packet_process() + Improved internal logic. + Function is modified: + _nx_ppp_receive_packet_get() + Fixed the bug for chained packet. + Function is modified: + _nx_ppp_netx_packet_transfer() + Improved string length verification. + Functions are modified: + _nx_ppp_pap_authentication_request() + _nx_ppp_pap_login_valid() + _nx_ppp_chap_challenge_send() + _nx_ppp_chap_challenge_respond() + _nx_ppp_chap_challenge_validate() + _nx_ppp_pap_login_valid() + nx_ppp.h Improved string length verification. + Improved packet length verification. + + nx_pppoe_client.c Improved string length verification. + Corrected the function name. + Improved internal logic. + Improved buffer length verification. + Fixed system state check. + nx_pppoe_client.h Improved internal logic. + Improved string length verification. + nx_pppoe_server.c Improved string length verification. + Improved buffer length verification. + + nxd_smtp_client.h Improved string length verification. + nxd_smtp_client.c Improved string length verification. + Improved buffer length verification. + + nxd_snmp.h Improved string length verification. + + nxd_snmp.c Improved buffer length verification. + Improved string length verification. + Fixed a compiler warning. + Modified nx_snmp_version_3_process to check for string size before writing PDU Engine name. + + demo_netxduo_sntp_client.c Fixed compiler warnings. + nxd_sntp_client.c Improved packet length verification. + Corrected the length of memset. + Adjusted local time before updating SNTP server time. + Kept microseconds precision while adding milliseconds. + nxd_sntp_client.h Adjusted local time before updating SNTP server time. + + nxd_telnet_server.c Improved packet length verification. + Fixed socket state check on receiving RST packet. + Fixed a bug when there were more than one connection. + + demo_netxduo_tftp.c Improved string length verification. + nxd_tftp_client.c Improved string length verification. + Improved packet length verification. + nxd_tftp_server.c Improved string length verificaiton. + Improved packet length verification. + + demo_netxduo_https.c Improved string length verification. + nx_web_http_common.h Improved string length verification. + nx_web_http_client.c Deleted TLS session in _nx_web_http_client_error_exit(). + Cleared request packet. + Functions are modified: + _nx_web_http_client_delete() + _nx_web_http_client_request_initialize() + _nx_web_http_client_cleanup() + Added check of client state in _nx_web_http_client_response_body_get(). + Checked if request packet was allocated. + Functions are modified: + _nx_web_http_client_request_header_add() + _nxe_web_http_client_request_send() + _nx_web_http_client_request_send() + Improved packet length verification. + Fixed the issue of reconnection. + Improved string length verification. + Fixed the bug of packet release. + nx_web_http_client.h Included necessary headers. + Improved string length verification. + nx_web_http_server.c Check content length in _nxe_web_http_server_packet_content_find(). + Fixed buffer size for DELETE method in _nx_web_http_server_digest_authenticate(). + Improved logic to avoid timing attack in _nx_web_http_server_digest_authenticate() + and _nx_web_http_server_basic_authenticate(). + Added digest authentication callback support. + Improved packet length verification. + Fixed return value when suffix was not found. + Improved string length verification. + Created function nx_web_http_server_type_retrieve() as + an alternative to nx_web_http_server_type_get(). + nx_web_http_server.h Included necessary headers. + Added digest authentication callback support. + Improved string length verification. + nx_tcpserver.c Fixed socket state check on receiving RST packet. + Fixed session reuse issue in _nx_tcpserver_data_process(). + + +Release 5.11 07-15-2018 + + nx_auto_ip.c Modified comments. + nx_auto_ip.h Modified comments. + + bsd_demo_raw.c Supported for disabling IPv4 feature. + bsd_demo_tcp.c Supported for disabling IPv4 feature. + bsd_demo_udp.c Supported for disabling IPv4 feature. + nxd_bsd.c Improved internal logic. + Modified API functions: + getaddrinfo - Fixed a bug that AF_INET info was returned even ai_family was set to AF_INET6. + inet_pton - Fixed compiler warnings. + Fixed endian issue for IPv6 address when ntohl is not defined. + nx_bsd_socket_set_inherited_settings - Removed NX_BSD_INHERIT_LISTENER_SOCKET_SETTINGS. + nx_bsd_raw_packet_info_extract - Used interface index since nx_interface_ip_instance + is removed from interface structure. + Removed NetX trace event. + Supported for disabling IPv4 feature. + Modified internal functions: + nx_bsd_udp_receive_notify - used API to receive UDP packet to verify checksum. + nx_bsd_udp_packet_received - used API to receive UDP packet to verify checksum. + _nxd_bsd_ipv6_packet_send - Checked interface for router lookup. + Moved destination and ND cache tables to IP structure. + nxd_bsd.h Removed NX_BSD_INHERIT_LISTENER_SOCKET_SETTINGS which is now enabled, not optional + and NX_BSD_TIMED_WAIT_TIMEOUT - no longer in use. + Used time_t from time.h. + + demo_netxduo_dhcp.c Corrected the host name. + nxd_dhcp_client.c Returned the option value as host byte order. + Function is modified: + _nx_dhcp_interface_user_option_retrieve() + Fixed compiler errors when event trace is enabled. + Function is modified: + _nx_dhcp_client_send_with_zero_source_address() + Added a check for invalid characters in the host name. + Function is modified: + _nx_dhcp_create() + Improved packet length verification. + Function is modified: + _nx_dhcp_packet_process() + Supported for adding user supplied options. + Functions are added or modified: + _nx_dhcp_send_request_internal() + _nx_dhcp_user_option_add_callback_set() + _nxe_dhcp_user_option_add_callback_set() + Fixed a bug that mutex is not released before return. + Function is modified: + _nx_dhcp_client_send_with_zero_source_address() + nxd_dhcp_client.h Added a status for invalid characters in the host name. + Supported for adding user supplied options. + Updated the default value of NX_DHCP_CLIENT_MAX_RECORDS. + nxd_dhcp_server.c Fixed an error checking for interface index in _nx_dhcp_create_server_ip_address_list(). + Removed #if 0 code for feature never implemented in + _nx_dhcp_server_extract_information(). + Improved internal logic. + Fixed a compiler warning. + nxd_dhcp_server.h Removed unused symbol:NX_DHCP_CLIENT_IDENTIFIER_MAX. + demo_netxduo_dhcpv6.c Corrected the symbol name and value for hardware type. + demo_netxduo_dhcpv6_client.c Corrected the symbol name and value for hardware type. + nxd_dhcpv6_client.c Corrected the symbol name and value for hardware type. + Function is modified: + _nxe_dhcpv6_create_client_duid() + Added support for EUI-64 hardware type. + Functions are modified: + _nx_dhcpv6_add_client_duid() + _nx_dhcpv6_add_server_duid() + _nx_dhcpv6_create_client_duid() + _nx_dhcpv6_process_client_duid() + _nx_dhcpv6_process_server_duid() + _nxe_dhcpv6_create_client_duid() + Added function to set the destination address where DHCP message should be sent. + Functions are modified: + _nx_dhcpv6_client_create() + _nx_dhcpv6_client_set_destination_address() + _nxe_dhcpv6_client_set_destination_address() + Corrected the logic for setting the source address. + Function is modified: + _nx_dhcpv6_send_request() + Supported for rapid option. + Function is modified: + _nx_dhcpv6_scan_packet_options() + Improved packet length verification. + Function is modified: + _nx_dhcpv6_packet_process() + Improved internal logic. + Function is modified: + _nx_dhcpv6_add_client_ia() + _nx_dhcpv6_client_create() + _nx_dhcpv6_create_client_duid() + _nx_dhcpv6_get_valid_ip_address_lease_time() + _nx_dhcpv6_process_domain_name() + _nx_dhcpv6_process_server_duid() + _nx_dhcpv6_remove_assigned_address() + Added support for setting DHCPv6 server as default router. + Functions are modified: + _nx_dhcpv6_packet_process() + _nx_dhcpv6_register_IP_address() + _nx_dhcpv6_remove_assigned_address() + nxd_dhcpv6_server.c Fixed the bug for checking length. + Function is modified: + _nx_dhcpv6_server_process_iana() + Improved packet length verification. + Function is modified: + _nx_dhcpv6_listen_for_messages() + Improved internal logic. + Functions are modified: + _nx_dhcpv6_assign_ip_address() + _nx_dhcpv6_find_client_record_by_duid() + _nx_dhcpv6_add_ip_address_lease() + _nx_dhcpv6_create_ip_address_range() + _nx_dhcpv6_reserve_ip_address_range() + _nx_dhcpv6_retrieve_client_record() + _nx_dhcpv6_server_utility_time_randomize() + nxd_dhcpv6_server.h Corrected the symbol name and value for hardware type. + + demo_netxduo_dns.c Supported for disabling IPv4 feature. + nxd_dns.c Added the check for record count pointer. + Functions are modified: + _nxe_dns_ipv4_address_by_name_get() + _nxde_dns_ipv6_address_by_name_get() + _nxe_dns_domain_name_server_get() + _nxe_dns_domain_mail_exchange_get() + _nxe_dns_domain_service_get() + Supported for disabling IPv4 feature. + Dropped the chained packet to avoid memory overflow. + Improved packet length verification. + Fixed a bug that mutex is not released before return. + Improved internal logic. + Functions are modified: + _nx_dns_cname_get() + _nx_dns_host_text_get() + _nx_dns_authority_zone_start_get() + _nx_dns_host_resource_data_by_name_get() + _nx_dns_response_process() + _nx_dns_server_remove_internal() + _nx_dns_process_cname_type() + _nx_dns_process_txt_type() + _nx_dns_process_soa_type() + _nx_dns_cache_add_string() + _nx_dns_cache_delete_string() + + nxd_ftp_client.c Supported for disabling IPv4 feature. + Dropped the chained packet to avoid memory overflow. + Improved internal logic. + nxd_ftp_server.c Made the sprintf formats the same for LIST the command case in nx_ftp_server_command_process(). + Added a sanity check for minimum packet payload size of the FTP server in _nx_ftp_server_create_internal(). + Supported for disabling IPv4 feature. + Dropped the chained packet to avoid memory overflow. + Improved internal logic. + Corrected the logic for processing login/out. + Fixed a bug that causes crash when month is invalid. + nxd_ftp_server.h Created a configuration option for defining minimum FTP server packet pool payload, NX_FTP_SERVER_MIN_PACKET_PAYLOAD, + and created an error status NX_FTP_INSUFFICIENT_PACKET_PAYLOAD if the payload is too small. + Supported for disabling IPv4 feature. + + demo_netxduo_http.c Supported for disabling IPv4 feature. + nxd_http_server.c Fixed the logic for multi packet GET request. + Improved internal logic. + nxd_http_client.c Supported for disabling IPv4 feature. + + nxd_mqtt_client.c Improved packet length verification. + Removed the usage of global variable for MQTT client. + Added logic to prevent packet ID value from being zero. + Fixed a bug that packet may be queued by TLS and can not be received. + Added a symbol for user to set initial packet ID value. + Improved internal logic. + Modified _nxd_mqtt_process_disconnect to use the NXD_MQTT_SOCKET_TIMEOUT as the wait option + Modified _nxd_mqtt_packet_allocate to use TLS packet allocate for TLS socket. TLS packet allocate routine is able to + take into consideration the TLS header size, including the crypto initial vector area. + Modified _nxd_mqtt_client_publish to fix packet leak, and use packet append API instead of memcpy to prevent data + overflow the packet strcutre. + Modified _nxd_mqtt_client_sub_unsub to fix a ptoential packet leak under error conditions. + Modified _nxd_mqtt_client_disconnect to not exit if the send message calls returns an error. Added a call to delete the timer + so that a subsequent connect call will not error out when it tries to create the already existing timer. + Modified _nxd_mqtt_thread_entry to delete the TCP socket. Added logic to check if + timer, event flag group are already deleted before deleting. Moved the socket delete call to the end of the function + Modified _nxd_mqtt_client_create to create the socket instead of in the connect call. Delete the MQTT thread if an error occurs. + Modified _nxd_mqtt_client_connect to remove the socket create call, and removed socket delete calls where an error is handled. + Delete the timer if an error occurs. Replaced NX_WAIT_FOREVER with NXD_MQTT_SOCKET_TIMEOUT on the socket receive calls. + Modified _nxd_mqtt_client_delete to wait for the nxd_mqtt_client_thread_entry to complete processing the DELETE event. + Modified _nxde_mqtt_client_login_set to allow user to set username but not password. + Added call to delete the MQTT thread after the DELETE event is finished processing. + Supported user defined memory functions. + Added symbols NXD_MQTT_REQUIRE_TLS, NXD_MQTT_SECURE_MEMCPY, NXD_MQTT_SECURE_MEMCMP, NXD_MQTT_SECURE_MEMSET, NXD_MQTT_SECURE_MEMMOVE for + security requirement. + Checked topic name and message lengths in runtime. + Allowed zero length of username and password. + nxd_mqtt_client.h Added NXD_MQTT_SOCKET_TIMEOUT to put a finite timeout for nx_tcp_socket_disconnect. + The default value is NX_WAIT_FOREVER so no difference in behavior should be observed. + Supported user defined memory functions. + + nx_nat.c Set different timeout for TCP and non-TCP seesion. + Functions are modified: + _nx_nat_inbound_entry_find() + _nx_nat_outbound_entry_find() + Added support for replacement when cache is full. + Function is modified: + _nx_nat_entry_create() + Corrected the logic for appending the overflowing data to the new packet. + Function is modified: + _nx_nat_ip_packet_send() + Improved packet length verification. + Function is modified: + _nx_nat_process_packet() + nx_nat.h Added symbols for TCP and non-TCP session timeout. + Added NX_NAT_ENABLE_REPLACEMENT. + + demo_netxduo_pop3_client.c Increased packet payload to 1460 from 500, and clear final_packet local variable in + the loop that iterates to capture all the packets in a mail item. + + nxd_pop3_client.c Corrected the logic in _nx_pop3_client_mail_item_message_get for handling packets with only + the POP3 end marker tag indicating end of mail message. + Supported for disabling IPv4 feature. + Dropped the chained packet to avoid memory overflow. + Improved internal logic. + Fixed the logic for handling message and command in one packet. + nxd_pop3_client.h Fixed the logic for handling message and command in one packet. + + nx_ppp.c Supported for transmitting PPP over Ethernet. + Functions are modified or added: + _nx_ppp_netx_packet_transfer() + _nx_ppp_packet_receive() + _nx_ppp_packet_send_set() + _nx_ppp_packet_transmit() + _nx_ppp_process_deferred_raw_string_send() + _nx_ppp_receive_packet_get() + _nx_ppp_thread_entry() + _nxe_ppp_packet_receive() + _nxe_ppp_packet_send_set() + _nxe_ppp_create() + + _nx_ppp_crc_append() + _nx_ppp_process_deferred_ip_packet_send() + _nx_ppp_lcp_code_reject() + _nx_ppp_lcp_configure_reply_send() + _nx_ppp_lcp_configure_request_send() + _nx_ppp_lcp_configuration_retrieve() + _nx_ppp_lcp_state_machine_update() + _nx_ppp_lcp_terminate_ack_send() + _nx_ppp_lcp_terminate_request_send() + _nx_ppp_pap_authentication_request() + _nx_ppp_pap_authentication_ack() + _nx_ppp_pap_authentication_nak() + _nx_ppp_pap_login_valid() + _nx_ppp_pap_state_machine_update() + _nx_ppp_chap_challenge_send() + _nx_ppp_chap_challenge_respond() + _nx_ppp_chap_challenge_validate() + _nx_ppp_chap_state_machine_update() + _nx_ppp_ipcp_configure_check() + _nx_ppp_ipcp_configure_request_send() + _nx_ppp_ipcp_response_extract() + _nx_ppp_ipcp_response_send() + _nx_ppp_ipcp_state_machine_update() + _nx_ppp_ipcp_terminate_ack_send() + _nx_ppp_ipcp_terminate_send() + _nx_ppp_raw_string_send() + _nx_ppp_receive_packet_process() + Added state check before start PAP, CHAP and IPCP. + _nx_ppp_packet_receive() + Corrected the logic for stopping PPP. + Functions are modified: + _nx_ppp_thread_entry() + _nx_ppp_lcp_state_machine_update() + Corrected the logic for processing LCP message. + Function is modified: + _nx_ppp_receive_packet_process() + Corrected the logic for setting gateway address. + Function is modified: + _nx_ppp_ipcp_state_machine_update() + Set the flag to distinguish PPP Server and PPP Client. + Function is modified: + _nx_ppp_receive_packet_process() + Added functions to stop/start PPP. + Function are modified: + _nx_ppp_start() + _nx_ppp_stop() + _nxe_ppp_start() + _nxe_ppp_stop() + Improved packet length verification. + Function are modified: + _nx_ppp_chap_challenge_respond() + _nx_ppp_chap_challenge_validate() + _nx_ppp_ipcp_configure_check() + _nx_ppp_ipcp_response_extract() + _nx_ppp_pap_login_valid() + _nx_ppp_receive_packet_process() + Improved internal logic. + Function are modified: + _nx_ppp_chap_challenge_respond() + _nx_ppp_chap_challenge_validate() + _nx_ppp_chap_state_machine_update() + _nx_ppp_ipcp_state_machine_update() + _nx_ppp_lcp_state_machine_update() + _nx_ppp_pap_state_machine_update() + Added echo request statistics and corrected the length field in _nx_ppp_ping_request(). + nx_ppp.h Supported for transmitting PPP over Ethernet. + Added functions to stop/start PPP. + + demo_netxduo_smtp_client.c Supported for disabling IPv4 feature. + nxd_smtp_client.c Fix compiler errors when event trace is enabled. + Supported for disabling IPv4 feature. + Dropped the chained packet to avoid memory overflow. + Improved packet length verification. + nxd_smtp_client.h Removed unused API macro nxd_smtp_mail_send. + + nxd_snmp.c Supported for disabling IPv4 feature. + Dropped the chained packet to avoid memory overflow. + Added buffer length check. + Fixed packet leak issue. + Modified logic of converting to UCHARs for the buffer. + Removed logic setting boot count to one if not set. + Fixed a bug to use the trap security flags instead of the agent security flags. + Fixed bug to use context name from get request if agent context name not set. + Improved internal logic. + Modified nx_snmpv3_agent_engineboot_set to accept boot count of zero + Fixed nx_snmp_utility_object_data_get, nx_snmp_object_counter64_get/set, + nx_snmp_object_octet_string.get for errors in data processing. + Added new parsing route nx_snmp_tlv_parse_data to parse the Type-Length-Value + field as per ASN1 specificactions, this also handles the 'long form' for integer types + Added check for counter64 type to nx_snmp_v1/v2/v3_processing + Added an error response to nx_snmp_v1/v2/v3_processing if nx_snmp_object_data_get returns an error + instead of failing silently. + Modified nx_snmp_utility_object_data_get to accept a null IPv4 address. + nxd_snmp.h Removed #include nx_tcp.h + Added macros for ASN1/BER standard symbols used in TLV parsing routine + Added new error returns relevant to the TLV parsing added. + Redefined IPv6 address type as NX_SNMP_ASN1_OCTET_STRING + demo_snmp_helper.h Removed #include nx_tcp.h and references to TCP configuration options defined in nx_tcp.h. + Added a get_octet_callback() which is similar to the get_callback except that it includes the length + arguement to accomodate the nx_snmp_object_octet_string_get API + Added a length field to MIB table for reading octet strings which not 0x0 delimited. + Simplified the table to a few dozen OIDs instead of a hundreds of OID for ease of use. + Added atIPv6NetworkAddress[16] and MIB table entry for it for testing IPv6 address types + demo_netxduo_snmp.c Simplified mib2_variable_update to be a comment that this is where MIB data can be updated at runtime. + Removed printf statements. + Added check of status returns from SNMP API that were missing them. + demo_netxduo_mib2.c Removed the demo file since demo_netx_snmp.c is sufficient to demonstrate the use of SNMP API + for managing the MIB table. + + nxd_sntp_client.c Modified nx_sntp_client_utility_convert_seconds_to_date causing the date to be off by one day if NX_SNTP_CURRENT_YEAR + is older than the current date and a leapyear has occurred between that year and the current date. + Removed useless code. + Supported for disabling IPv4 feature. + Improved internal logic. + nxd_sntp_client.h Modified comments. + + nxd_telnet_client.h Removed NX_TELNET_MAX_OPTION_SIZE option and + nx_telnet_client_request_option from CLIENT_REQUEST structure. + nxd_telnet_client.c Supported for disabling IPv4 feature. + nxd_telnet_server.c Dropped the chained packet to avoid memory overflow. + + nxd_tftp_client.c Supported for disabling IPv4 feature. + Improved packet length verification. + Corrected the field size of block number. + nxd_tftp_server.c Improved packet length verification. + Improved internal logic. + Corrected the field size of block number. + nxd_tftp_client.h Corrected the field size of block number. + nxd_tftp_server.h Corrected the field size of block number. + + nx_web_http_client.c Added support for chunked transfer. Functions are added or modified: + _nx_web_http_client_chunked_size_get() + _nx_web_http_client_cleanup() + _nx_web_http_client_memicmp() + _nx_web_http_client_process_header_fields() + _nx_web_http_client_response_body_get() + _nx_web_http_client_response_read() + _nx_web_http_client_response_byte_expect() + _nx_web_http_client_response_chunked_get() + _nx_web_http_client_request_chunked_set() + _nx_web_http_client_request_packet_send() + _nx_web_http_client_request_initialize() + _nxe_web_http_client_request_chunked_set() + _nxe_web_http_client_request_packet_send() + _nx_web_http_client_delete() + Corrected the TCP header size in _nxe_web_http_client_put_packet(). + Added support for keep-alive. Functions are added or modified: + _nx_web_http_client_connect() + _nx_web_http_client_process_header_fields() + _nx_web_http_client_secure_connect() + Corrected the wait option. + Functions are modified: + _nx_web_http_client_request_initialize() + _nx_web_http_client_request_header_add() + _nx_web_http_client_request_send() + Added support for returning all the status code in _nx_web_http_client_response_body_get(). + Fixed the issue of TCP socket cleanup in _nx_web_http_client_secure_connect(). + nx_web_http_client.h Added support for chunked transfer. + Added support for keep-alive. + Added support for returning all the status code. + nx_web_http_server.c Added support for chunked transfer. Functions are added or modified: + _nx_web_http_server_content_get() + _nx_web_http_server_packet_content_find() + _nx_web_http_server_packet_get() + _nx_web_http_server_content_get_extended() + _nx_web_http_server_receive_data() + _nx_web_http_server_get_process() + _nx_web_http_server_put_process() + _nx_web_http_server_callback_packet_send() + _nx_web_http_server_request_read() + _nx_web_http_server_request_byte_expect() + _nx_web_http_server_chunked_size_get() + _nx_web_http_server_request_chunked_get() + _nxe_web_http_server_response_chunked_set() + _nx_web_http_server_response_chunked_set() + _nx_web_http_server_chunked_check() + _nx_web_http_server_get_entity_header() + _nx_web_http_server_boundary_find() + Modified packet allocation function. Functions are added or modified: + _nx_web_http_server_basic_authenticate() + _nx_web_http_server_calculate_content_offset() + _nx_web_http_server_callback_data_send() + _nx_web_http_server_digest_authenticate() + _nx_web_http_server_get_process() + _nx_web_http_server_generate_response_header() + _nx_web_http_server_response_packet_allocate() + _nxe_web_http_server_response_packet_allocate() + nx_web_http_server.h Added support for chunked transfer. + Added packet allocation function. + nx_tcpserver.c Corrected the wait time of TCP server socket accepting in _nx_tcpserver_connect_process(). + nx_tcpserver.h Modified the default thread priority of TCP server. + nx_web_http_common.h Added support for returning all the status code. + demo_netxduo_https.c Fixed the compile errors. + + +Release 5.10 05-10-2016 + + nx_auto_ip.c Optimized the logic for detecting address conflict. + Functions are modified or deleted: + _nx_auto_ip_arp_packet_send() + _nx_auto_ip_conflict() + _nx_auto_ip_create() + _nx_auto_ip_delete() + _nx_auto_ip_thread_entry() + Fixed the bug for checking interface status. + Function is modified: + _nx_auto_ip_thread_entry() + nx_auto_ip.h Optimized the logic for detecting address conflict. + + nxd_bsd.c Included internal header file in C file. + Modified API functions: + getsockopt - Optimized the logic for keepalive feature. + recv - Added support for thread preemption. + setsockopt - Optimized the logic for keepalive feature. + socket - Optimized the logic for keepalive feature. + inet_ntop - Fixed endian swap when ntohl is not defined. + Modified internal functions: + _nxd_bsd_ipv6_packet_send - Modified the parameter list of _nx_icmpv6_send_ns. + inet_ntoa_internal - Fixed endian swap when ntohl is not defined. + nx_bsd_find_interface_by_source_addr - Fixed endian swap when ntohl is not defined. + nx_bsd_send_internal - Added a case for the error status NX_NO_PACKET. + nxd_bsd.h Included internal header file in C file. + + nxd_dhcp_client.c Optimized the logic for detecting address conflict. + The following functions are modified or added: + _nx_dhcp_client_send_arp_probe() + _nx_dhcp_create() + _nx_dhcp_delete() + _nx_dhcp_ip_conflict() + _nx_dhcp_process() + Corrected the logic for setting the broadcast bit. + The following functions are modified: + _nx_dhcp_send_request_internal() + Corrected the logic for setting the target IP address. + The following functions are modified: + _nx_dhcp_send_request_internal() + Modified the logic for processing DHCP options. + The following functions are modified: + _nx_dhcp_extract_information() + _nx_dhcp_user_option_retrieve() + _nx_dhcp_get_option_value() + _nx_dhcp_search_buffer() + Added support for DHCP on multiple interfaces. + The following API are modified or added: + _nx_dhcp_create() + _nx_dhcp_clear_broadcast_flag() + _nx_dhcp_client_send_with_zero_source_address() + _nx_dhcp_delete() + _nx_dhcp_decline() + _nx_dhcp_extract_information() + _nx_dhcp_force_renew() + _nx_dhcp_packet_process() + _nx_dhcp_reinitialize() + _nx_dhcp_release() + _nx_dhcp_request_client_ip() + _nx_dhcp_resume() + _nx_dhcp_suspend() + _nx_dhcp_send_request() + _nx_dhcp_send_request_internal() + _nx_dhcp_server_address_get() + _nx_dhcp_set_interface_index() + _nx_dhcp_start() + _nx_dhcp_stop() + _nx_dhcp_thread_entry() + _nx_dhcp_timeout_entry() + _nx_dhcp_timeout_process() + _nx_dhcp_udp_receive_notify() + _nx_dhcp_user_option_retrieve() + _nx_dhcp_client_get_record() + _nx_dhcp_client_restore_record() + _nx_dhcp_client_update_time_remaining() + _nx_dhcp_client_interface_get_record() + _nx_dhcp_client_interface_restore_record() + _nx_dhcp_client_interface_update_time_remaining() + _nx_dhcp_interface_clear_broadcast_flag() + _nx_dhcp_interface_enable() + _nx_dhcp_interface_disable() + _nx_dhcp_interface_decline() + _nx_dhcp_interface_force_renew() + _nx_dhcp_interface_reinitialize() + _nx_dhcp_interface_release() + _nx_dhcp_interface_request_client_ip() + _nx_dhcp_interface_start() + _nx_dhcp_interface_stop() + _nx_dhcp_interface_send_request() + _nx_dhcp_interface_server_address_get() + _nx_dhcp_interface_state_change_notify() + _nx_dhcp_interface_user_option_retrieve() + _nx_dhcp_interface_record_find() + _nxe_dhcp_interface_clear_broadcast_flag() + _nxe_dhcp_interface_enable() + _nxe_dhcp_interface_disable() + _nxe_dhcp_interface_decline() + _nxe_dhcp_interface_force_renew() + _nxe_dhcp_interface_reinitialize() + _nxe_dhcp_interface_release() + _nxe_dhcp_interface_request_client_ip() + _nxe_dhcp_interface_start() + _nxe_dhcp_interface_stop() + _nxe_dhcp_interface_send_request() + _nxe_dhcp_interface_server_address_get() + _nxe_dhcp_interface_state_change_notify() + _nxe_dhcp_interface_user_option_retrieve() + _nxe_dhcp_client_interface_get_record() + _nxe_dhcp_client_interface_restore_record() + _nxe_dhcp_client_interface_update_time_remaining() + Modified the logic for updating DHCP timeout. + The following functions are modified: + _nx_dhcp_update_timeout() + _nx_dhcp_packet_process() + _nx_dhcp_timeout_entry() + _nx_dhcp_interface_record_find() + _nx_dhcp_ip_conflict() + _nx_dhcp_thread_entry() + nxd_dhcp_client.h Fixed compiler warnings. + Modified the logic for processing DHCP options. + Added support for DHCP on multiple interfaces. + nxd_dhcp_server.c Added flag events to process packet receive event, fast periodic event and slow periodic event. + Functions are modified or renamed: + _nx_dhcp_server_create() + _nx_dhcp_server_delete() + _nx_dhcp_fast_periodic_timer_entry() + _nx_dhcp_slow_periodic_timer_entry() + _nx_dhcp_server_thread_entry() + _nx_dhcp_listen_for_messages() + _nx_dhcp_server_packet_process() + Fixed packet leaks in _nx_dhcp_respond_to_client_message(). + Added mutex protection. + Functions are modified: + _nx_dhcp_create_server_ip_address_list() + _nx_dhcp_set_interface_network_parameters() + _nx_dhcp_clear_client_record() + nxd_dhcp_server.h Added flag events to process packet receive event, fast periodic event and slow periodic event. + nxd_dhcpv6_server.c Fixed the typo, rename NX_DHCPV6_STATUS_NO_ADDRS_AVAILABLE to NX_DHCPV6_STATUS_MESSAGE_NO_ADDRS_AVAILABLE. + nxd_dhcpv6_server.h Fixed the typo, rename NX_DHCPV6_STATUS_NO_ADDRS_AVAILABLE to NX_DHCPV6_STATUS_MESSAGE_NO_ADDRS_AVAILABLE. + + nxd_ftp_server.c Renamed _nx_ftp_server_control_disonnect_processing to nx_ftp_server_control_disconnect_processing. + Added a check on status return from FileX file write and file create calls in _nx_ftp_server_command_process + and _nx_ftp_server_data_process. + nxd_ftp_server.h Renamed _nx_ftp_server_control_disonnect_processing to nx_ftp_server_control_disconnect_processing. + nxd_ftp_client.c Added support for PASV, passive transfer mode + Added IPv6 support to nx_ftp_client_directory_listing_get + nxd_ftp_client.h Added support for PASV, passive transfer mode + + demo_netxduo_http.c Fix a bug that memory of ram disk is corrupted. + nxd_http_client.c Allow zero or more whitespaces between Content-Length and value + in nx_http_client_content_length_get() + Optimized the code. + _nx_http_client_content_length_get() + Fixed packet leak for invalid HTTP packet in _nxd_http_client_get_start + and _nx_http_client_get_packet. + Corrected the logic in _nxd_http_client_get_start when checking + offset against the packet length + Modified nxd_http_client_get_start() and nxd_http_client_put_start() + to accept a URI resource string that refers to a full website + e.g. http://abc.def.com/index.htm. + Added nx_http_client_set_connect_port() service to allow the Client + to change the HTTP server port at runtime. + nxd_http_client.h Declare the nx_http_client_set_connect_port() service + + nxd_pop3_client.c Returned NX_SUCCESS only if the positive response consists of "+OK". + Functions are modified: + _nx_pop3_client_mail_item_get() + _nx_pop3_client_mail_item_delete() + _nx_pop3_client_quit() + + +Release 5.9 02-22-2016 + + demo_netx_auto_ip.c Used TX_TIMER_TICKS_PER_SECOND as default value of NX_IP_PERIODIC_RATE. + Fixed compiler warnings. + + nx_auto_ip.c Fixed one bug that hardware address is set as zero if IP instance is uninitialized. + Fixed compiler warnings. + Corrected the value of NX_AUTO_IP_END_ADDRESS. + + bsd_demo_raw.c Unified ticks per second. + Fixed compiler warnings. + bsd_demo_tcp.c Unified ticks per second. + Fixed compiler warnings. + bsd_demo_udp.c Unified ticks per second. + Fixed compiler warnings. + nxd_bsd.c Fixed compiler warnings. + Modified API functions: + bsd_initialize - Returned error when extended notify feature was disabled. + recv - Fixed return value when peer shutdown orderly. + Fixed statistics of TCP socket. + send - Fixed length of data sent. + sendto - Fixed length of data sent. + connect - Fixed errno when connection timeouts. + bind - Added logic to allow TCP IPv4 and IPv6 sockets to share a port if reuse is enabled + on the sockets (which it is by default. This lets BSD emulate a TCP client socket that accepts + and transmits IPv4 and IPv6 packets. + inet_addr - Corrected the status process of inet_aton. + setsockopt - Unified ticks per second. + Added support for SO_SNDTIMEO option. + Renamed symbols from NX_TCP_ENABLE_KEEPALIVE to NX_ENABLE_TCP_KEEPALIVE, + and from NX_TCP_ENABLE_WINDOW_SCALING to NX_ENABLE_TCP_WINDOW_SCALING. + select - Unified ticks per second. + Fixed statistics of TCP socket. + Modified internal functions: + bsd_initialize - Used tx_thread_sleep instead of setting event from timer. + nx_bsd_select_wakeup - Cleared fd_sets in suspend info if they were not met. + nx_bsd_send_internal - Supported to return length of data sent. + Fixed timeout for packet process. + Added support for SO_SNDTIMEO option. + nx_bsd_socket_set_inherited_settings - Renamed symbols from NX_TCP_ENABLE_KEEPALIVE to NX_ENABLE_TCP_KEEPALIVE, + and from NX_TCP_ENABLE_WINDOW_SCALING to NX_ENABLE_TCP_WINDOW_SCALING. + nx_bsd_tcp_socket_disconnect_notify - Fixed errno when connection timeouts. + nx_bsd_timer_entry - Used tx_thread_sleep instead of setting event from timer. + nx_bsd_thread_entry - Used tx_thread_sleep instead of setting event from timer. + nxd_bsd.h Added support for unified timer tick macros. + Defined return code for environment error. + Modified the type of time_t and suseconds_t from ULONG to LONG. + + demo_netxduo_dhcp.c Unified ticks per second. + Simplified the demo. + Fixed compiler warnings. + + nxd_dhcp_client.c Unified ticks per second. + Added support for sending maximum DHCP message size option. + Changed the logic to check the DHCP state to update the time remaining in renew and rebind states. + Optimized the algorithm for calculating random time. + Corrected the logic for sending ARP probe and restarting configuration. + Fixed compiler warnings. + Set the source address field in the IP header to 0 for DHCP messages that client obtaining its IP address. + nxd_dhcp_client.h Unified ticks per second. + Added support for sending maximum DHCP message size option. + Added symbol names for sending ARP probe and restarting configuration. + Fixed compiler warnings. + nxd_dhcp_server.c Unified ticks per second in nx_dhcp_server_create(). + Optimized process logic in nx_dhcp_server_thread_entry(). + Fixed a packet leak in nx_dhcp_listen_for_message(). + Fixed the bug for user options seek in nx_dhcp_server_extract_information. + Initialized dhcp client in nx_dhcp_listen_for_message. + Copied the incoming data in one packet from dhcp server pool in nx_dhcp_listen_for_messages. + Fixed a bug in nx_dhcp_server_extract_information to initialize the dhcp_client_ptr to NULL in the event + the function encounters an invalid packet. Previously, the function returned a garbage dhcp_client_ptr to + the caller which would then dereference it and get an exception. + Send NACK message if the client's requested IP address is incorrect in _nx_dhcp_validate_client_message. + Simplified the logic to find, record and clear the IP address owner. + Fixed compiler warnings. + nxd_dhcp_server.h Unified ticks per second. + Adjusted the default value of configuration options. + Optimized the structure. + demo_netxduo_dhcpv6.c Unified ticks per second. + Simplified the demo. + Fixed compiler warnings. + demo_netxduo_dhcpv6_client.c Unified ticks per second. + Fixed compiler warnings. + nxd_dhcpv6_client.c Unified ticks per second. + Verified the incoming data does not exceed our DHCPv6 Client packet payload in _nx_dhcpv6_packet_process(). + Fixed the bug for setting IPv6 address change notify in _nx_dhcpv6_client_create(). + Fixed the bug for setting address status in _nx_dhcpv6_register_IP_address(). + Renamed symbols from NX_IPV6_ADDRESS_CHANGE_NOTIFY_ENABLE to NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY, + NXDUO_DISABLE_DAD to NX_DISABLE_IPV6_DAD since NetX Duo renamed these symbols. + Fixed compiler warnings. + nxd_dhcpv6_client.h Unified ticks per second. + Added conditional code for DAD notify declaration. + Renamed symbols from NX_IPV6_ADDRESS_CHANGE_NOTIFY_ENABLE to NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY, + NXDUO_DISABLE_DAD to NX_DISABLE_IPV6_DAD since NetX Duo renamed these symbols. + Fixed compiler warnings. + nxd_dhcpv6_server.c Unified ticks per second. + Copied the incoming data in one packet from dhcpv6 server pool in nx_dhcpv6_listen_for_messages. + Fixed the bug for IPv6 address get. + Fixed compiler warnings. + nxd_dhcpv6_server.h Unified ticks per second. + Fixed the bug for IPv6 address get. + + demo_netxduo_dns.c Unified ticks per second. + Fixed compiler warnings. + nxd_dns.h Unified ticks per second. + Removed the symbol NX_DNS_CLIENT_IP_GATEWAY_ADDRESS. + nxd_dns.c Unified ticks per second. + Modified the logic to send DNS query in _nx_dns_host_resource_rdata_by_name_get and + _nx_dns_host_by_address_get_internal. + Modified the return status in _nx_dns_send_query_by_address. + Modified the return status if answer_found is true in _nx_dns_response_process. + Modified the logic for setting the IP gateway server to be the DNS Server in _nx_dns_create. + Added check for malformed packet. + Fixed compiler warnings. + Added the check for record_count_pointer. + + demo_netxduo_ftp.c Unified ticks per second. + Fixed compiler warnings. + nxd_ftp_client.c Fixed compiler warnings. + nxd_ftp_server.c Cleared socket resource when ftp server is stopped. + Optimized the logic. + Fixed a bug for calculating the length of file info. + Fixed compiler warnings. + nxd_ftp_server.h Unified ticks per second. + Added event to stop ftp server. + + demo_netxduo_http.c Unified ticks per second. + Fixed compiler warnings. + nxd_http_client.h Unified ticks per second. + nxd_http_client.c Removed trailing space on HTTP/1.0. + nxd_http_server.h Unified ticks per second. + Declared missing function headers. + nxd_http_server.c Cleared socket resource when stopped. + Fixed first MIME type in the default array. + Fixed compiler warnings. + + demo_netx_nat.c Unified ticks per second. + nx_nat.c Unified ticks per second. + Fixed compiler warnings. + Modified the logic for packet processing and sending since all + the fragments are assembled before forwarding. + Functions are modified: + _nx_nat_process_packet() + _nx_nat_ip_packet_send() + nx_nat.h Unified ticks per second. + + demo_netxduo_pop3_client.c Unified ticks per second. Used TX_TIMER_TICKS_PER_SECOND as default value of NX_IP_PERIODIC_RATE. + Fixed compiler errors. + nxd_pop3_client.c Unified ticks per second. Used TX_TIMER_TICKS_PER_SECOND as default value of NX_IP_PERIODIC_RATE. + Fixed compiler errors. + Fixed number checking. + nxd_pop3_client.h Unified ticks per second. Used TX_TIMER_TICKS_PER_SECOND as default value of NX_IP_PERIODIC_RATE. + + demo_netx_ppp.c Unified ticks per second. + Fixed compiler warnings. + nx_ppp.c Replaced hard numbers with PPP symbols for PPP codes, protocols, options and protocol states. + Added _nx_ppp_debug_log_capture_protocol function to outputs the status of various protocols and timeouts of the specified PPP instance. + Added support for the secondary DNS option in the IPCP protocol. + Added a retry limit on IPCP NAK list requests with primary and secondary DNS options so that + IPCP can complete if either address is not available. + Added NXE function for error checking. + Fixed compiler warnings. + nx_ppp.h Unified ticks per second. + Defined PPP symbols for naked list options. + Added _nx_ppp_debug_log_capture_protocol prototype. + Modified the NX_PPP data block to contain a secondary DNS address and count of retries on IPCP + config requests with DNS address options. + Added #defines for maximum retries on IPCP requests containing DNS options. + Added services for setting and getting the primary and secondary DNS addresses. + Added NXE function for error checking. + Fixed the compiler error if defined NX_PPP_DISABLE_INFO. + + demo_netxduo_smtp_client.c Unified ticks per second. + Fixed compiler warnings. + nxd_smtp_client.c Unified ticks per second. + Removed unused code and simplified SMTP client data types + Fixed packet leaks in various functions + Added logic for SMTP servers not configured for authentication + Added option for SMTP Client to skip authentication (NX_SMTP_CLIENT_AUTH_NONE) + Fixed problems handling multi-packet response from the server to client EHLO + Check socket state and delete TCP socket in nx_smtp_client_delete() before clearing SMTP Client memory + Modified _nx_smtp_utility_parse_server_services() not to set AUTH type if the current 250 packet does not + contain the AUTH keyword. Otherwise the client authentication type may not be set correctly. + Fixed compiler warnings. + nxd_smtp_client.h Unified ticks per second. Remove definitions of NX_SMTP_MILLISECONDS_PER_TICK and NX_SMTP_TICKS_PER_SECOND. + Added logic for SMTP servers not configured for authentication + Added option for SMTP Client to skip authentication (NX_SMTP_CLIENT_AUTH_NONE) + Removed unused code and simplified SMTP client data types + + demo_netxduo_mib2.c Unified ticks per second. + Fixed compiler warnings. + demo_netxduo_snmp.c Unified ticks per second. + Fixed compiler warnings. + Replace #ifdef ENABLE_V3 with #ifndef NX_SNMP_DISABLE_V3 to eliminate compile errors + if NX_SNMP_DISABLE_V3 is defined in SNMP. + demo_snmp_helper.h Fixed compiler warnings. + nxd_snmp.c Modified nx_snmp_version3_report_send() : + 1) never encrypt data in a report response + 2) never to set encryption or reportable bit in security header flags field, + 3) if sending time synchronization report, only use authentication even if encryption is enabled, + 4) never send boot data in response to a discovery request. + Modified nx_snmp_version3_process() : + 1) Flags in the security header should never have reportable bit sent + 2) never send boot data if authentication is not enabled. + Modified nx_snmp_version3_process where it sets the request_type_ptr + for returning the request packet with an error status. + Renamed _nx_snmp_utility_request_type_set_A5 to _nx_snmp_utility_request_type_set_multibyte + Removed _nx_snmp_utility_request_type_set (use only _nx_snmp_utility_request_type_set_1byte) + Modified nx_snmp_send_error_response() and nx_snmp_encrypt_pdu for handling SNMPV3 request packet PDUs + for error messages when security is enabled. + Replaced 1 byte data size fields with 2 byte data size fields in sequence headers in trap send, + and SNMP message process functions, wherever there is a possibility the data may exceed 128 bytes + (and thus require 2 bytes). + Modified logic in data object get functions to determine the size of the data size field rather than + assume 2 bytes (e.g. _nx_snmp_utility_community_get, _nx_snmp_utility_object_id_get, + _nx_snmp_utility_object_data_get). + Fixed a bug in _nx_snmp_agent_encrypt_pdu for not adjusting encrypted PDU length for non-zero padding. + Added a null pointer check for the object list pointer in the trap functions when going through + the PDU object list items. + Added NX_SNMP_V3_DISABLE conditional compile directives around global PDU processing variables and in + _nx_snmp_version_error_response relevant for V3 security specific processing. + Fixed compiler warnings. + Minor correction masking the length variable. + nxd_snmp.h Renamed _nx_snmp_utility_request_type_set_A5 to _nx_snmp_utility_request_type_set_multibyte. + Removed _nx_snmp_utility_request_type_set (use only _nx_snmp_utility_request_type_set_1byte). + Changed the order of internal functions for more logical grouping. + Unified ticks per second. + Added #ifdef NX_SNMP_V3_DISABLE checks around #includes for authentication + and encryption key processing, and around API fucntions that compute and activate keys. + Removed unused extern nx_system_ticks_per_second. + + demo_netxduo_sntp_client.c Unified ticks per second. + Updated the demo for creating SNTP client packet pool. + Fixed compiler warnings. + nxd_sntp_client.c Modified nx_sntp_client_get_msecs_diff to simplify the logic + Modified nx_sntp_client_server_clock_dispersion_check to simplify the logic + Reworked the logic in nx_sntp_client_utility_get_msec_diff to add back in flag for postive or + negative difference. Some use cases in NetX SNTP Client regard a negative difference as an error. + Modified nx_sntp_client_utility_convert_secs_to_date to handle a date stamp in a year + after NX_SNTP_CURRENT_YEAR. + Created new API _nx_sntp_client_request_unicast_time to request unicast updates asynchronously of the + SNTP Client thread task. + Simplified the completion status logic for _nx_sntp_client_process_update_packet + Removed unnecessary input for _nx_sntp_client_receive_time_update and _nx_sntp_client_apply_sanity_checks, + Fixed the logic to check if the update time has expired without a response. + Modified nx_sntp_client_initialize_broadcast to handle invalid parameter input. + Created nx_sntp_client_set_time_update_notify to set a callback when the SNTP Client receives a valid + SNTP update. + Simplified logic for valid packet processing in _nx_sntp_client_process_broadcast. + Simplified error code in _nx_sntp_client_apply_sanity_checks. + Modifiied _nx_sntp_client_process_time_data to add status check for adding msec to ntp time. + Unified ticks per second. + Fixed a bug when multiple packets were received and the first one was invalid, + other packets were not processed in time. + Fixed compiler warnings. + nxd_sntp_client.h Modified nx_sntp_client_server_clock_dispersion_check declaration for changes to input args + Created new API nx_sntp_client_request_unicast_time() + Removed unnecessary input for _nx_sntp_client_receive_time_update and _nx_sntp_client_apply_sanity_checks, + Added support for nx_sntp_client_set_time_update_notify() callback. + Unified ticks per second. + Removed unused macros. + Fixed compiler warnings. + + demo_netxduo_telnet.c Unified ticks per second. + Fixed compiler warnings. + nxd_telnet_server.c Added support for external packet pool creation for use when NX_TELNET_SERVER_OPTION_DISABLE + is not defined and the Telnet Server needs a packet pool to send Telnet options. + Created _nx_telnet_server_packet_pool_set() API for applications to set the Telnet Server packet + pool if NX_TELNET_SERVER_USER_CREATE_PACKET_POOL is defined. The default is the Telnet Server + creates the packet pool. + Cleared socket resource when telnet server is stopped. + Modified nx_telnet_server_process_options to move the offset for all responses to the ECHO request. + Fixed a bug when packet contains command and data, data are not processed. + Fixed compiler warnings. + nxd_telnet_server.h Added support for for external packet pool creation with configuration option + NX_TELNET_SERVER_USER_CREATE_PACKET_POOL and API nx_telnet_server_packet_pool_set(). + Unified ticks per second. + Added event to stop telnet server. + nxd_telnet_client.h Removed unused macro. + + demo_netxduo_tftp.c Unified ticks per second. + Fixed compiler warnings. + nxd_tftp_server.c Added support for a retransmit feature where a packet is + retransmitted if the correct data or ACK from the TFTP Client + is not received within user specified timeout period. + Added logic to handle duplicate WRITE or READ requests e.g. the + TFTP server is delayed responding to the first request and while + processing it receives one or more duplicate requests (which are dropped). + Fixed packet leak. + Fixed compiler warnings. + nxd_tftp_server.h Added support for a retransmit feature. + nxd_tftp_client.c Fixed compiler warnings. + + +Release 5.8 01-12-2015 + + nx_auto_ip.c Added NX_RAND to replace rand to get the random value. + + nxd_bsd.c Added API functions: + inet_pton - This function converts an IP address from presentation to numeric. + inet_ntop - This function converts an IP address from numeric to presentation. + getaddrinfo - This function returns one or more addrinfo structures according + to the specified node and service. + freeaddrinfo - This function releases the memory allocated by getaddrinfo. + getnameinfo - This function converts a socket address to a corresponding host and service. + Modified API functions: + socket - Improved UDP and raw socket performance. + connect - Fixed error status when connection fails in blocking mode. + bind - Fixed a bug in local bound port, improved UDP socket performance. + accept - Cleared the INPROGRESS flag when connection is established. + getsockname - Fixed port value for UDP socket. + recv - Fixed how socket timeout is handled. Socket doing blocked receive + with timeout value would not wake up if there are other BSD sockets + receiving data. Fixed return code. Supported flags MSG_PEEK and MSG_DONTWAIT. + recvfrom - Supported flags MSG_PEEK and MSG_DONTWAIT. + select - Fixed fd_set value when socket is not in use. + Removed an obsolete for loop clearing blocked sockets for new connection requests. + send - Supported raw PPPOE. Supported flags MSG_DONTWAIT. + sendto - Supported raw PPPOE. Supported flags MSG_DONTWAIT. + soc_close - Improved UDP and raw socket performance. + Added support for NX_BSD_TCP_SOCKET_DISCONNECT_TIMEOUT in the nx_tcp_socket_disconnect call. + Fixed a bug that secondary socket was not disconnected. + ioctl - Added logic for applications to clear the non-blocking flag. + Modified FIONREAD option to capture the correct number of bytes received on the UDP socket + inet_ntoa - Move logic to internal function inet_ntoa_internal. + inet_aton - Added an error return if an invalid character is received + for base-16 address buffer. Fixed a bug of processing hex number. + FD_SET - Fixed FD_SETSIZE check + FD_CLR - Fixed FD_SETSIZE check + FD_ISSET - Fixed FD_SETSIZE check + FD_ZERO - Fixed FD_SETSIZE value + Added internal functions: + nx_bsd_pppoe_internal_sendto - This function sends raw PPPOE packet to driver directly. + _nx_bsd_pppoe_packet_received - This function receives raw PPPOE packet from driver directly. + inet_ntoa_internal - This function converts an IPv4 address to a string and + returns the size of the string. + bsd_string_to_number - This function converts string to number. + nx_bsd_set_service_list - This function lets user set the service list used by getaddrinfo. + _nx_bsd_string_length - This function returns the length of string. + Modified internal functions: + bsd_initialize - Supported getaddrinfo and getnameinfo APIs. + nx_bsd_timeout_process - Corrected the logic and comment to skip client sockets. + nx_bsd_send_internal - Remove unnecessary code. Supported flags MSG_DONTWAIT. + bsd_number_convert - Added support for HEX number. Added argument to avoid overflow. + nx_bsd_raw_socket_filter - Improved the raw socket search logic. + nx_bsd_tcp_create_listen_socket - Fixed a bug to allow accept from remote end. + nx_packet_data_extract_offset - Fixed a bug when offset and length of packet are both zero. + nx_bsd_udp_packet_received - Improved the UDP socket search logic + nx_bsd_tcp_syn_received_notify - Fixed connection status + _nxd_bsd_ipv4_packet_send - Encapsulated all IGMP-related infomation. + Removed internal functions: nx_bsd_isascii + nxd_bsd.h Fixed FD_SETSIZE, added PPPOE and DNS support, + added inet_pton, inet_ntop, getnameinfo, getaddrinfo, freeaddrinfo services, + supported flags MSG_PEEK. + New configuration option for TCP socket disconnect, NX_BSD_TCP_SOCKET_DISCONNECT_TIMEOUT. + The default value is 1 (timer tick) + + nxd_dhcp_client.c Removed MULTI_HOME_NETXDUO/MULTI_HOME_NETX macro definition. + Fixed a bug in nx_dhcp_search_buffer() that could potentially casue buffer overflow + Fixed a packet leak in nx_dhcp_process() in the REQUEST state. + Replaced rand() with NetX Duo macro NX_RAND + Updated nx_dhcp_process and nx_dhcp_send_request_internal for updating the 'secs' field + in the DHCP client header for those DHCP servers that expect this field to be updated. + Fixed a bug in nx_dhcp_add_randomize that could potentially cause a huge random delay factor + Added nx_dhcp_clear_broadcast_flag service for cases where the DHCP server is behind + a router and the server must be able to send unicast messages. + Added nx_dhcp_seconds to the DHCP Client structure for filling in the 'secs' field in + the DHCP header. + Modified calls for allocating packets so that NetX Duo DHCP CLient will also compile and run + in a NetX environment. + Modified nx_dhcp_process for DHCP CLient to update the IP router and IP address from ACKs received + from the server in the RENEW and REBIND state. + Modified the clear gateway address call function to match NetX Duo 5.8 + Remove the nx_packet_data_extract_offset function since nx_packet_data_extract_offset function + is defined in NetX/NetXDuo 5.8 + Fixed the bug of DHCPv4 Client option added operation: added Server identifier option in DHCP Decline and Release messages, + removed Host name option in DHCP Decline and Release messages. + Remove the internal function from nxd_dhcp_client.h into nxd_dhcp_client.c. + _nx_dhcp_client_send_arp_probe modified to check if an arp entry with matching IP address + does not have a non-zero MAC address. + Modified the logic to get DHCP option value to avoid using the released packet in _nx_dhcp_user_option_retrieve. + Processed the DNS and NTP server options in _nx_dhcp_extract_information. + + nxd_dhcp_client.h Modified definition of NX_DHCP_PACKET_PAYLOAD so that NetX Duo DHCP CLient will also compile and run + in a NetX environment. + Added nx_dhcp_seconds to the DHCP CLIENT struct. + Added nx_dhcp_clear_broadcast_flag service for cases where the DHCP server is behind + a router and the server must be able to send unicast messages. + Added variables to store DNS and NTP server addresses. + nxd_dhcp_server.c Modified the process of DHCP Server response message, set the correct destination address + and destination port according to the 'giaddr', 'ciaddr' and broadcast bit. + Modified the logic in nx_dhcp_server_validate_client_message to delay + NACKs to finish checking for invalid data which requires the Server + to respond silently. + Added logic in nx_dhcp_listen_for_messages to check for invalid DHCP packet length + being less than NX_DHCP_HEADER_SIZE. + Removed the MULTI_HOME_NETXDUO macro definition. + Fixed a bug of DHCPv4 Server option added operation + Removed the internal function from nxd_dhcp_server.h into nxd_dhcp_server.c. + Used API to get the interface instead of directly getting the internal parameters. + Corrected memset in nx_dhcp_server_create_ip_list() for the size input arguement. + nxd_dhcp_server.h Created a new error status for malformed packets (0xA4). Added a new define for + DHCP header size (no option bytes) NX_DHCP_HEADER_SIZE. + Removed the MULTI_HOME_NETXDUO macro definition. + Removed useless function declaration (nx_dhcp_create_server_ip_address_list_text). + nxd_dhcpv6_client.c Created nx_dhcpv6_get_valid_ip_address_prefix service for obtaining the prefix of + addresses assigned by DHCPv6 servers. + Modified nx_dhcpv6_thread_entry to automatically restart the SOLICIT messages if the DHCPv6 Client + IPv6 address expires. Previously it put the DHCPv6 Client in the INIT state, requiring the DHCPv6 + Client app to manually restart the SOLICIT messages. + Created nx_dhcpv6_get_time_server_address service for obtaining the time server address assigned by DHCPv6 Servers. + Added support for the FQDN option to the DHCPv6 Client, with new API nx_dhcpv6_request_option_FQDN + Fixed the bug for NoAddrsAvail status in nx_dhcpv6_process() + Modified the nx_dhcpv6_server_error_handler function; the message type should be the type of received message + and defined status codes to reflect the error (see nxd_dhcpv6_client.h). + Modified the nx_dhcpv6_resume function to support for DHCPv6 state restore feature. + Added nx_dhcpv6_client_get_record and nx_dhcpv6_client_restore_record functions to realize the DHCPv6 Client restore feature. + Added _nx_dhcpv6_flush_queue_packets function to flush the useless queue packets + Loop to receive the queue packets until get the valid answer or timeout. + nxd_dhcpv6_client.h Added support for the FQDN option, including defining FQDN settings and creating a new NX_DHCPV6_CLIENT_FQDN struct + Added declaration of nx_dhcpv6_get_valid_ip_address_prefix service API service. + Added declaration of nx_dhcpv6_get_time_server_address service API service. + Added nx_dhcp_seconds to the DHCP CLIENT struct. + Defined error status codes for server error handler op codes; NX_DHCPV6_ERROR_STATUS_CODE_IN_OPTION_FIELD, + NX_DHCPV6_ERROR_STATUS_CODE_IN_IA_NA, and NX_DHCPV6_ERROR_STATUS_CODE_IN_IA_ADDRESS. + Added nx_dhcpv6_client_get_record and nx_dhcpv6_client_restore_record functions to realize the DHCPv6 Client restore feature. + Added _nx_dhcpv6_flush_queue_packets function to flush the useless queue packets. + Optimized DHCPv6 struct, removed nx_dhcpv6_valid_advertise_or_reply_flag. + nxd_dhcpv6_server.c Fixed the compiler warnings + Removed MULTI_HOME macro definition. + Used NetX Duo API to get the interface instead of directly getting the internal parameters. + Fixed the bug for physical address check. + + nxd_dns.c Added two new services, nx_dns_server_remove_all() which removes all DNS servers + registered with the DNS Client, and nx_dns_info_by_name_get() which gets the + Service record associated with the specified host name. These services sere + previously only available in NetX DNS Client. + Fixed a bug in nxd_dns_response_process() that return error code if the packet + does not contain the RR the application expects. + Fixed a bug in nx_dns_name_string_unencode() that return error code if the buffer + size can not store the all name string. + Change the internal nxd_* function and nxd_* variables to nx_* function and nx_* variables. + Added DNS CACHE feature. + nxd_dns.h Added two new services, nx_dns_server_remove_all() and nx_dns_info_by_name_get(). + Added DNS CACHE feature. + + nxd_ftp_client.c Added _nx_ftp_client_connect_internal function and modified the _nxd_ftp_client_connect function. + Added '|' character as the delimiter type for EPRT. + nxd_ftp_client.h Added declaration for _nx_ftp_client_connect_internal function. + nxd_ftp_server.c Added support for packet chain + Fixed complier warning + Added _nx_ftp_server_create_internal function and modified the _nx_ftp_server_create function. + nxd_ftp_server.h Added declaration for _nx_ftp_server_create_internal function. + + nxd_http_client.c Fixed a bug that username and password might be NULL. + Added size check for nxe_http_client_create. + nxd_http_client.h Added size check for nxe_http_client_create. + nxd_http_server.c Fixed the logic in _nx_http_server_get_client_request to handle + multipacket Get requests. + Added cache feature. + Supported user defined MIME maps. + Supported packet chain feature. + Supported multipart upload feature. + Unified response line. + Fixed compiler warnings. + Fixed memory leak when packet is chained. + Supported escape character. + Supported absolute URI. + Added separate input pointer to authenticate function if authentication is required. + Return on internal error code. + Added size check for nxe_http_server_create. + Added timeouts for receive, accept, send and disconnect. + Defined values and structures for new features in nxd_http_server.c. + Added new services for new features in nxd_http_server.c. + Supported invalid user/password callback function. + nxd_http_server.h Supported multipart upload feature. + Unified response line. + Supported to response date in header. + Removed declarations for _nxe version. + Added cache feature. + Supported user defined MIME maps. + Added new services for new features in nxd_http_server.c. + Added size check for nxe_http_server_create. + Added timeouts for receive, accept, send and disconnect. + Modified NX_HTTP_MAX_STRING to ensure room for encoded string. + + nx_ppp.c Modified logic in nx_ppp_packet_receive_get() to ensure that multipacket PPP messages cleave off + packets with junk data from the datagram (e.g. ppp crc computation and the 0x7e marker). + Modified logic in nx_ppp_lcp_configure_request() and nx_ppp_lcp_terminate_request_sent() to + remove logic decementing the nx_ppp_protocol_retry_counter. The logic is that the counter is + incremented up to NX_PPP_MAX_LCP_PROTOCOL_RETRIES, not down to zero. By decrementing the counter + effectively there was no limit to the retries in the LCP stage. + Removed unnecessary NX_PPP_IPCP_CONFIGURE_REQUEST case in the NX_PPP_IPCP_PEER_CONFIGURE_REQUEST_ACKED state + Added support for DNS request option configuration option. + Added support for LCP echo, both responding to echo requests and sending ping requests with the new service + nx_ppp_ping_request. + Modified the _nx_ppp_hash_generator, and all callers of this function to include a length arguement, + rather than assume the rand_value is null terminated (0x0 is a valid random octet). + Modified nx_ppp_delete to terminate the PPP thread before deleting it. + Fixed nx_ppp_pap_authenticate_nak not to set the PPP authenticated status to TRUE. + Fixed nx_ppp_pap_login to only return TRUE or FALSE, not status, so that mismatched user/passwords will be detected. + Corrected the logic in nx_ppp_thread_entry() determining if the PPP should be set to authenticated. + Modified _nx_ppp_lcp_state_machine_update() to accept LCP requests if already in the completed state (WIP). + Corrected logic in _nx_ppp_pap_state_machine_update() setting the PPP PAP state if PAP authentication fails. + nx_ppp.h Added DNS request option configuration option to disable the DNS request in IPCP messages. + Added support for LCP echo, both responding to echo requests and sending ping requests with the new service + nx_ppp_ping_request. + Modified the _nx_ppp_hash_generator to include a length arguement, + rather than assume the rand_value is null terminated (0x0 is a valid random octet). + + nxd_smtp_client.c Fixed error in invalid pointer check in _nxe_smtp_mail_send. + Fixed compiler error when IPv6 is disabled in _nxd_smtp_client_create. + Fixed bug checking for invalid pointers. + Fixed a typo in _nx_smtp_cmd_message. + Fixed case insensitive compare for challenge word. + Corrected 5.2 release date from 04-15-13 to 04-15-2013 + nxd_smtp_client.h Corrected 5.2 release date from 04-15-13 to 04-15-2013 + + nxd_snmp.c Renamed API to be consistent with Express Logic names: + nx_snmp_agent_get_current_version to nx_snmp_agent_current_version_get + nx_snmp_agent_set_current_version to nx_snmp_agent_current_version_set + nx_snmp_agent_set_private_string to nx_snmp_agent_private_string_set + nx_snmp_agent_set_public_string to nx_snmp_agent_public_string_set + nx_snmp_agent_received_private_string to nx_snmp_agent_private_string_test + Simplified the logic in _nx_snmp_agent_private_string_test. + Used zero as terminal of string in _nx_snmp_agent_private_string_set + and _nx_snmp_agent_public_string_set. + Created nx_snmp_agent_public_string_set to set the SNMP Agent public string. + Created nx_snmp_agent_get_type_test to determine if an SNMP message received + is a GET or SET type. + Modified nx_snmp_version_1_process, nx_snmp_version_2_process and nx_snmp_version_3_process + to support the nx_snmp_agent_get_type_test service (save the request + type of the current received message). + Created nxd_snmp_agent_trapv2_oid_send and nxd_snmp_agent_trapv3_oid_send services. + nxd_snmp.h Renamed API to be consistent with Express Logic names: + nx_snmp_agent_get_current_version to nx_snmp_agent_current_version_get + nx_snmp_agent_set_version to nx_snmp_agent_version_set + nx_snmp_agent_set_private_string to nx_snmp_agent_private_string_set + nx_snmp_agent_set_public_string to nx_snmp_agent_public_string_set + nx_snmp_agent_received_private_string to nx_snmp_agent_private_string_test + Added new API nx_snmp_agent_public_string_set and nx_snmp_agent_request_get_type_test + Created nxd_snmp_agent_trapv2_oid_send and nxd_snmp_agent_trapv3_oid_send services. + + nxd_sntp_client.c Fixed a bug in setting flags of request packet. + Fixed a compiler error when IPv6 is disabled. + Fixed compiler warnings. + Fixed a bug that dispersion check is disabled, the return + status should be success. + nxd_sntp_client.h Fixed default value for packet size. + Fixed predefined value of current year and NTP time at 1999-01-01. + + nxd_telnet_server.c Added support for option negotiation. The supported options are "ECHO" and "Suppress Go Ahead". + Fixed a bug that connection end callback function was not invoked. + Added logic to handle a RST where the socket is already closed. + Added a callback to set remote echo (used by the NetX Duo SHELL Telnet driver). + nxd_telnet_server.h Added support for option negotiation. The supported options are "ECHO" and "Suppress Go Ahead". + + nxd_tftp_server.c Remove the MULTI_HOME macro definition. + Added support for packet chaining. + nxd_tftp_server.h Remove the MULTI_HOME macro definition. + nxd_tftp_client.c Fixed packet leaks in nx_tftp_client_file_read and nx_tftp_client_file_open. + Remove the MULTI_HOME macro definition. + Modified nx_tftp_client_file_write and nx_tftp_client_file_open (write request) to save server + error type and message to TFTP Client if an ACK is not received after data is sent. + Modified nx_tftp_client_file_read to fix bug parsing the server error type from the server + if an error code is received. + + +Release 5.4 11-23-2009 + + nxd_dhcp_client.c Added logic to clear non specific DHCP broadcast packets from the DHCP Client + receive queue in nx_dhcp_thread_entry() and nx_dhcp_get_response(). This is enabled by + defining the NX_DHCP_CLIENT_CLEAR_QUEUE option in nx_dhcp.h. + Made corrections to nx_dhcp_process for more accurate handling of retransmission + intervals in both the process of reaching the BOUND state and in the RENEW and REBIND + states. + Simplified the logic for extracting network parameters from the Server DHCP messages + between nx_dhcp_extract_information and nx_dhcp_process, in particular if the + ARP probe is enabled. This also fixed a bug with using nx_dhcp_send_arp_probe of + calling the state change notify function before the probe completed and the DHCP Client + properly promoted to the BOUND state. + Simplified the logic in nx_dhcp_start and nx_dhcp_request_client_ip for setting the DHCP + Client state with respect to the Client requesting a particular IP address. + Modified nx_dhcp_get_response() to prevent invalid packet releases. + Removed the requirement for having the DHCP CLient to have a non zero interface IP address for using + the option to skip the discovery step. + Modified nx_dhcp_process, nx_dhcp_release, nx_dhcp_decline and nx_dhcp_reinitialize to clear the DHCP + Client copy of network parameters (e.g. network mask, gateway) if the DHCP Client is clearing the + interface IP address and gateway. + Made a correction to nx_dhcp_send_response_internal to always send DISCOVERY messages + as broadcast packets as per the RFC 2131. + Made a correction to nx_dhcp_send_response_internal to always send REQUEST messages + as broadcast packets if the DHCP Client is in the REBIND or REQUESTING state as per the RFC 2131. + Made corrections for creating and sending the INFORM_REQUEST message. + Created nx_dhcp_decline() to send DECLINE messages + Modified nx_dhcp_send_request() to disallow RELEASE and DECLINE messages. + Removed logic in nx_dhcp_client_arp_probe_send() setting IP network parameters. Modified to only + return status if the IP address is not in use. + Modified nx_dhcp_release to set the start flag to false which is required to be able to restart the client with nx_dhcp_start(). + Modified nx_dhcp_delete() to unbind the socket before deleting. + Modified nx_dhcp_delete() and nx_dhcp_create() to delete the DHCP Client packet pool only if the DHCP + Client task created it. + Modified nx_dhcp_option_retrieve() for an error in parsing the option buffer. + Modified nx_dhcp_process() to sleep for the NX_DHCP_TIME_INTERVAL only if the + DHCP client is at or beyond the bound state. + Modified nx_dhcp_process() to set the IP network address to zero if the ARP probe + fails. This ensures the DHCP Client sends the subsequent DHCP messages out as broadcast + (not unicast). + Modified nx_dhcp_process() to adjust the DHCP Client time remaining on its IP lease for + the length of time of the ARP probe. + nxd_dhcp_client.h Added nx_dhcp_decline to the list of DHCP Client API services + Modified nx_dhcp_client_arp_probe_send definition + Added internal flags to the DHCP CLient struct to simplify internal logic of the DHCP + Client processing messages from the Server. + nxd_dhcp_server.c Replaced an array of CHAR pointers with a single CHAR array for the DHCP + Server dhcp_name field. Modified nx_dhcp_server_create() to copy the input + name to the server dhcp_name field. + + +Release 5.3 08-03-2009 + nxd_bsd.c nx_bsd_raw_filter_set - sets a function pointer to the BSD function that filters packets when raw + sockets are enabled in NetX Duo and NX_RAW_PACKET_FILTER_ENABLE is defined at NetX Duo + library build time. Note that if there are multiple BSD raw sockets using the same protocol, + the behavior in NetX Duo is undefined. BSD sockets should copy received packets to all raw sockets + having the same protocol, but this is not implemented in BSD 5.3 + nx_bsd_packet_receive- Retrieves packets enqueued on the BSD raw socket queue. + nx_bsd_raw_packet_info_extract - Extracts the raw packet sender and physical interface. + nx_bsd_raw_receive_notify - This is the callback function NetX Duo uses when a raw packet has been received + and raw sockets are enabled in NetX Duo. + nx_bsd_raw_packet_filter - receives packets from NetX Duo if raw sockets are enabled and determines if + BSD will consume the packet or let NetX Duo continue processing the packet e.g. hand off to TCP, + UDP, ICMP and other protocol handlers. + Modified functions + sendto - modified to send raw packets out the BSD socket if raw sockets are enabled. + recv - modified to receive raw packets if raw sockets enabled in NetX Duo + select - modified to receive raw packets if raw sockets enabled in NetX Duo + connect - modified to check for and disallow raw sockets to use this service + send - modified to check for and disallow raw sockets to use this service + soc_close - modified for closing BSD sockets enabled for raw socket handling, including + manully clearing packet from the raw receive queue + nxd_bsd.h Added the NX_BSD_PRINT_ERROR macro definition (disbaled by default0 for debug output + + nxd_dhcp_client.c Added _nx_dhcp_server_address_get, for obtaining the DHCP server address and + _nx_dhcp_packet_pool_set to allow the host application to create the packet pool instead + of the default DHCP Client packet pool. + Added critical section and mutex protection to the DHCPv6 Client + Modified nx_dhcp_get_response to add missing nx_packet_release calls to prevent packet leaks. + nxd_dhcp_client.h Corrected the definition for NX_PACKET_ALLOCATE_TIMEOUT + Created a configuration option NX_DHCP_CLIENT_USER_CREATE_PACKET_POOL for the new feature for the + host application to optionally create the DHCP Client packet pool + nxd_dhcp_server.c Renamed internal functions, error constants and definitions to avoid conflicts with the + DHCP client. + nxd_dhcp_server.h Renamed internal functions, error constants and definitions to avoid conflicts with the + DHCP client. + nxd_dhcpv6_client.c Modified the DHCPv6 Client thread task to be stoppable at any time + Added nx_dhcpv6_stop and nx_dhcpv6_reinitialize for stopping and restarting the Client + Added nx_dhcpv6_register_IP_address for updating NetX Duo with the DHCPv6 Client assigned IP address + Modified DHCPv6 Client to remove IP address from the IP instance address table if an IP address is not reassigned + for example if rebind fails or host decides to release or decline an assigned address + Added critical section and mutex protection to the DHCPv6 Client + nxd_dhcpv6_client.h Corrected the timer interval for the accrued lifetime entry function to use seconds, not ticks + Created a BOUND state and removed the FAILURE state (not useful); the BOUND state is a drop through + state in the DHCPv6 Client processing thread (does nothing) + + +Release 5.2 12-30-2007 + + nx_auto_ip.c Fixed a bug causing an infinate loop + Added support for NetX Duo (5.5 and later) to run over IPv4 when IPv6 is enabled. + nx_auto_ip.h Added support for NetX Duo (5.5 and later) to run over IPv4 when IPv6 is enabled. + + nxd_bsd.c Fixed compile error caused by NX_BSD_ADDRESS_FAMILY_ERROR and NX_BSD_ERROR(NX_BSD_ERROR, __LINE__). + nxd_bsd.h NX_BSD_INHERIT_LISTENER_SOCKET_SETTINGS corrected to be enabled by default + + nxd_dhcp_client.c First release of NetX Duo DHCP Client (branched from NetX DHCP Client) + Renamed the NetX Duo Client source code file from nx_dhpc.c to nxd_dhcp_client.c to specify the + DHCP Client and to indicate that the DHCP Client will work properly in an IPv6 enabled NetX Duo + environment. + nxd_dhcp_client.h Renamed the NetX Duo Client header file from nx_dhpc.h to nxd_dhcp_client.h + nxd_dhcp_server.c First release of NetX Duo DHCP Server (branched from NetX DHCP Server) + Renamed the NetX Duo Server source code file from nx_dhpc_server.c to nxd_dhcp_server.c to + indicate that the DHCP Server will work properly in an IPv6 enabled NetX Duo + environment. + nxd_dhcp_server.h Renamed the NetX Duo Server header file from nx_dhpc_server.h to nxd_dhcp_server.h + nxd_dhcpv6_client.c Fixed compile errors in the NetX duo 5.6 environment. + v5.1 patches: + Modified nx_dhcpv6_start() for DHCPv6 client hosts rebooting with a valid IP lease already assigned. + Modified nx_dhcpv6_client_create_duid() not to set the link local address. The host application must do this + Added support for multihoming and NetX Duo v5.5 and later. + nxd_dhcpv6_client.h Fixed compile errors in the NetX duo 5.6 environment. + + nxd_ftp_client.c Moved data socket disconnect ahead of releasing the + port and removing from the listen queue, flush server + FTP messages from previous open request before starting + the current open file request, added an unnaccept call + if the data socket accept call fails, disconnect data + socket if an error occurs on the control socket ending + the file open request, increment the data port in the + event the FTP server puts the data socket in a timed wait, + fixed the source of the IPv6 address in the number to + ascii converstion routine, flush server FTP messages + from previous open request before starting the current + open file request, added an unnaccept call if the data + socket accept call fails, disconnect data socket if an + error occurs on the control socket ending the file open + request, increment the data port in the event the FTP + server puts the data socket in a timed wait. + nxd_ftp_client.h Added client data socket port to increment data port + binding on successive connections. + nxd_ftp_server.c Added a cast to the FTP server pointer, added a check for + whether or not IPv6 is enabled in NetX Duo. + nxd_ftp_server.h Added conditional IPv6 check for IPv6 specific + function declarations. + + nxd_http_server.c Created _nx_http_server_content_length_get_extended and + _nx_http_server_content_get_extended services which will accept + empty (content-length = 0) PUT and POST requests. + Corrected 411 error codes in HTTP server replies to 400 error codes + since 411 error code is when the HTTP server refuses to accept a + request without a defined content-length. HTTP 1.0 permits requests + without Content-length but does not permit Content-length that does + not match the message body. + + nx_ppp.c Added logic in nx_ppp_ipcp_state_machine_update() to handle late configuration requests + after the other side has completed the IPCP handshake. + Corrected the processing of the CHAP challenge 'name' in nx_ppp_chap_challenge_respond(). + Fixed a corner case if packet payload size falls on a certain boundary such that the 7E marker + terminating PPP message overwrites the end of the packet payload boundary in nx_ppp_packet_receive_get(). + Also fixed an error in checksum computation for the same packet payloads of the same size. + Added packet chaining support + Modified nx_ppp_receive_packet_process to only call link up callback if PPP has just transitioned to + IPCP complete state, not if it was already in that state. + + nxd_telnet_server.c Added support for activity timeout disconnect callback. When a connection times out + NetX Duo Telnet Server calls the disconnect callback. Previously, it simply + closed the connection silently. + Added a current open connection counter and new API + nx_telnet_server_get_open_connection_count for retrieving the open conneciton count. + nxd_telnet_server.h Added support for the new API nx_telnet_server_get_open_connection_count + + +Release 5.1 01-12-2012 + + + nxd_dhcpv6_server.c Modified the nx_dhcpv6_server_create function to include a stack size. Defaulted the + DHCPv6 server IP address index to 1 instead of requiring the host application to use + the nx_dhcpv6_server_set_interface (only necessary if using the non primary interface + or global address not at index 1 in the IP address table). + Renamed internal functions and #defines to avoid compile erros in projects including the DHCPv6 Client + nxd_dhcpv6_server.h Renamed internal functions and #defines to avoid compile erros in projects including the DHCPv6 Client + + nxd_http_client.h Created a separate header file for HTTP Client and HTTP Server + nxd_http_server.h Created a separate header file for HTTP Client and HTTP Server + + nxd_snmp.c Added support for packet chaining + Moved nx_udp_socket_bind call from nx_snmp_agent_create to nx_snmp_agent_start + moved nx_udp_socket_unbind in nx_snmp_agent_stop. This prevent packets from + piling up on the receive queue before the SNMP agent thread can start processing them. + Corrected how SNMPv3 packets are encrypted by adding an extra sequence between the top level + PDU sequence and the engine ID. nx_snmp_version_3_process, nx_snmp_version_3_report_send + and nx_snmp_agent_encrypt_pdu modified accordingly. + Added trap security to provide authentication and encryption for trap messages. The keys for trap message processing + can take separate passwords than the keys for processing responses messages. + Added logic to handle empty strings in _nx_snmp_object_id_get + Modified nx_snmp_version_3_process and nx_snmp_version_3_discovery to fix bugs handling discovery requests. + Modified nx_snmp_version_3_process to fix bugs when authentication enabled. + Added support for negative INTEGER data types in _nx_snmp_utility_object_data_get + Added _nx_snmp_agent_v3_context_boots_get() + Added support for setting SNMP version at run time and creating private community strings: + Created nx_snmp_agent_get_current_version to determine the SNMP version of the most recent + SNMP manager packet sent to the agent. + Created nx_snmp_agent_set_version to set the enable/disable the SNMP agent for SNMPV1, + SNMPV2, and SNMPv3. These run time settings are overridden by the #defines + (NX_SNMP_DISABLE_V1, NX_SNMP_DISABLE_V2, and NX_SNMP_DISABLE_V3 ). Enabling the SNMP + agent for SNMPv1 at run time has no effect if NX_SNMP_DISABLE_V3 is defined. + Created nx_snmp_agent_set_private_string to set the SNMP Agent private string. This enables + the agent to have public and private data, and if it will accept the SNMP manager + packet SET requests. + Created nx_snmp_agent_set_public_string to set the SNMP Agent public string. The default value + is "public". Previously the NetX Duo SNMP Agent did not evaluate the community string + and as such allowed all SET requests and all data was considered public. + Created nx_snmp_agent_received_private_string to compare the community string + in the received SNMP packet with the Agent private string for a match. + Modified nx_snmp_agent_version_1_process and nx_snmp_agent_version_2_process to + send an error report if an unsupported object type is received. + Modified key use services to accept a null key pointer in the error handler; this allows the caller + to disable authentication or encryption at run time. + nxd_snmp.h Added new API nx_snmp_agent_get_current_version, nx_snmp_agent_set_version, + nx_snmp_agent_set_private_string, nx_snmp_agent_set_public_string, and + nx_snmp_agent_received_private_string + + Modified the NX_SNMP_AGENT control block to support the new API/features. \ No newline at end of file