1 NetXDuo 2 3For version 6 and higher, please refer to the release notes on GitHub at https://github.com/eclipse-threadx/netxduo/releases. 4Below is the revision history for 5.x. 5 61. NetXDuo 7 808-15-2019 NetX Duo generic code version 5.12. This release includes the 9 following major features: 10 11 Files are modified to fix window size overflow: 12 nx_tcp_packet_send_control.c 13 nx_tcp_socket_retransmit.c 14 nx_tcp_socket_send_internal.c 15 16 Files are modified to improve string length verification: 17 demo_netx_duo_multihome_tcp.c 18 demo_netx_duo_multihome_udp.c 19 demo_netx_duo_tcp.c 20 demo_netx_duo_udp.c 21 nx_api.h 22 nx_user.h 23 24 Files are modified to improve RARP logic: 25 nx_rarp_enable.c 26 nx_rarp_periodic_update.c 27 nx_rarp_packet_receive.c 28 29 File is created to improve string length verification: 30 nx_utility.c 31 32 Files are modified to fix compiler warnings: 33 nx_ip_checksum_compute.c 34 nxd_ipv6_default_router_entry_get.c 35 36 Files are modified to fix system state check: 37 nx_api.h 38 nx_icmp_packet_receive.c 39 nx_igmp_packet_receive.c 40 nx_tcp_client_bind_cleanup.c 41 nx_tcp_connect_cleanup.c 42 nx_tcp_disconnect_cleanup.c 43 nx_tcp_packet_receive.c 44 nx_tcp_receive_cleanup.c 45 nx_tcp_transmit_cleanup.c 46 nx_udp_packet_receive.c 47 48 Files are modified to improve packet length verification: 49 nx_arp_announce_send.c 50 nx_arp_packet_receive.c 51 nx_arp_packet_send.c 52 nx_arp_probe_send.c 53 nx_icmpv6_process_redirect.c 54 nx_icmpv6_send_error_message.c 55 nx_icmpv6_send_ns.c 56 nx_icmpv6_send_rs.c 57 nx_igmp_interface_report_send.c 58 nx_rarp_packet_receive.c 59 nx_rarp_packet_send.c 60 nx_tcp_packet_send_control.c 61 nx_udp_packet_receive.c 62 63 Files are modified to support for 64-bit mode: 64 nx_api.h 65 nx_arp_queue_send.c 66 nx_icmp_interface_ping.c 67 nx_icmp_interface_ping6.c 68 nx_icmpv4_process_echo_reply.c 69 nx_icmpv4_send_error_message.c 70 nx_icmpv6_destination_table_periodic_update.c 71 nx_icmpv6_process_echo_reply.c 72 nx_icmpv6_process_na.c 73 nx_icmpv6_process_ns.c 74 nx_icmpv6_process_ra.c 75 nx_icmpv6_process_redirect.c 76 nx_icmpv6_send_error_message.c 77 nx_icmpv6_send_ns.c 78 nx_icmpv6_send_queued_packets.c 79 nx_icmpv6_send_rs.c 80 nx_icmpv6_validate_neighbor_message.c 81 nx_icmpv6_validate_options.c 82 nx_icmpv6_validate_ra.c 83 nx_igmp_packet_process.c 84 nx_ip_checksum_compute.c 85 nx_ip_create.c 86 nx_ip_dispatch_process.c 87 nx_ip_driver_packet_send.c 88 nx_ip_fast_periodic_timer_entry.c 89 nx_ip_fragment_assembly.c 90 nx_ip_fragment_forward_packet.c 91 nx_ip_fragment_packet.c 92 nx_ip_header_add.c 93 nx_ip_packet_checksum_compute.c 94 nx_ip_packet_send.c 95 nx_ip_periodic_timer_entry.c 96 nx_ip_thread_entry.c 97 nx_ipv4_option_process.c 98 nx_ipv4_packet_receive.c 99 nx_ipv6_fragment_process.c 100 nx_ipv6_header_add.c 101 nx_ipv6_option_error.c 102 nx_ipv6_packet_receive.c 103 nx_ipv6_packet_send.c 104 nx_ipv6_process_hop_by_hop_option.c 105 nx_packet.h 106 nx_packet_data_adjust.c 107 nx_packet_debug_info_get.c 108 nx_packet_pool_create.c 109 nx_tcp_no_connection_reset.c 110 nx_tcp_packet_process.c 111 nx_tcp_packet_send_control.c 112 nx_tcp_packet_send_syn.c 113 nx_tcp_server_socket_relisten.c 114 nx_tcp_socket_packet_process.c 115 nx_tcp_socket_receive.c 116 nx_tcp_socket_retransmit.c 117 nx_tcp_socket_send_internal.c 118 nx_tcp_socket_state_ack_check.c 119 nx_tcp_socket_state_data_check.c 120 nx_udp_packet_receive.c 121 nx_udp_socket_bytes_available.c 122 nx_udp_socket_receive.c 123 nxd_ipv6_disable.c 124 nxd_udp_socket_send.c 125 nxde_icmp_ping.c 126 nxde_icmp_source_ping.c 127 nxe_packet_pool_create.c 128 129 Other modified files: 130 demo_netx_duo_multihome_udp.c Fixed packet leak when IPv4 disabled. 131 nx_arp_packet_receive.c Fixed the ARP update on static entries. 132 nx_ip_checksum_compute.c Fixed alignment issue. 133 nx_ip_delete.c Allowed driver uninit to execute without preemption disabled. 134 nx_ip_dispatch_process.c Supported packet pool low watermark. 135 nx_ipv4_option_process.c Improved internal logic. 136 nx_ipv4_packet_receive.c Corrected the logic for checking DHCP message. 137 nx_ipv4_packet_receive.c Supported packet pool low watermark. 138 nxd_tcp_client_socket_connect.c Fixed a packet leak issue for TCP client. 139 nx_tcp_packet_process.c Fixed connection MSS. 140 Validated option after SEQ and ACK are checked. 141 nx_tcp_socket_packet_process.c Validated option after SEQ and ACK are checked. 142 nx_tcp_packet_send_syn.c Fixed connection MSS. 143 144 14507/15/2018 NetX Duo generic code version 5.11. This release includes the 146 following major features: 147 148 Files are modified to fix custom MSS value: 149 nx_api.h 150 nx_tcp_packet_process.c 151 nx_tcp_packet_send_syn.c 152 nx_tcp_server_socket_relisten.c 153 nx_tcp_socket_mss_get.c 154 nx_tcp_socket_mss_set.c 155 nx_tcp_socket_send_internal.c 156 157 Files are modified to improve packet length verification: 158 nx_icmpv6_process_echo_reply.c 159 nx_icmpv6_process_echo_request.c 160 nx_icmpv6_process_na.c 161 nx_icmpv6_process_packet_too_big.c 162 nx_icmpv6_validate_options.c 163 nx_ip_dispatch_process.c 164 nx_ipv4_packet_receive.c 165 nx_ipv6_packet_receive.c 166 nx_ipv6_process_hop_by_hop_option.c 167 nx_tcp_packet_process.c 168 169 Files are modified to support Thread feature: 170 nx_api.h 171 nx_ipv6_process_hop_by_hop_option.c 172 nx_ipv6_util.c 173 nx_packet_allocate.c 174 175 Files are modified to check interface for router lookup: 176 nx_icmpv6_process_redirect.c 177 nx_ipv6.h 178 nx_ipv6_packet_send.c 179 nxd_ipv6_router_lookup.c 180 181 Files are modified to fix the logic to update the destination cache: 182 nx_icmpv6.h 183 nx_icmpv6_dest_table_add.c 184 nx_icmpv6_dest_table_find.c 185 nx_icmpv6_process_packet_too_big.c 186 nx_icmpv6_process_ra.c 187 nx_icmpv6_process_redirect.c 188 nx_icmpv6_send_queued_packets.c 189 nx_ipv6_packet_send.c 190 191 Files are modified to support specified source interface for IPv6: 192 nx_icmp_ping6.c 193 nx_icmpv6_send_error_message.c 194 nx_icmpv6_send_rs.c 195 nx_ipv6.h 196 nxd_ipv6_interface_find.c 197 nxd_tcp_client_socket_connect.c 198 nxd_udp_socket_send.c 199 200 Files are modified to improve internal logic: 201 nx_api.h 202 nx_icmpv6_process_echo_request.c 203 nx_icmpv6_process_na.c 204 nx_icmpv6_process_ra.c 205 nx_icmpv6_send_error_message.c 206 nx_ip_create.c 207 nx_ip_dispatch_process.c 208 nx_ip_fragment_assembly.c 209 nx_ip_fragment_timeout_check.c 210 nx_ip_header_add.c 211 nx_ip_interface_attach.c 212 nx_ip_interface_physical_address_set.c 213 nx_ip_max_payload_size_find.c 214 nx_ipv4_option_process.c 215 nx_ipv6_header_add.c 216 nx_ipv6_option_error.c 217 nx_ipv6_packet_copy.c 218 nx_ipv6_packet_send.c 219 nx_ipv6_util.c 220 nx_packet_allocate.c 221 nx_packet_release.c 222 nx_packet_transmit_release.c 223 nx_ram_network_driver.c 224 nx_tcp_client_socket_bind.c 225 nx_tcp_packet_process.c 226 nx_tcp_packet_send_control.c 227 nx_tcp_packet_send_syn.c 228 nx_tcp_server_socket_accept.c 229 nx_tcp_socket_disconnect.c 230 nx_tcp_socket_retransmit.c 231 nx_tcp_socket_send_internal.c 232 nx_tcp_socket_state_ack_check.c 233 nx_tcp_socket_state_data_check.c 234 nx_udp_socket_bind.c 235 nx_udp_socket_receive.c 236 nxd_ipv6_default_router_delete.c 237 nxd_ipv6_interface_find.c 238 nxd_ipv6_search_onlink.c 239 nxd_tcp_client_socket_connect.c 240 nxd_udp_socket_send.c 241 242 Files are modified to merge IPv6 loopback address with normal IPv6 address: 243 nx_api.h 244 nx_ip_create.c 245 nx_ip_max_payload_size_find.c 246 nxd_ipv6_disable.c 247 nxde_icmp_source_ping.c 248 nxde_ip_raw_packet_source_send.c 249 nxde_ipv6_address_get.c 250 nxde_udp_socket_source_send.c 251 252 Files are modified to use macro to bring in symbol: _tx_thread_system_state: 253 nxe_ip_forwarding_disable.c 254 nxe_ip_forwarding_enable.c 255 nxe_packet_pool_info_get.c 256 nxe_tcp_enable.c 257 nxe_tcp_socket_receive_queue_max_set.c 258 nxe_udp_enable.c 259 nxe_udp_info_get.c 260 nxe_udp_socket_checksum_disable.c 261 nxe_udp_socket_checksum_enable.c 262 nxe_udp_socket_info_get.c 263 264 Files are modified to remove unreachable code: 265 nx_tcp_socket_receive.c 266 nx_ipv6_packet_send.c 267 268 Files are modified to be compatible with ThreadX 5.8 or later: 269 nx_api.h 270 nx_icmp_cleanup.c 271 nx_icmpv4.h 272 nx_ip.h 273 nx_ip_delete.c 274 nx_ip_raw_packet_cleanup.c 275 nx_ip_raw_packet_disable.c 276 nx_packet.h 277 nx_packet_pool_cleanup.c 278 nx_tcp.h 279 nx_tcp_cleanup_deferred.c 280 nx_tcp_client_bind_cleanup.c 281 nx_tcp_client_socket_unbind.c 282 nx_tcp_connect_cleanup.c 283 nx_tcp_deferred_cleanup_check.c 284 nx_tcp_disconnect_cleanup.c 285 nx_tcp_receive_cleanup.c 286 nx_tcp_server_socket_unaccept.c 287 nx_tcp_socket_connection_reset.c 288 nx_tcp_socket_disconnect.c 289 nx_tcp_socket_state_established.c 290 nx_tcp_socket_thread_suspend.c 291 nx_tcp_transmit_cleanup.c 292 nx_udp.h 293 nx_udp_bind_cleanup.c 294 nx_udp_receive_cleanup.c 295 nx_udp_socket_unbind.c 296 297 Files are modified to support random port find: 298 nx_api.h 299 nx_tcp_client_socket_bind.c 300 nx_tcp_enable.c 301 nx_tcp_free_port_find.c 302 nx_udp_enable.c 303 nx_udp_free_port_find.c 304 nx_udp_socket_bind.c 305 306 Files are modified to fix compiler errors when event trace is enabled: 307 nx_icmpv4_packet_process.c 308 nx_ip_create.c 309 nx_ip_forwarding_disable.c 310 nx_ip_forwarding_enable.c 311 nx_ip_fragment_enable.c 312 nx_ip_max_payload_size_find.c 313 nx_ip_raw_packet_filter_set.c 314 nx_ip_raw_packet_receive.c 315 nx_ip_static_route_add.c 316 nx_ip_static_route_delete.c 317 nx_packet_allocate.c 318 nx_rarp_disable.c 319 nx_rarp_enable.c 320 nx_rarp_info_get.c 321 nx_tcp.h 322 nx_tcp_connect_cleanup.c 323 nx_tcp_socket_block_cleanup.c 324 nx_tcp_socket_packet_process.c 325 nx_tcp_socket_receive_notify.c 326 nx_tcp_socket_state_syn_sent.c 327 nx_tcp_socket_send_internal.c 328 nx_tcp_socket_window_update_notify_set.c 329 nx_trace_object_unregister.c 330 nx_trace_object_register.c 331 nx_udp_info_get.c 332 nx_udp_socket_checksum_disable.c 333 nx_udp_socket_checksum_enable.c 334 nx_udp_socket_info_get.c 335 nx_udp_socket_port_get.c 336 nxd_ipv6_address_change_notify.c 337 nxd_ipv6_stateless_address_autoconfig_enable.c 338 nxd_ipv6_stateless_address_autoconfig_disable.c 339 nxd_udp_socket_send.c 340 341 Files are modified to avoid NULL pointer access in trace logging: 342 nx_ip_interface_info_get.c 343 nx_ip_thread_entry.c 344 nxd_ipv6_address_set.c 345 nxd_udp_packet_info_extract.c 346 347 Files are modified to fix the delay of initial router solicitation: 348 nx_icmpv6.h 349 nx_icmpv6_send_rs.c 350 nx_user.h 351 nxd_ipv6_enable.c 352 nxd_ipv6_router_solicitation_check.c 353 nxd_ipv6_stateless_address_autoconfig_enable.c 354 355 Files are modified to move the destination and ND cache tables to IP structure: 356 nx_api.h 357 nx_icmpv6.h 358 nx_icmpv6_DAD_clear_NDCache_entry.c 359 nx_icmpv6_dest_table_add.c 360 nx_icmpv6_dest_table_find.c 361 nx_icmpv6_destination_table_periodic_update.c 362 nx_icmpv6_packet_process.c 363 nx_icmpv6_process_redirect.c 364 nx_icmpv6_send_queued_packets.c 365 nx_ip_thread_entry.c 366 nx_ipv6_packet_send.c 367 nx_invalidate_destination_entry.c 368 nx_nd_cache.h 369 nx_nd_cache_add.c 370 nx_nd_cache_add_entry.c 371 nx_nd_cache_delete_internal.c 372 nx_nd_cache_fast_periodic_update.c 373 nx_nd_cache_find_entry.c 374 nx_nd_cache_find_entry_by_mac_addr.c 375 nx_nd_cache_interface_entries_delete.c 376 nx_nd_cache_slow_periodic_update.c 377 nx_system_initialize.c 378 nxd_icmp_enable.c 379 nxd_ipv6_destination_table_find_next_hop.c 380 nxd_ipv6_disable.c 381 nxd_ipv6_prefix_router_timer_tick.c 382 nxd_nd_cache_entry_delete.c 383 nxd_nd_cache_hardware_address_find.c 384 nxd_nd_cache_invalidate.c 385 nxd_nd_cache_ip_address_find.c 386 387 Files are modified to add support for disabling IPv4: 388 demo_netx_duo_multihome_tcp.c 389 demo_netx_duo_multihome_udp.c 390 demo_netx_duo_tcp.c 391 demo_netx_duo_udp.c 392 nx_api.h 393 nx_arp.h 394 nx_arp_announce_send.c 395 nx_arp_dynamic_entries_invalidate.c 396 nx_arp_dynamic_entry_delete.c 397 nx_arp_dynamic_entry_set.c 398 nx_arp_enable.c 399 nx_arp_entry_allocate.c 400 nx_arp_entry_delete.c 401 nx_arp_gratuitous_send.c 402 nx_arp_hardware_address_find.c 403 nx_arp_info_get.c 404 nx_arp_initialize.c 405 nx_arp_interface_entries_delete.c 406 nx_arp_ip_address_find.c 407 nx_arp_packet_deferred_receive.c 408 nx_arp_packet_receive.c 409 nx_arp_packet_send.c 410 nx_arp_periodic_update.c 411 nx_arp_probe_send.c 412 nx_arp_queue_process.c 413 nx_arp_queue_send.c 414 nx_arp_static_entries_delete.c 415 nx_arp_static_entry_create.c 416 nx_arp_static_entry_delete.c 417 nx_arp_static_entry_delete_internal.c 418 nx_icmp.h 419 nx_icmp_enable.c 420 nx_icmp_interface_ping.c 421 nx_icmp_packet_process.c 422 nx_icmp_packet_receive.c 423 nx_icmp_ping.c 424 nx_icmp_queue_process.c 425 nx_icmpv4.h 426 nx_icmpv4_packet_process.c 427 nx_icmpv4_process_echo_reply.c 428 nx_icmpv4_process_echo_request.c 429 nx_icmpv4_send_error_message.c 430 nx_igmp.h 431 nx_igmp_enable.c 432 nx_igmp_info_get.c 433 nx_igmp_loopback_disable.c 434 nx_igmp_loopback_enable.c 435 nx_igmp_multicast_check.c 436 nx_igmp_multicast_interface_join.c 437 nx_igmp_multicast_interface_join_internal.c 438 nx_igmp_multicast_interface_leave.c 439 nx_igmp_multicast_interface_leave_internal.c 440 nx_igmp_multicast_join.c 441 nx_igmp_multicast_leave.c 442 nx_igmp_packet_process.c 443 nx_igmp_packet_receive.c 444 nx_igmp_periodic_processing.c 445 nx_igmp_queue_process.c 446 nx_ip.h 447 nx_ip_address_change_notify.c 448 nx_ip_address_get.c 449 nx_ip_address_set.c 450 nx_ip_create.c 451 nx_ip_delete.c 452 nx_ip_dispatch_process.c 453 nx_ip_driver_packet_send.c 454 nx_ip_forward_packet_process.c 455 nx_ip_forwarding_disable.c 456 nx_ip_forwarding_enable.c 457 nx_ip_fragment_assembly.c 458 nx_ip_fragment_forward_packet.c 459 nx_ip_fragment_packet.c 460 nx_ip_fragment_timeout_check.c 461 nx_ip_gateway_address_clear.c 462 nx_ip_gateway_address_get.c 463 nx_ip_gateway_address_set.c 464 nx_ip_header_add.c 465 nx_ip_interface_address_get.c 466 nx_ip_interface_address_set.c 467 nx_ip_interface_attach.c 468 nx_ip_interface_detach.c 469 nx_ip_interface_info_get.c 470 nx_ip_interface_status_check.c 471 nx_ip_max_payload_size_find.c 472 nx_ip_packet_receive.c 473 nx_ip_packet_send.c 474 nx_ip_raw_packet_send.c 475 nx_ip_raw_packet_source_send.c 476 nx_ip_route_find.c 477 nx_ip_static_route_add.c 478 nx_ip_static_route_delete.c 479 nx_ip_thread_entry.c 480 nx_ipv4.h 481 nx_ipv4_multicast_interface_join.c 482 nx_ipv4_multicast_interface_leave.c 483 nx_ipv4_option_process.c 484 nx_ipv4_packet_receive.c 485 nx_packet_allocate.c 486 nx_ram_network_driver.c 487 nx_rarp.h 488 nx_rarp_disable.c 489 nx_rarp_enable.c 490 nx_rarp_info_get.c 491 nx_rarp_packet_deferred_receive.c 492 nx_rarp_packet_receive.c 493 nx_rarp_packet_send.c 494 nx_rarp_periodic_update.c 495 nx_rarp_queue_process.c 496 nx_tcp_client_socket_connect.c 497 nx_tcp_no_connection_reset.c 498 nx_tcp_packet_process.c 499 nx_tcp_packet_send_control.c 500 nx_tcp_packet_send_syn.c 501 nx_tcp_server_socket_relisten.c 502 nx_tcp_server_socket_unaccept.c 503 nx_tcp_socket_block_cleanup.c 504 nx_tcp_socket_mss_set.c 505 nx_tcp_socket_peer_info_get.c 506 nx_tcp_socket_retransmit.c 507 nx_tcp_socket_send_internal.c 508 nx_tcp_socket_state_ack_check.c 509 nx_udp_packet_info_extract.c 510 nx_udp_packet_receive.c 511 nx_udp_socket_receive.c 512 nx_udp_socket_send.c 513 nx_udp_source_extract.c 514 nx_user.h 515 nxd_icmp_enable.c 516 nxd_icmp_ping.c 517 nxd_icmp_source_ping.c 518 nxd_ip_raw_packet_source_send.c 519 nxd_tcp_client_socket_connect.c 520 nxd_tcp_socket_peer_info_get.c 521 nxd_udp_packet_info_extract.c 522 nxd_udp_socket_send.c 523 nxd_udp_socket_source_send.c 524 nxd_udp_source_extract.c 525 nxde_icmp_ping.c 526 nxde_icmp_source_ping.c 527 nxde_ip_raw_packet_send.c 528 nxde_ip_raw_packet_source_send.c 529 nxde_tcp_client_socket_connect.c 530 nxde_udp_socket_send.c 531 nxde_udp_socket_source_send.c 532 nxe_arp_dynamic_entries_invalidate.c 533 nxe_arp_dynamic_entry_set.c 534 nxe_arp_enable.c 535 nxe_arp_entry_delete.c 536 nxe_arp_gratuitous_send.c 537 nxe_arp_hardware_address_find.c 538 nxe_arp_info_get.c 539 nxe_arp_ip_address_find.c 540 nxe_arp_static_entries_delete.c 541 nxe_arp_static_entry_create.c 542 nxe_arp_static_entry_delete.c 543 nxe_icmp_enable.c 544 nxe_icmp_ping.c 545 nxe_igmp_enable.c 546 nxe_igmp_info_get.c 547 nxe_igmp_loopback_disable.c 548 nxe_igmp_loopback_enable.c 549 nxe_igmp_multicast_interface_join.c 550 nxe_igmp_multicast_interface_leave.c 551 nxe_igmp_multicast_join.c 552 nxe_igmp_multicast_leave.c 553 nxe_ip_address_change_notify.c 554 nxe_ip_address_get.c 555 nxe_ip_address_set.c 556 nxe_ip_forwarding_disable.c 557 nxe_ip_forwarding_enable.c 558 nxe_ip_gateway_address_clear.c 559 nxe_ip_gateway_address_get.c 560 nxe_ip_gateway_address_set.c 561 nxe_ip_interface_address_get.c 562 nxe_ip_interface_address_set.c 563 nxe_ip_interface_status_check.c 564 nxe_ip_raw_packet_send.c 565 nxe_ip_raw_packet_source_send.c 566 nxe_ip_static_route_add.c 567 nxe_ip_static_route_delete.c 568 nxe_ipv4_multicast_interface_join.c 569 nxe_ipv4_multicast_interface_leave.c 570 nxe_rarp_disable.c 571 nxe_rarp_enable.c 572 nxe_rarp_info_get.c 573 nxe_tcp_client_socket_connect.c 574 nxe_tcp_socket_peer_info_get.c 575 nxe_tcp_socket_send.c 576 nxe_udp_packet_info_extract.c 577 nxe_udp_socket_send.c 578 nxe_udp_socket_source_send.c 579 nxe_udp_source_extract.c 580 581 Other modified files: 582 583 nx_arp_packet_receive.c Added zero IP probe address check. 584 nx_arp_periodic_update.c Improved retry counter check logic. 585 nx_icmp_packet_receive.c Added logic for checking address of ICMP packet. 586 nx_icmpv6_process_echo_request.c Corrected the logic for processing multicast echo. 587 nx_igmp.h Declared nx_igmp_interface_report_send function. 588 nx_igmp_multicast_interface_leave_internal.c Optimized to use the report_send function. 589 nx_igmp_packet_process.c Fixed history information. 590 nx_igmp_periodic_processing.c Optimized to use the report_send function. 591 nx_ip_create.c Fixed address index. The value is cleared by nxd_ipv6_disable. 592 nx_ip_forward_packet_process.c Added check for class D address. 593 Corrected the logic for appending the overflowing data to the new packet. 594 nx_ip_interface_detach.c Optimized the logic for invalidating destination entries when the router is invalid. 595 nx_ipv6_fragment_process.c Fixed NULL pointer access. 596 nx_nd_cache.h Cleaned up internal functions. 597 nx_nd_cache_clear_IsRouter_field.c Removed unused function. 598 nx_nd_cache_init.c Removed unused function. 599 nx_packet.h Adjusted the packet data to fill the specified header. 600 nx_packet_data_append.c Fixed NULL pointer access. 601 nx_tcp_client_socket_unbind.c Fixed a bug where packets in the receive queue may not be properly released. 602 nx_tcp_packet_process.c Fixed the packet leak. 603 nx_tcp_server_socket_accept.c Fixed an issue where SYN is sent multiple times. 604 nx_tcp_socket_retransmit.c Fixed compiler error when NX_DISABLE_TCP_TX_CHECKSUM is defined. 605 nx_tcp_socket_send_internal.c Fixed window size when receiving duplicated ACKs. 606 Fixed empty packet. 607 nx_tcp_socket_state_ack_check.c Fixed ACK number check when zero window probe is ACKed. 608 Fixed the condition to update window size. 609 nx_tcp_socket_state_transmit_check.c Fixed window size when receiving duplicated ACKs. 610 nx_user.h Added symbol for checking address of ICMP packet. 611 nxd_ipv6_default_router_delete.c Removed one line function _nx_nd_cache_clear_IsRouter_field(). 612 nxd_ipv6_enable.c Fixed address index. The value is cleared by nxd_ipv6_disable. 613 nxd_ipv6_prefix_router_timer_tick.c Removed one line function _nx_nd_cache_clear_IsRouter_field(). 614 Optimized the logic for invalidating destination entries when the router is invalid. 615 nxd_nd_cache_invalidate.c Simplified the logic for invalidating all ND cache entries. 616 nxd_nd_cache_invalidate_internal.c Removed unused function. 617 nxd_udp_socket_send.c Fixed compiler error when NX_DISABLE_UDP_TX_CHECKSUM is defined. 618 nxe_ip_create.c Modified invalid IP address check. 619 nxe_ip_interface_attach.c Modified invalid IP address check. 620 621 File created: 622 nx_igmp_interface_report_send.c Created internal function for sending join and leave reports. 623 nx_packet_data_adjust.c Adjusted the packet data to fill the specified header. 624 625 62605/10/2016 NetX Duo generic code version 5.10. This release includes the 627 following major features: 628 629 Files are modified to add an argument to the parameter list of _nx_icmpv6_send_ns: 630 nx_icmpv6.h 631 nx_icmpv6_perform_DAD.c 632 nx_icmpv6_send_ns.c 633 nx_ip_thread_entry.c 634 nx_ipv6_packet_send.c 635 nx_nd_cache_fast_periodic_update.c 636 637 Files are modified to remove unused stub functions for trace: 638 nx_api.h 639 nx_trace_event_insert.c 640 nx_trace_event_update.c 641 nx_trace_object_register.c 642 nx_trace_object_unregister.c 643 644 Files are modified to fix IPv6 router type: 645 nx_api.h 646 nx_icmpv6_process_ra.c 647 nx_icmpv6_process_redirect.c 648 nx_ip.h 649 nxd_ipv6_default_router_add.c 650 nxd_ipv6_default_router_entry_get.c 651 652 Files are added or modified to avoid recursive call: 653 nx_icmpv6_send_ns.c 654 nx_ip_dispatch_process.c 655 nx_ipv6_header_add.c 656 nx_ipv6_packet_send.c 657 nx_ipv6_process_fragment_option.c 658 659 Files are added or modified to remove unused IP pointer parameter: 660 nx_api.h 661 nx_icmpv6.h 662 nx_icmpv6_destination_table_periodic_update.c 663 nx_ip_thread_entry.c 664 nx_nd_cache.h 665 nx_nd_cache_add_entry.c 666 nx_nd_cache_delete_internal.c 667 nx_nd_cache_fast_periodic_update.c 668 nx_nd_cache_interface_entries_delete.c 669 nxd_ipv6_disable.c 670 nxd_nd_cache_entry_delete.c 671 nxd_nd_cache_invalidate.c 672 nxd_nd_cache_invalidate_internal.c 673 674 Files are added or modified to optimized the logic for IP address conflict detection: 675 nx_api.h 676 nx_arp.h 677 nx_arp_announce_send.c 678 nx_arp_gratuitous_send.c 679 nx_arp_packet_receive.c 680 nx_arp_probe_send.c 681 682 Files are modified to pass PC-Lint check: 683 nx_api.h 684 nx_icmpv4.h 685 nx_icmpv6.h 686 nx_ip_create.c 687 nx_ipv6.h 688 nx_nd_cache.h 689 nx_nd_cache_init.c 690 691 Files are modified to support ASSERT macro: 692 nx_arp_packet_send.c 693 nx_icmpv6_dest_table_find.c 694 nx_icmpv6_send_queued_packets.c 695 nx_ip_checksum_compute.c 696 nxd_ipv6_router_lookup.c 697 nxd_tcp_client_socket_connect.c 698 699 Files are modified to optimized the logic for TCP segment processing: 700 nx_tcp_socket_packet_process.c 701 nx_tcp_socket_state_ack_check.c 702 nx_tcp_socket_state_syn_received.c 703 nx_tcp_socket_state_syn_sent.c 704 705 Files are modified to remove unreachable code and deprecated functions: 706 nx_api.h 707 nx_arp.h 708 nx_arp_entry_allocate.c 709 nx_icmp.h 710 nx_icmpv4.h 711 nx_icmpv6.h 712 nx_icmpv6_process_na.c 713 nx_icmpv6_process_ns.c 714 nx_icmpv6_process_ra.c 715 nx_icmpv6_process_redirect.c 716 nx_icmpv6_send_queued_packets.c 717 nx_igmp.h 718 nx_ipv4.h 719 nx_ipv6.h 720 nx_ipv6_fragment_process.c 721 nx_ip_interface_detach.c 722 nx_nd_cache_find_entry_by_mac_addr.c 723 nx_packet.h 724 nx_tcp.h 725 nx_tcp_client_socket_bind.c 726 nx_tcp_packet_process.c 727 nx_tcp_socket_send_internal.c 728 nx_tcp_socket_state_ack_check.c 729 nx_tcp_socket_state_data_check.c 730 nx_tcp_socket_state_fin_wait1.c 731 nx_tcp_socket_state_syn_sent.c 732 nx_udp.h 733 nx_udp_socket_bind.c 734 nxd_ipv6_address_set.c 735 nxd_ipv6_router_lookup.c 736 nxd_ipv6_raw_packet_send_internal.c 737 nxd_tcp_client_socket_connect.c 738 nxde_udp_socket_send.c 739 nxde_icmp_source_ping.c 740 741 Files are modified to optimize the logic of checksum calculation: 742 nx_icmp_interface_ping.c 743 nx_icmp_interface_ping6.c 744 nx_icmpv4_packet_process.c 745 nx_icmpv4_process_echo_request.c 746 nx_icmpv4_send_error_message.c 747 nx_icmpv6_packet_process.c 748 nx_icmpv6_process_echo_request.c 749 nx_icmpv6_process_ns.c 750 nx_icmpv6_send_error_message.c 751 nx_icmpv6_send_ns.c 752 nx_icmpv6_send_rs.c 753 nx_ip_checksum_compute.c 754 nx_ip_fragment_packet.c 755 nx_ip_header_add.c 756 nx_ipv4_packet_receive.c 757 nx_tcp_packet_process.c 758 nx_tcp_packet_send_control.c 759 nx_tcp_socket_send_internal.c 760 nx_udp_socket_receive.c 761 nxd_udp_socket_send.c 762 763 Files are modified to protect ND process in _nx_icmpv6_packet_process: 764 nx_icmpv6_process_na.c 765 nx_icmpv6_process_ns.c 766 nx_icmpv6_process_ra.c 767 nx_icmpv6_process_redirect.c 768 769 Files are modified to avoid static analysis error report: 770 nx_ipv6_fragment_process.c 771 nxd_ipv6_address_set.c 772 nxd_ipv6_default_router_entry_get.c 773 nxd_ipv6_interface_find.c 774 775 776 Other modified files: 777 nx_api.h Listed APIs by alphabetical order. 778 Added return status NX_CONTINUE. 779 Fixed typo of deprecated symbols. 780 nx_arp_entry_allocate.c Fixed a bug that is_static of arp entry was not set. 781 nx_arp_periodic_update.c Checked ARP expiration when NX_ARP_EXPIRATION_RATE is not zero. 782 Optimized the logic of updating ARP list. 783 nx_arp_static_entries_delete.c Optimized the logic. 784 nx_icmp_interface_ping6.c Optimized the logic due to NX_ICMPV6_ECHO is modified. 785 nx_icmpv4_process_echo_reply.c Optimized the logic due to NX_ICMPV4_ECHO is modified. 786 nx_icmpv6_destination_table_periodic_update.c Optimized the code. 787 nx_icmpv6_process_echo_reply.c Optimized the logic due to NX_ICMPV6_ECHO is modified. 788 nx_icmpv6_process_ra.c Fixed a bug that is_router of ND entry was not set. 789 nx_icmpv6_process_redirect.c Optimized the logic. 790 The destination table is not updated when packet is invalid. 791 nx_icmpv6_send_ns.c Verified interface before is was used. 792 nx_icmpv6_send_queued_packets.c Optimized the logic for fragmentation checking. 793 nx_icmpv6_validate_neighbor_message.c Fixed type check for destination address 794 when source address is unspecified. 795 nx_igmp_multicast_interface_leave_internal Fixed the bug for adding packet debug information. 796 nx_igmp_packet_process Added support for packet chaining. 797 Compute the checksum over all IGMP data, not just the header. 798 Modified the logic for checking packet length. 799 nx_igmp_periodic_processing Fixed the bug for adding packet debug information. 800 nx_ipv4.h Avoided redundant definition of fragmentation symbols. 801 nx_ip_driver_packet_send.c Optimized the logic for fragmentation checking. 802 nx_ip_fast_periodic_timer_entry.c Set function _nx_ip_fast_periodic_timer_entry to static. 803 nx_ip_forward_packet_process.c Fixed the bug for processing fragment bit. 804 nx_ip_interface_detach.c Checked interface status before processing. 805 nx_ip_route_find.c Fixed a bug that destination address is one of 806 the local interface addresses. 807 nx_ipv4_option_process.c Optimized the code. 808 nx_ipv4_packet_receive.c Adjusted processing order to make sure interface has IP address before forwarding. 809 nx_ipv6_fragment_process.c Cleared reserved field in fragment option. 810 nx_ipv6_option_error.c Optimized the logic for default case of switch. 811 nx_ipv6_packet_send.c Optimized the logic for fragmentation checking. 812 Removed unnecessary check. 813 nx_ipv6_perform_min_path_MTU_discovery.c Moved the functionality into nx_icmpv6_destination_table_periodic_update.c 814 nx_packet_data_extract_offset.c Removed duplicated for zero packet length. 815 nx_system_initialize.c Make sure this service cannot invoked more than once. 816 Created destination table MUTEX. 817 nx_tcp.h Cleaned up the logic to get SYN packet size. 818 nx_user.h Added NX_DISABLE_ICMPV4_ERROR_MESSAGE configuration option 819 nx_tcp_packet_process.c Fixed check for multicast source address. 820 nx_tcp_socket_delete.c Fixed socket state check. 821 nx_tcp_socket_disconnect.c Optimized the logic for checking wait_option. 822 nx_tcp_socket_receive.c Suspended the send request when the connection is in progress. 823 nx_tcp_socket_retransmit.c Fixed initial CWND value for fast recovery. 824 nx_tcp_socket_send_internal.c Fixed a bug that empty segment was sent when data append failed. 825 Fixed a bug of endless loop in packet queue traverse. 826 Fixed the alignment of chained packet. 827 Suspended the send request when the connection is in progress. 828 nx_tcp_socket_state_ack_check.c Fixed the calculation of TCP payload when packet 829 was not released by driver. 830 Fixed the check for immediately retransmission. 831 nx_tcp_socket_state_data_check.c Fixed NULL pointer access. 832 nx_tcp_socket_state_syn_received.c Optimized the logic for checking acknowledgment number. 833 nxd_icmp_ping.c Removed duplicated error check. 834 nxd_icmp_source_ping.c Removed duplicated error check. 835 nxd_ipv6_disable.c Deleted ND cache added to current IP only. 836 Protected ND cache process by mutex. 837 nxd_ipv6_interface_find.c Fixed a bug that destination address is one of 838 the local IPv6 addresses. 839 nxd_tcp_client_socket_connect.c Cleaned up the logic to get SYN packet size. 840 nxde_ip_raw_packet_send.c Removed unnecessary check. The return value of 841 _nxd_ip_raw_packet_source_send is always NX_SUCCESS. 842 nxe_ip_raw_packet_source_send.c Removed unnecessary check. The return value of 843 _nx_ip_raw_packet_source_send is always NX_SUCCESS. 844 845 84602/22/2016 NetX Duo generic code version 5.9. This release includes the 847 following major features: 848 849 Files are modified to fix compiler warnings: 850 demo_netx_duo_multihome_tcp.c 851 demo_netx_duo_multihome_udp.c 852 demo_netx_duo_tcp.c 853 demo_netx_duo_udp.c 854 nx_api.h 855 nx_icmpv4_packet_process.c 856 nx_icmpv6_DAD_failure.c 857 nx_icmpv6_dest_table_add.c 858 nx_icmpv6_dest_table_find.c 859 nx_icmpv6_destination_table_periodic_update.c 860 nx_icmpv6_packet_process.c 861 nx_icmpv6_process_echo_reply.c 862 nx_icmpv6_process_echo_request.c 863 nx_icmpv6_process_na.c 864 nx_icmpv6_process_ns.c 865 nx_icmpv6_process_ra.c 866 nx_icmpv6_process_redirect.c 867 nx_icmpv6_send_error_message.c 868 nx_icmpv6_send_ns.c 869 nx_icmpv6_send_rs.c 870 nx_ip_auxiliary_packet_pool_set.c 871 nx_ip_checksum_compute.c 872 nx_ip_dispatch_process.c 873 nx_ip_driver_deferred_enable.c 874 nx_ip_driver_deferred_receive.c 875 nx_ip_driver_packet_send.c 876 nx_ip_forward_packet_process.c 877 nx_ip_fragment_assembly.c 878 nx_ip_fragment_disable.c 879 nx_ip_fragment_enable.c 880 nx_ip_interface_capability_get.c 881 nx_ip_interface_capability_set.c 882 nx_ip_max_payload_size_find.c 883 nx_ip_packet_checksum_compute.c 884 nx_ip_packet_send.c 885 nx_ip_raw_packet_filter_set.c 886 nx_ip_raw_packet_processing.c 887 nx_ip_static_route_add.c 888 nx_ip_static_route_delete.c 889 nx_ipv6_fragment_process.c 890 nx_ipv6_option_error.c 891 nx_ipv6_packet_send.c 892 nx_ipv6_process_fragment_option.c 893 nx_ipv6_process_hop_by_hop_option.c 894 nx_ipv6_process_routing_option.c 895 nx_ipv6_util.c 896 nx_nd_cache_delete_internal.c 897 nx_packet_copy.c 898 nx_packet_data_append.c 899 nx_packet_pool_low_watermark_set.c 900 nx_tcp_cleanup_deferred.c 901 nx_tcp_periodic_processing.c 902 nx_tcp_socket_disconnect_complete_notify.c 903 nx_tcp_socket_establish_notify.c 904 nx_tcp_socket_queue_depth_notify_set.c 905 nx_tcp_socket_receive_queue_max_set.c 906 nx_tcp_socket_timed_wait_callback.c 907 nx_udp_socket_receive.c 908 nxd_icmpv6_ra_flag_callback_set.c 909 nxd_ipv6_address_change_notify.c 910 nxd_ipv6_address_delete.c 911 nxd_ipv6_address_get.c 912 nxd_ipv6_address_set.c 913 nxd_ipv6_default_router_add.c 914 nxd_ipv6_default_router_delete.c 915 nxd_ipv6_default_router_entry_get.c 916 nxd_ipv6_default_router_get.c 917 nxd_ipv6_default_router_number_of_entries_get.c 918 nxd_ipv6_disable.c 919 nxd_ipv6_enable.c 920 nxd_ipv6_multicast_interface_join.c 921 nxd_ipv6_multicast_interface_leave.c 922 nxd_ipv6_stateless_address_autoconfig_disable.c 923 nxd_ipv6_stateless_address_autoconfig_enable.c 924 nxd_nd_cache_entry_delete.c 925 nxd_nd_cache_entry_set.c 926 nxd_nd_cache_hardware_address_find.c 927 nxd_nd_cache_invalidate.c 928 nxd_nd_cache_invalidate_internal.c 929 nxd_nd_cache_ip_address_find.c 930 nxd_udp_socket_send.c 931 nxde_icmpv6_ra_flag_callback_set.c 932 nxde_ipv6_address_change_notify.c 933 nxde_ipv6_address_delete.c 934 nxde_ipv6_address_get.c 935 nxde_ipv6_address_set.c 936 nxde_ipv6_default_router_add.c 937 nxde_ipv6_default_router_delete.c 938 nxde_ipv6_default_router_entry_get.c 939 nxde_ipv6_default_router_get.c 940 nxde_ipv6_default_router_number_of_entries_get.c 941 nxde_ipv6_disable.c 942 nxde_ipv6_enable.c 943 nxde_ipv6_multicast_interface_join.c 944 nxde_ipv6_multicast_interface_leave.c 945 nxde_ipv6_stateless_address_autoconfig_disable.c 946 nxde_ipv6_stateless_address_autoconfig_enable.c 947 nxde_nd_cache_entry_delete.c 948 nxde_nd_cache_entry_set.c 949 nxde_nd_cache_hardware_address_find.c 950 nxde_nd_cache_invalidate.c 951 nxde_nd_cache_ip_address_find.c 952 nxe_ip_auxiliary_packet_pool_set.c 953 nxe_ip_interface_capability_get.c 954 nxe_ip_interface_capability_set.c 955 nxe_ip_raw_packet_filter_set.c 956 nxe_ip_static_route_add.c 957 nxe_ip_static_route_delete.c 958 nxe_packet_pool_low_watermark_set.c 959 nxe_tcp_socket_disconnect_complete_notify.c 960 nxe_tcp_socket_establish_notify.c 961 nxe_tcp_socket_queue_depth_notify_set.c 962 nxe_tcp_socket_receive_queue_max_set.c 963 nxe_tcp_socket_timed_wait_callback.c 964 965 Files are modified to return NX_NOT_SUPPORTED when related compiler option is not enabled: 966 nx_api.h 967 nx_icmp.h 968 nx_icmpv6.h 969 nx_ipv6.h 970 nx_nd_cache.h 971 nx_packet.h 972 nx_tcp.h 973 nx_tcp_socket_disconnect_complete_notify.c 974 nx_tcp_socket_establish_notify.c 975 nx_tcp_socket_queue_depth_notify_set.c 976 nx_tcp_socket_timed_wait_callback.c 977 nxd_icmpv6_ra_flag_callback_set.c 978 nxd_ipv6_address_change_notify.c 979 nxd_ipv6_address_delete.c 980 nxd_ipv6_address_get.c 981 nxd_ipv6_address_set.c 982 nxd_ipv6_default_router_add.c 983 nxd_ipv6_default_router_delete.c 984 nxd_ipv6_default_router_entry_get.c 985 nxd_ipv6_default_router_get.c 986 nxd_ipv6_default_router_number_of_entries_get.c 987 nxd_ipv6_multicast_interface_join.c 988 nxd_ipv6_multicast_interface_leave.c 989 nxd_ipv6_stateless_address_autoconfig_disable.c 990 nxd_ipv6_stateless_address_autoconfig_enable.c 991 nxd_nd_cache_entry_delete.c 992 nxd_nd_cache_entry_set.c 993 nxd_nd_cache_hardware_address_find.c 994 nxd_nd_cache_invalidate.c 995 nxd_nd_cache_ip_address_find.c 996 nxde_icmpv6_ra_flag_callback_set.c 997 nxde_ipv6_address_delete.c 998 nxde_ipv6_address_get.c 999 nxde_ipv6_address_set.c 1000 nxde_ipv6_default_router_add.c 1001 nxde_ipv6_default_router_delete.c 1002 nxde_ipv6_default_router_entry_get.c 1003 nxde_ipv6_default_router_get.c 1004 nxde_ipv6_default_router_number_of_entries_get.c 1005 nxde_ipv6_stateless_address_autoconfig_disable.c 1006 nxde_ipv6_stateless_address_autoconfig_enable.c 1007 nxde_nd_cache_entry_delete.c 1008 nxde_nd_cache_entry_set.c 1009 nxde_nd_cache_hardware_address_find.c 1010 nxde_nd_cache_invalidate.c 1011 nxde_nd_cache_ip_address_find.c 1012 nxe_ip_auxiliary_packet_pool_set.c 1013 nxe_tcp_socket_disconnect_complete_notify.c 1014 nxe_tcp_socket_establish_notify.c 1015 nxe_tcp_socket_queue_depth_notify_set.c 1016 nxe_tcp_socket_timed_wait_callback.c 1017 1018 Files are modified to fix address index check for loopback interface: 1019 nxde_icmp_source_ping.c 1020 nxde_ip_raw_packet_source_send.c 1021 nxde_udp_socket_source_send.c 1022 nxe_ip_raw_packet_source_send.c 1023 nxe_udp_socket_source_send.c 1024 1025 Files are modified to support IP packet filter: 1026 nx_api.h 1027 nx_ip_packet_receive.c 1028 nx_ip_packet_send.c 1029 nx_ipv6_packet_send.c 1030 1031 Files are added or modified to set TCP receive queue length: 1032 nx_api.h 1033 nx_tcp.h 1034 nx_tcp_socket_create.c 1035 nx_tcp_socket_receive_queue_max_set.c 1036 nx_tcp_socket_state_data_check.c 1037 nx_user.h 1038 nxe_tcp_socket_receive_queue_max_set.c 1039 1040 Files are added or modified to support packet pool low watermark: 1041 nx_api.h 1042 nx_packet.h 1043 nx_packet_pool_low_watermark_set.c 1044 nx_tcp_socket_state_data_check.c 1045 nx_udp_packet_receive.c 1046 nx_user.h 1047 nxe_packet_pool_low_watermark_set.c 1048 nxe_tcp_socket_receive_queue_max_set.c 1049 1050 Files are modified to add mutex protection: 1051 nx_rarp_disable.c 1052 nx_tcp_socket_queue_depth_notify_set.c 1053 nx_tcp_socket_receive_notify.c 1054 nx_tcp_socket_timed_wait_callback.c 1055 nx_tcp_socket_window_update_notify_set.c 1056 1057 Files are added or modified to fix source selection for icmpv4 ping: 1058 nx_icmpv4.h 1059 nx_icmp_interface_ping.c 1060 nx_icmp_ping.c 1061 nxd_icmp_source_ping.c 1062 1063 Files are modified to support ASSERT macro: 1064 nx_api.h 1065 nx_icmpv6_dest_table_add.c 1066 nx_ip_header_add.c 1067 nx_ip_driver_packet_send.c 1068 nx_ipv6_packet_send.c 1069 nxd_ipv6_destination_table_find_next_hop.c 1070 nxd_ipv6_interface_find.c 1071 1072 Files are added or modified to support NewReno algorithm: 1073 nx_api.h 1074 nx_tcp.h 1075 nx_tcp_socket_retransmit.c 1076 nx_tcp_fast_periodic_processing.c 1077 nx_tcp_packet_send_syn.c 1078 nx_tcp_socket_block_cleanup.c 1079 nx_tcp_socket_state_ack_check.c 1080 nx_tcp_socket_send_internal.c 1081 nx_tcp_socket_state_transmit_check.c 1082 nx_tcp_socket_state_syn_sent.c 1083 nx_tcp_socket_state_syn_received.c 1084 1085 Files are added or modified to optimize the logic of sending TCP control packet: 1086 nx_tcp_packet_send_control.c 1087 nx_tcp_packet_send_syn.c 1088 nx_tcp_packet_send_ack.c 1089 nx_tcp_packet_send_fin.c 1090 nx_tcp_packet_send_rst.c 1091 1092 Files are deleted due to they are not used: 1093 nxe_igmp_multicast_interface_join_internal.c 1094 nxe_igmp_multicast_interface_leave_internal.c 1095 1096 Files are modified to unify the definition of ThreadX ticks per second, use TX_TIMER_TICKS_PER_SECOND to derive NX_IP_PERIODIC_RATE: 1097 demo_netx_duo_multihome_tcp.c 1098 demo_netx_duo_multihome_udp.c 1099 demo_netx_duo_tcp.c 1100 demo_netx_duo_udp.c 1101 nx_api.h 1102 nx_icmpv6_dest_table_add.c 1103 nx_icmpv6_dest_table_find.c 1104 nx_icmpv6_process_ra.c 1105 nx_icmpv6_process_redirect.c 1106 nx_icmpv6_validate_ra.c 1107 nx_ip_create.c 1108 nx_ip_fast_periodic_timer_entry.c 1109 nx_system.h 1110 nx_system_initialize.c 1111 nx_tcp.h 1112 nx_tcp_enable.c 1113 nx_user.h 1114 nxd_ipv6_disable.c 1115 nxd_ipv6_enable.c 1116 1117 Files are deleted or modified to simplified the logic of extracting the prefix: 1118 nx_ipv6_address_find_prefix.c 1119 nx_ipv6.h 1120 nx_ipv6_prefix_list_delete_entry.c 1121 1122 Files are modified to correct the IP Identification field for retransmitted packet: 1123 nx_api.h 1124 nx_ip_header_add.c 1125 nx_packet_allocate.c 1126 nx_packet_release.c 1127 nx_tcp_socket_retransmit.c 1128 1129 Files are added or modified to fix zero window probe packet: 1130 nx_api.h 1131 nx_tcp.h 1132 nx_tcp_fast_periodic_processing.c 1133 nx_tcp_packet_send_probe.c 1134 nx_tcp_socket_send_internal.c 1135 nx_tcp_socket_state_ack_check.c 1136 1137 Files are modified to correct the sequence and ACK number check for TCP disconnect process: 1138 nx_api.h 1139 nx_tcp.h 1140 nx_tcp_server_socket_accept.c 1141 nx_tcp_socket_packet_process.c 1142 nx_tcp_socket_state_ack_check.c 1143 nx_tcp_socket_state_fin_wait1.c 1144 nx_tcp_socket_state_fin_wait2.c 1145 nx_tcp_client_socket_connect.c 1146 1147 Files are modified to pass PC-Lint check: 1148 nx_icmp.h 1149 nx_icmpv6.h 1150 nx_ip.h 1151 nx_ipv4.h 1152 nx_ipv6.h 1153 nx_ipv6_prefix_list_delete.c 1154 nx_nd_cache.h 1155 nx_udp.h 1156 nxd_icmp_ping.c 1157 nxd_icmp_source_ping.c 1158 nxd_icmpv6_ra_flag_callback_set.c 1159 nxd_ip_raw_packet_send.c 1160 nxd_ipv6_address_change_notify.c 1161 nxd_ipv6_address_set.c 1162 nxd_ipv6_default_router_add_internal.c 1163 nxd_ipv6_destination_table_find_next_hop.c 1164 nxd_ipv6_disable.c 1165 nxd_ipv6_enable.c 1166 nxd_ipv6_find_default_router_from_address.c 1167 nxd_ipv6_find_max_prefix_length.c 1168 nxd_ipv6_interface_find.c 1169 nxd_ipv6_raw_packet_send_internal.c 1170 nxd_ipv6_router_lookup.c 1171 nxd_ipv6_search_onlink.c 1172 nxd_ipv6_stateless_address_autoconfig_enable.c 1173 nxd_nd_cache_entry_set.c 1174 nxd_nd_cache_hardware_address_find.c 1175 nxde_icmp_ping.c 1176 nxde_icmp_source_ping.c 1177 nxde_ip_raw_packet_send.c 1178 nxde_ip_raw_packet_source_send.c 1179 nxde_ipv6_address_delete.c 1180 nxde_ipv6_default_router_delete.c 1181 nxde_ipv6_multicast_interface_join.c 1182 nxde_ipv6_multicast_interface_delete.c 1183 nxde_nd_cache_entry_set.c 1184 nxde_udp_socket_send.c 1185 1186 1187 Files are modified to remove deprecated macro for IPv6 path MTU: 1188 nx_icmpv6.h 1189 nx_user.h 1190 1191 1192 Files are added or modified to support packet debug feature: 1193 nx_api.h 1194 nx_arp_gratuitous_send.c 1195 nx_arp_packet_deferred_receive.c 1196 nx_arp_packet_send.c 1197 nx_icmp_interface_ping6.c 1198 nx_icmp_packet_process.c 1199 nx_icmp_packet_receive.c 1200 nx_icmp_ping.c 1201 nx_icmpv4_packet_process.c 1202 nx_icmpv6_packet_process.c 1203 nx_icmpv6_process_echo_reply.c 1204 nx_icmpv6_process_echo_request.c 1205 nx_icmpv6_process_na.c 1206 nx_icmpv6_process_packet_too_big.c 1207 nx_icmpv6_process_ra.c 1208 nx_icmpv6_process_redirect.c 1209 nx_icmpv6_send_error_message.c 1210 nx_icmpv6_send_ns.c 1211 nx_icmpv6_send_rs.c 1212 nx_igmp_multicast_interface_leave_internal.c 1213 nx_igmp_packet_process.c 1214 nx_igmp_packet_receive.c 1215 nx_igmp_periodic_processing.c 1216 nx_ip_dispatch_process.c 1217 nx_ip_driver_packet_send.c 1218 nx_ip_fragment_forward_packet.c 1219 nx_ip_fragment_packet.c 1220 nx_ip_packet_deferred_receive.c 1221 nx_ip_packet_receive.c 1222 nx_ip_packet_send.c 1223 nx_ip_raw_packet_processing.c 1224 nx_ip_raw_packet_send.c 1225 nx_ip_raw_packet_source_send.c 1226 nx_ip_thread_entry.c 1227 nx_ipv4_packet_receive.c 1228 nx_ipv6_fragment_process.c 1229 nx_ipv6_packet_receive.c 1230 nx_ipv6_process_fragment_option.c 1231 nx_ipv6_process_hop_by_hop_option.c 1232 nx_ipv6_process_routing_option.c 1233 nx_packet.h 1234 nx_packet_allocate.c 1235 nx_packet_copy.c 1236 nx_packet_data_append.c 1237 nx_packet_debug_info_get.c 1238 nx_packet_pool_create.c 1239 nx_packet_release.c 1240 nx_packet_transmit_release.c 1241 nx_rarp_packet_deferred_receive.c 1242 nx_rarp_packet_send.c 1243 nx_tcp_packet_process.c 1244 nx_tcp_packet_receive.c 1245 nx_tcp_queue_process.c 1246 nx_tcp_socket_packet_process.c 1247 nx_tcp_socket_send.c 1248 nx_tcp_socket_send_internal.c 1249 nx_udp_packet_receive.c 1250 nx_user.h 1251 nxd_ip_raw_packet_source_send.c 1252 nxd_udp_socket_send.c 1253 1254 1255 Files are modified to support packet alignment for both header and payload: 1256 nx_api.h 1257 nx_packet_pool_create.c 1258 nxe_packet_pool_create.c 1259 nx_user.h 1260 1261 Files are added or modified to ensure only one ARP entry point to specific address and optimized the ARP queued packet sending: 1262 nx_api.h 1263 nx_arp.h 1264 nx_arp_queue_send.c 1265 nx_arp_dynamic_entry_set.c 1266 nx_arp_entry_allocate.c 1267 nx_arp_static_entry_create.c 1268 nx_arp_static_entry_delete_internal.c 1269 nx_arp_packet_receive.c 1270 nx_ip_driver_packet_send.c 1271 1272 Files are modified to send TCP reset message when receive an illegal TCP option: 1273 nx_tcp.h 1274 nx_tcp_packet_process.c 1275 nx_tcp_server_socket_relisten.c 1276 nx_tcp_mss_option_get.c 1277 nx_tcp_window_scaling_option_get.c 1278 nx_tcp_no_connection_reset.c 1279 1280 Files are modified to support for TCP TIMED WAIT state: 1281 nx_tcp.h 1282 nx_tcp_enable.c 1283 nxd_tcp_client_socket_connect.c 1284 nx_tcp_fast_periodic_processing.c 1285 nx_tcp_socket_state_fin_wait1.c 1286 nx_tcp_socket_state_fin_wait2.c 1287 nx_tcp_socket_state_closing.c 1288 nx_tcp_socket_packet_process.c 1289 1290 Files are modified to optimize the code for deleting transmission control block 1291 nx_tcp.h 1292 nx_tcp_fast_periodic_processing.c 1293 nx_tcp_client_socket_unbind.c 1294 nx_tcp_socket_block_cleanup.c 1295 nx_tcp_socket_connection_reset.c 1296 nx_tcp_socket_disconnection.c 1297 nx_tcp_socket_state_last_ack.c 1298 1299 Files are added or modified to support ICMPv4 error message: 1300 nx_icmpv4.h 1301 nx_icmpv4_packet_process.c 1302 nx_icmpv4_process_echo_reply.c 1303 nx_icmpv4_process_echo_request.c 1304 nx_icmpv4_send_error_message.c 1305 nx_ip_dispatch_process.c 1306 nx_ip_fragment_timeout_check.c 1307 nx_udp_packet_receive.c 1308 1309 Files are added or modified to support IP Option processing: 1310 nx_ipv4.h 1311 nx_ipv4_packet_receive.c 1312 nx_ipv4_option_process.c 1313 1314 Files are modified to correct the reassembly time: 1315 nx_api.h 1316 nx_user.h 1317 nx_ip_fragment_assembly.c 1318 1319 Files are modified to optimize the code. 1320 nx_ip_gateway_address_set.c 1321 nx_ipv4.h 1322 nx_nd_cache_add.c 1323 nx_nd_cache_add_entry.c 1324 nx_nd_cache_find_entry.c 1325 nx_tcp_client_bind_cleanup.c 1326 nx_tcp_connect_cleanup.c 1327 nx_tcp_disconnect_cleanup.c 1328 nx_tcp_receive_cleanup.c 1329 nx_tcp_transmit_cleanup.c 1330 nxd_ipv6_stateless_address_autoconfig_disable.c 1331 nxd_ipv6_stateless_address_autoconfig_enable.c 1332 nxd_nd_cache_ip_address_find.c 1333 nxd_nd_cache_hardware_address_find.c 1334 nxde_ipv6_stateless_address_autoconfig_disable.c 1335 nxde_ipv6_stateless_address_autoconfig_enable.c 1336 nxe_ip_gateway_address_set.c 1337 nxe_ip_raw_packet_receive.c 1338 nxe_ip_static_route_add.c 1339 1340 Files are modified to assembled all the fragments before calling NAT service: 1341 nx_api.h 1342 nx_ip_fragment_assembly.c 1343 nx_ipv4_packet_receive.c 1344 1345 The following table contains mappings from legacy names to the new names developers 1346 are encouraged to use for furture development work. For backward compatibility reasons, 1347 legacy names are still maintained. Therefore existing projects and build systems are not 1348 affected. 1349 1350 1351 Legacy Names New Names 1352 1353 NX_ARP_DISABLE_AUTO_ARP_ENTRY NX_DISABLE_ARP_AUTO_ENTRY 1354 NX_DISABLE_ICMPv4_RX_CHECKSUM NX_DISABLE_ICMPV4_RX_CHECKSUM 1355 NX_DISABLE_ICMPv4_TX_CHECKSUM NX_DISABLE_ICMPV4_TX_CHECKSUM 1356 NX_DISABLE_ICMPv6_RX_CHECKSUM NX_DISABLE_ICMPV6_RX_CHECKSUM 1357 NX_DISABLE_ICMPv6_TX_CHECKSUM NX_DISABLE_ICMPV6_TX_CHECKSUM 1358 NX_DUAL_PACKET_POOL_ENABLE NX_ENABLE_DUAL_PACKET_POOL 1359 NX_IPV6_ADDRESS_CHANGE_NOTIFY_ENABLE NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY 1360 NX_IPV6_DISABLE_PURGE_UNUSED_CACHE_ENTRIES NX_DISABLE_IPV6_PURGE_UNUSED_CACHE_ENTRIES 1361 NX_IPV6_MULTICAST_ENABLE NX_ENABLE_IPV6_MULTICAST 1362 NX_TCP_ENABLE_KEEPALIVE NX_ENABLE_TCP_KEEPALIVE 1363 NX_TCP_ENABLE_MSS_CHECK NX_ENABLE_TCP_MSS_CHECK 1364 NX_TCP_ENABLE_WINDOW_SCALING NX_ENABLE_TCP_WINDOW_SCALING 1365 NX_TCP_QUEUE_DEPTH_UPDATE_NOTIFY_ENABLE NX_ENABLE_TCP_QUEUE_DEPTH_UPDATE_NOTIFY 1366 NXDUO_DESTINATION_TABLE_SIZE NX_IPV6_DESTINATION_TABLE_SIZE 1367 NXDUO_DISABLE_ICMPV6_ERROR_MESSAGE NX_DISABLE_ICMPV6_ERROR_MESSAGE 1368 NXDUO_DISABLE_ICMPV6_REDIRECT_PROCESS NX_DISABLE_ICMPV6_REDIRECT_PROCESS 1369 NXDUO_DISABLE_ICMPV6_ROUTER_ADVERTISEMENT_PROCESS NX_DISABLE_ICMPV6_ROUTER_ADVERTISEMENT_PROCESS 1370 NXDUO_DISABLE_ICMPV6_ROUTER_SOLICITATION NX_DISABLE_ICMPV6_ROUTER_SOLICITATION 1371 NXDUO_DISABLE_DAD NX_DISABLE_IPV6_DAD 1372 NXDUO_DUP_ADDR_DETECT_TRANSMITS NX_IPV6_DAD_TRANSMITS 1373 NXDUO_ICMPV6_MAX_RTR_SOLICITATIONS NX_ICMPV6_MAX_RTR_SOLICITATIONS 1374 NXDUO_ICMPV6_RTR_SOLICITATION_INTERVAL NX_ICMPV6_RTR_SOLICITATION_INTERVAL 1375 NX_CRYPTO_MAX_IV_SIZE_IN_BITS (Moved into IPsec module) 1376 1377 Files are modified to rename symbols: 1378 1379 nx_api.h 1380 nx_arp_gratuitous_send.c 1381 nx_arp_packet_receive.c 1382 nx_arp_packet_send.c 1383 nx_icmp_interface_ping6.c 1384 nx_icmp_interface_ping.c 1385 nx_icmpv4_packet_process.c 1386 nx_icmpv4_process_echo_request.c 1387 nx_icmpv4_send_error_message.c 1388 nx_icmpv6_DAD_failure.c 1389 nx_icmpv6_destination_table_periodic_update.c 1390 nx_icmpv6_dest_table_add.c 1391 nx_icmpv6_dest_table_find.c 1392 nx_icmpv6.h 1393 nx_icmpv6_packet_process.c 1394 nx_icmpv6_perform_DAD.c 1395 nx_icmpv6_process_echo_request.c 1396 nx_icmpv6_process_na.c 1397 nx_icmpv6_process_ns.c 1398 nx_icmpv6_process_ra.c 1399 nx_icmpv6_process_redirect.c 1400 nx_icmpv6_send_error_message.c 1401 nx_icmpv6_send_ns.c 1402 nx_icmpv6_send_rs.c 1403 nx_icmpv6_validate_ra.c 1404 nx_igmp_multicast_interface_leave_internal.c 1405 nx_igmp_periodic_processing.c 1406 nx_invalidate_destination_entry.c 1407 nx_ip_auxiliary_packet_pool_set.c 1408 nx_ip_create.c 1409 nx_ip_dispatch_process.c 1410 nx_ip_fragment_timeout_check.c 1411 nx_ip_interface_attach.c 1412 nx_ip_interface_detach.c 1413 nx_ip_packet_receive.c 1414 nx_ip_packet_send.c 1415 nx_ip_thread_entry.c 1416 nx_ipv6_option_error.c 1417 nx_ipv6_packet_receive.c 1418 nx_ipv6_packet_send.c 1419 nx_ipv6_prefix_list_delete_entry.c 1420 nx_ipv6_process_fragment_option.c 1421 nx_ipv6_process_routing_option.c 1422 nx_mld.h 1423 nx_nd_cache_add_entry.c 1424 nx_nd_cache_delete_internal.c 1425 nx_packet.h 1426 nx_packet_pool_low_watermark_set.c 1427 nx_rarp_packet_send.c 1428 nx_system.h 1429 nx_system_initialize.c 1430 nx_tcp.h 1431 nx_tcp_packet_process.c 1432 nx_tcp_packet_send_control.c 1433 nx_tcp_packet_send_syn.c 1434 nx_tcp_periodic_processing.c 1435 nx_tcp_server_socket_relisten.c 1436 nx_tcp_socket_create.c 1437 nx_tcp_socket_disconnect.c 1438 nx_tcp_socket_queue_depth_notify_set.c 1439 nx_tcp_socket_receive_queue_max_set.c 1440 nx_tcp_socket_retransmit.c 1441 nx_tcp_socket_send_internal.c 1442 nx_tcp_socket_state_ack_check.c 1443 nx_tcp_socket_state_data_check.c 1444 nx_tcp_socket_state_established.c 1445 nx_tcp_socket_state_syn_received.c 1446 nx_tcp_socket_state_syn_sent.c 1447 nx_tcp_window_scaling_option_get.c 1448 nx_udp_packet_receive.c 1449 nx_user.h 1450 nxde_ipv6_address_change_notify.c 1451 nxde_ipv6_multicast_interface_join.c 1452 nxde_ipv6_multicast_interface_leave.c 1453 nxd_icmp_enable.c 1454 nxd_ipv6_address_change_notify.c 1455 nxd_ipv6_address_delete.c 1456 nxd_ipv6_address_set.c 1457 nxd_ipv6_destination_table_find_next_hop.c 1458 nxd_ipv6_disable.c 1459 nxd_ipv6_enable.c 1460 nxd_ipv6_interface_find.c 1461 nxd_ipv6_multicast_interface_join.c 1462 nxd_ipv6_multicast_interface_leave.c 1463 nxd_ipv6_prefix_router_timer_tick.c 1464 nxd_ipv6_router_solicitation_check.c 1465 nxe_packet_pool_low_watermark_set.c 1466 nxe_tcp_socket_create.c 1467 nxe_tcp_socket_queue_depth_notify_set.c 1468 nxe_tcp_socket_receive_queue_max_set.c 1469 1470 1471 1472 Other modified files: 1473 nx_api.h Removed internal functions. 1474 Fixed typo for API names of stateless address control. 1475 Added a macro to disable warning of parameter not used. 1476 nx_icmp_ping.h Optimized the data offset of request packet. 1477 nx_icmp_interface_ping6.c Removed limitation of message size when sending echo request. 1478 nx_icmpv6.h Updated the function name. 1479 Removed unused argument of _nxd_ipv6_destination_table_find_next_hop. 1480 nx_icmpv6_dest_table_add.c Fixed a bug when destination table was full, index of 1481 array was out of bound. 1482 nx_icmpv6_perform_DAD.c Updated the function name. 1483 nx_icmpv6_DAD_clear_NDCache_entry.c Updated the function name and optimized the code. 1484 nx_icmpv6_DAD_failure.c Renamed the argument name to make it sense. 1485 nx_icmpv6_process_packet_too_big.c Fixed a bug that packet was not released. 1486 nx_icmpv6_process_ra.c Fixed a bug that address was formed when prefix was link local. 1487 Fixed the logic to find empty address entry. 1488 Fixed retrans timer when it is 0. 1489 nx_icmpv6_process_redirect.c Fixed return status check. Fixed endian of MTU. 1490 nx_icmpv6_send_error_message.c Used wrong IPv6 address. 1491 Fixed packet leak if IPsec SA disallows this packet. 1492 Fixed multicast destination address check. 1493 nx_icmpv6_send_queued_packets Optimized the logic for IPv6 fragment processing. 1494 nx_icmpv6_send_rs.c Removed unreachable code. 1495 nx_icmpv6_validate_neighbor_message.c Removed unused argument. 1496 nx_icmpv6_validate_ra.c Removed unused argument. 1497 nx_igmp_packet_process.c Optimized the logic of verifying checksum. 1498 nx_igmp_periodic_process.c Removed useless code. 1499 nx_ip_checksum_compute.c Fixed calculation for packet size that is only two bytes aligned. 1500 nx_ip_create.c Removed the status check for TX API since internal call should be succeed. 1501 nx_ip_deferred_link_status_process.c Removed cleanup logic when link was down. 1502 nx_ip_delete.c Invalidated dynamic ARP entries and ND cache, 1503 in case packets were queued. 1504 nx_ip_dispatch_process.c Corrected length check for extension header. 1505 Removed unreachable code. 1506 nx_ip_driver_packet_send.c Added support for IPv4 link-local address 1507 Optimized the logic for packet sending. 1508 Added fragmentation check. 1509 nx_ip_header_add.c Stored IP header for outgoing packet. 1510 nx_ip_fragment_assembly.c Used the more recently arrived copy if fragments contain the same data. 1511 Corrected the logic to find insert position for IPv6 fragments. 1512 nx_ip_fragment_disable.c Removed unreachable code when NX_FRAGMENT_IMMEDIATE_ASSEMBLY is defined. 1513 nx_ip_fragment_packet.c Removed unreachable code. 1514 nx_ip_fragment_forward_packet.c Removed unreachable code. 1515 nx_ip_forward_packet_process.c Added checks for link local address before forwarding. 1516 nx_ip_interface_attach.c Fixed duplicate empty address. 1517 nx_ip_interface_detach.c Simplified the logic to leave multicast group. 1518 nx_ip_interface_status_check.c Checked driver code for NX_IP_LINK_ENABLED status. 1519 Fixed the bug for wait_option. 1520 nx_ip_packet_checksum_compute.c Removed code not used. Fixed offset when IPv4 header contained options. 1521 Removed flag after IPv4 checksum calculated. 1522 Fixed length calculation of IPv4 header. 1523 nx_ip_packet_send.c Removed unreachable lines. 1524 Initialized status value. 1525 nx_ip_raw_packet_send.c Removed duplicate check for raw service enabled. 1526 nx_ip_raw_packet_source_send.c Removed duplicate check for raw service enabled. 1527 Optimized the code. 1528 nx_ip_route_find.c Optimized search operation for loopback address. 1529 Fixed a bug that loopback interface was used by multicast or broadcase address. 1530 Added support for link-local address. 1531 Verified whther or not routing address was reachable. 1532 nx_ip_static_route_add.c Fixed a bug that mutex is not released before return. 1533 nx_ip_status_check.c Removed duplicated code. 1534 nx_ip_thread_entry.c Ensured the pointer function is valid before use. 1535 nx_ipv4_packet_receive.c Fixed a bug in source check when address mapping is not needed. 1536 nx_ipv6_fragment_process.c Fixed offset of fragment packets. 1537 nx_ipv6_multicast_leave.c Removed unreachable code. 1538 nx_ipv6_multicast_join.c Removed unreachable code. 1539 nx_ipv6_option_error.c Removed duplicated check for function pointer. 1540 nx_ipv6_packet_copy.c Fixed a bug that four extra bytes were incorrectly copied. 1541 nx_ipv6_packet_send.c Removed fragment check when IPsec is disabled for PMTU, stored IP header for outgoing packet. 1542 nx_ipv6_prefix_list_add_entry.c Fixed a bug that prefix was not sorted. 1543 Removed unused argument. 1544 nx_ipv6_prefix_list_delete_entry.c Optimized the logic to find address. 1545 nx_ipv6_process_hop_by_hop_option.c Eliminated unreachable code. 1546 nx_ipv6_util.c Removed unnecessary NULL check in IPv6_Address_Type. 1547 nx_mld.h Cleaned up this file. 1548 nx_packet_allocate.c Moved packet type check from _nxe_packet_allocate since 1549 it is necessary when _nx_packet_allocate is called 1550 by internal functions. 1551 nx_packet_copy.c Copied the data of the first packet beginning at data starting position. 1552 Fixed the bug for ip header pointer set. 1553 nx_packet_pool_create.c Removed unreachable code. 1554 nx_ram_network_driver.c Removed unused parameter in _nx_ram_network_driver_output. 1555 Supported more commands. 1556 nx_rarp_packet_receive.c Continued RARP when address mapping needed. 1557 nx_tcp.h Defined the TCP minimum acceptable MSS. 1558 Added missing TCP function declarations. 1559 nx_tcp_client_socket_unbind.c Limited the socket state to closed only. 1560 nx_tcp_fast_periodic_processing.c Modified the logic for zero window probe. 1561 Updated ACK number and window size for retransmitted packet. 1562 nx_tcp_packet_process.c Fixed invalid source address check. 1563 Improved statistics of invalid packet. 1564 Optimized the logic of processing RST packet for listen queue. 1565 nx_tcp_periodic_processing.c Updated the retries to reach the max value. 1566 nx_tcp_server_socket_accept.c Removed unreachable code. 1567 nx_tcp_server_socket_unlisten.c Reset the socket state only when it was listening. 1568 nx_tcp_socket_create.c Removed duplicated check for window size. 1569 nx_tcp_socket_send_internal.c Modified the wait time. 1570 Removed the TCP transmit suspended count limitation. 1571 Modified to release IP mutex protection before a blocking call. 1572 Replaced NX_NO_WAIT with the input wait_option in nx_packet_allocate, nx_packet_data_append. 1573 Removed duplicated error check. 1574 Optimized the logic of processing sending packet. 1575 Fixed the alignment of subsequent packet in chain. 1576 nx_tcp_socket_disconnect.c Removed check for transmit queue when connection was not established. 1577 Called the cleanup routines after completed the tcp disconnected operation. 1578 nx_tcp_socket_packet_process.c Removed the data check in CLOSE WAIT state. 1579 Checked ACK for LAST ACK and CLOSING state. 1580 Checked socket state before processing data. 1581 Fixed a bug that the receive window can not recover. 1582 nx_tcp_socket_receive.c Modified the logic for SWS avoidance algorithm. 1583 nx_tcp_socket_state_ack_check.c Corrected the processing procedure for SYN/ACK bits. 1584 Modified the logic to adjust congestion window during slow start and congestion avoidance. 1585 Fixed a bug in ACK check logic if the packet was not transmitted by driver. 1586 Stored IP header for outgoing packet. 1587 nx_tcp_socket_state_closing.c Removed sending ACK message code if ACK did not acknowledge FIN. 1588 nx_tcp_socket_state_data_check.c Fixed the ACKed packets in order. 1589 Fixed the bug for updating receive window. 1590 Trimmed the data that out of receive window. 1591 Optimized the logic when a packet with old data is received. 1592 Modified the logic for SWS avoidance algorithm. 1593 nx_tcp_socket_state_established.c Removed unused parameter. 1594 nx_tcp_socket_state_last_ack.c Removed sending ACK message code if ACK did not acknowledge FIN. 1595 nx_tcp_socket_state_syn_sent.c Fixed sequence number for simultaneous connection. 1596 Checked maximum value of window scale when it was set. 1597 nx_tcp_socket_state_syn_received.c Updated tx_window_advertised value. 1598 Checked maximum value of window scale when it was set. 1599 Removed duplicated out of window check. 1600 nx_tcp_window_scaling_option_get.c Limited the maximum value of window scale. 1601 nx_nd_cache_init.c Removed the status check for TX API since internal call should be succeed. 1602 nx_nd_cache_interface_entries_delete.c Removed duplicated deletion for destination table. 1603 nx_tcp_packet_send_rst.c Modified reset ack number, sequence number and ACK bit according to incoming packet ACK bit. 1604 nx_tcp_server_socket_relisten.c Released the protection before return. 1605 nx_udp_packet_receive.c Removed duplicated check for function pointer. 1606 nx_user.h Added ASSERT macros. Remvoed unused macros. 1607 Added macros defined in nx_api.h but not in nx_user.h. 1608 Sorted options by module. 1609 nxd_ip_raw_packet_source_send.c Removed duplicate check for raw service enabled. 1610 nxd_ipv6_address_delete.c Fixed a bug that if_index may be used before initialized. 1611 nxd_ipv6_address_set.c Fixed a bug that mutex is not released before return. 1612 Fixed link local duplicate address set. 1613 nxd_ipv6_default_router_add_internal.c Returned error status when router table was full. 1614 nxd_ipv6_default_router_delete.c Returned error status when router table was not found. 1615 nxd_ipv6_default_router_entry_get.c Optimized logic comparing the interface. 1616 nxd_ipv6_default_router_get.c Used the logic of _nxd_ipv6_default_router_entry_get. 1617 nxd_ipv6_destination_table_find_next_hop.c Removed unused argument. 1618 nxd_ipv6_disable.c Cleaned up ND_CACHE when ICMP was enabled. 1619 nxd_ipv6_enable.c Corrected retransmit timer when it is zero. 1620 nxd_ipv6_interface_find.c Used first up interface for link local multicast. 1621 Fixed null pointer access. 1622 nxd_nd_cache_entry_delete.c Removed duplicated deletion for destination table. 1623 nxd_tcp_client_socket_connect.c Fixed the bug for address version check, updated the header size. 1624 Fixed loopback destination. 1625 Fixed the bug for socket state since it is updated in connect cleanup. 1626 nxd_udp_socket_send.c Fixed statistics when IPv6 address was not valid. 1627 nxde_ip_raw_packet_source_send.c Added the check for packet pointer. 1628 nxde_ipv6_address_change_notify.c Checked calling thread. 1629 nxde_ipv6_address_set.c Filtered address that was not unicast type. 1630 nxde_udp_socket_send.c Fixed checking for header area of packet. 1631 nxde_udp_socket_source_send.c Added the check for packet pointer. 1632 nxe_arp_dynamic_entry_set.c Added the check for IP address. 1633 nxe_arp_ip_address_find.c Added the check for invalid physical address. 1634 nxe_arp_static_entry_create.c Added the check for invalid physical address. 1635 Added the check for IP address. 1636 nxe_arp_static_entry_delete.c Added the check for invalid physical address. 1637 nxe_ip_create.c Added the priority check. 1638 nxe_packet_allocate.c Moved packet type check to _nx_packet_allocate since 1639 it is necessary when _nx_packet_allocate is called 1640 by internal functions. 1641 nxe_tcp_socket_create.c Checked window size when window scale was not enabled. 1642 nxe_tcp_socket_send.c Fixed checking for header area of packet. 1643 nxe_tcp_socket_disconnect_complete_notify.c Added the check for input parameters. 1644 nxe_tcp_socket_establish_notify.c Added the check for input parameters. 1645 nxe_tcp_socket_timed_wait_callback.c Added the check for input parameters. 1646 nxe_udp_socket_send.c Fixed checking for header area of packet. 1647 nxe_udp_socket_source_send.c Fixed checking for header area of packet. 1648 1649 165001/12/2015 NetX Duo generic code version 5.8. This release includes the 1651 following major features: 1652 1653 1654 Files are modified to remove deprecated macro for IPv6 path MTU: 1655 nx_icmpv6.h 1656 nx_user.h 1657 1658 1659 Files are added or modified to support ipv4 multicast feature: 1660 nx_ipv4_multicast_interface_join.c 1661 nx_ipv4_multicast_interface_leave.c 1662 nxe_ipv4_multicast_interface_join.c 1663 nxe_ipv4_multicast_interface_leave.c 1664 1665 1666 Files are modified to fix compiler warnings: 1667 nx_arp_packet_receive.c 1668 nx_icmpv4_packet_process.c 1669 nx_icmpv6.h 1670 nx_icmpv6_dest_table_find.c 1671 nx_icmpv6_packet_process.c 1672 nx_icmpv6_process_echo_reply.c 1673 nx_icmpv6_process_echo_request.c 1674 nx_icmpv6_process_na.c 1675 nx_icmpv6_process_ns.c 1676 nx_icmpv6_process_ra.c 1677 nx_icmpv6_process_redirect.c 1678 nx_icmpv6_send_error_message.c 1679 nx_icmpv6_send_ns.c 1680 nx_icmpv6_send_queued_packets.c 1681 nx_icmpv6_send_rs.c 1682 nx_icmpv6_validate_neighbor_message.c 1683 nx_icmpv6_validate_ra.c 1684 nx_igmp_packet_process.c 1685 nx_igmp_periodic_processing.c 1686 nx_invalidate_destination_entry.c 1687 nx_ip_checksum_compute.c 1688 nx_ip_dispatch_process.c 1689 nx_ip_forward_packet_process.c 1690 nx_ip_fragment_assembly.c 1691 nx_ip_fragment_packet.c 1692 nx_ip_packet_receive.c 1693 nx_ipv4_packet_receive.c 1694 nx_ipv6_address_find_prefix.c 1695 nx_ipv6_fragment_process.c 1696 nx_ipv6_option_error.c 1697 nx_ipv6_packet_copy.c 1698 nx_ipv6_packet_receive.c 1699 nx_ipv6_packet_send.c 1700 nx_ipv6_prefix_list_add_entry.c 1701 nx_ipv6_process_fragment_option.c 1702 nx_ipv6_process_hop_by_hop_option.c 1703 nx_ipv6_process_routing_option.c 1704 nx_ipv6_util.c 1705 nx_nd_cache_add.c 1706 nx_nd_cache_add_entry.c 1707 nx_nd_cache_find_entry.c 1708 nx_packet_copy.c 1709 nx_packet_data_append.c 1710 nx_packet_data_retrieve.c 1711 nx_tcp_no_connection_reset.c 1712 nx_tcp_packet_process.c 1713 nx_tcp_packet_send_ack.c 1714 nx_tcp_packet_send_fin.c 1715 nx_tcp_packet_send_rst.c 1716 nx_tcp_packet_send_syn.c 1717 nx_tcp_socket_bytes_available.c 1718 nx_tcp_socket_mss_set.c 1719 nx_tcp_socket_send.c 1720 nx_tcp_socket_send_internal.c 1721 nx_tcp_socket_state_ack_check.c 1722 nx_tcp_socket_state_data_check.c 1723 nx_udp_packet_receive.c 1724 nx_udp_socket_receive.c 1725 nxd_ipv6_address_set.c 1726 nxd_ipv6_default_router_add_internal.c 1727 nxd_ipv6_default_router_entry_get.c 1728 nxd_ipv6_default_router_get.c 1729 nxd_ipv6_destination_table_find_next_hop.c 1730 nxd_ipv6_disable.c 1731 nxd_ipv6_interface_find.c 1732 nxd_ipv6_prefix_router_timer_tick.c 1733 nxd_ipv6_search_onlink.c 1734 nxd_nd_cache_hardware_address_find.c 1735 nxd_nd_cache_ip_address_find.c 1736 nxd_tcp_client_socket_connect.c 1737 nxd_udp_socket_send.c 1738 nxde_icmp_ping.c 1739 nxde_icmp_source_ping.c 1740 nxde_ip_raw_packet_send.c 1741 nxe_ip_create.c 1742 nxe_packet_pool_create.c 1743 nxe_tcp_socket_create.c 1744 nxe_tcp_socket_send.c 1745 nxe_udp_socket_create.c 1746 nxe_udp_socket_send.c 1747 nxe_udp_source_extract.c 1748 1749 1750 Files are modified to optimize NX_PACKET_STRUCT: 1751 nx_api.h 1752 nx_arp_dynamic_entry_set.c 1753 nx_arp_packet_receive.c 1754 nx_arp_packet_send.c 1755 nx_icmp_interface_ping6.c 1756 nx_icmp_ping.c 1757 nx_icmpv4_packet_process.c 1758 nx_icmpv6_packet_process.c 1759 nx_icmpv6_process_echo_reply.c 1760 nx_icmpv6_process_echo_request.c 1761 nx_icmpv6_process_na.c 1762 nx_icmpv6_process_ns.c 1763 nx_icmpv6_process_packet_too_big.c 1764 nx_icmpv6_process_ra.c 1765 nx_icmpv6_process_redirect.c 1766 nx_icmpv6_send_error_message.c 1767 nx_icmpv6_send_ns.c 1768 nx_icmpv6_send_queued_packets.c 1769 nx_icmpv6_send_rs.c 1770 nx_igmp_packet_process.c 1771 nx_igmp_periodic_processing.c 1772 nx_ip_dispatch_process.c 1773 nx_ip_forward_packet_process.c 1774 nx_ip_fragment_assembly.c 1775 nx_ip_fragment_disable.c 1776 nx_ip_fragment_packet.c 1777 nx_ip_fragment_timeout_check.c 1778 nx_ip_packet_receive.c 1779 nx_ip_packet_send.c 1780 nx_ip_raw_packet_send.c 1781 nx_ip_raw_packet_source_send.c 1782 nx_ipv4.h 1783 nx_ipv4_packet_receive.c 1784 nx_ipv6.h 1785 nx_ipv6_fragment_process.c 1786 nx_ipv6_packet_receive.c 1787 nx_ipv6_packet_send.c 1788 nx_packet_allocate.c 1789 nx_packet_copy.c 1790 nx_packet_data_append.c 1791 nx_packet_data_extract_offset.c 1792 nx_packet_pool_create.c 1793 nx_packet_release.c 1794 nx_packet_transmit_release.c 1795 nx_ram_network_driver.c 1796 nx_rarp_packet_receive.c 1797 nx_rarp_packet_send.c 1798 nx_tcp_fast_periodic_processing.c 1799 nx_tcp_packet_process.c 1800 nx_tcp_packet_send_ack.c 1801 nx_tcp_packet_send_fin.c 1802 nx_tcp_packet_send_rst.c 1803 nx_tcp_packet_send_syn.c 1804 nx_tcp_server_socket_relisten.c 1805 nx_tcp_socket_bytes_available.c 1806 nx_tcp_socket_receive.c 1807 nx_tcp_socket_receive_queue_flush.c 1808 nx_tcp_socket_send_internal.c 1809 nx_tcp_socket_state_ack_check.c 1810 nx_tcp_socket_state_data_check.c 1811 nx_tcp_socket_state_transmit_check.c 1812 nx_tcp_socket_transmit_queue_flush.c 1813 nx_udp_socket_receive.c 1814 nx_udp_socket_source_send.c 1815 nxd_ip_raw_packet_source_send.c 1816 nxd_ipv6_raw_packet_send_internal.c 1817 nxd_udp_packet_info_extract.c 1818 nxd_udp_socket_send.c 1819 nxd_udp_socket_source_send.c 1820 nxde_udp_packet_info_extract.c 1821 nxde_udp_socket_send.c 1822 nxe_ip_raw_packet_send.c 1823 nxe_ip_raw_packet_source_send.c 1824 nxe_tcp_socket_send.c 1825 nxe_udp_packet_info_extract.c 1826 nxe_udp_socket_send.c 1827 nxe_udp_socket_source_send.c 1828 1829 1830 Files are modified to support the dual packet pool feature: 1831 nx_api.h 1832 nx_arp_gratuitous_send.c 1833 nx_arp_packet_send.c 1834 nx_icmpv6_send_ns.c 1835 nx_icmpv6_send_rs.c 1836 nx_igmp_periodic_processing.c 1837 nx_ip_create.c 1838 nx_ip_auxiliary_packet_pool_set.c 1839 nx_rarp_packet_send.c 1840 nx_tcp_packet_send_ack.c 1841 nx_tcp_packet_send_fin.c 1842 nx_tcp_packet_send_rst.c 1843 nx_tcp_packet_send_syn.c 1844 nx_user.h 1845 nxe_ip_auxiliary_packet_pool_set.c 1846 1847 1848 Files are modified to optimize NX_UDP_SOCKET_STRUCT: 1849 nx_api.h 1850 nx_udp_socket_create.c 1851 nxd_udp_socket_send.c 1852 1853 1854 Files are added or modified to support the link status change feature: 1855 nx_api.h 1856 nx_arp_interface_entries_delete.c 1857 nx_icmpv6.h 1858 nx_ip.h 1859 nx_ip_deferred_link_status_process.c 1860 nx_ip_driver_link_status_event.c 1861 nx_ip_link_status_change_notify_set.c 1862 nx_ip_thread_entry.c 1863 nx_nd_cache_interface_entries_delete.c 1864 nxe_ip_link_status_change_notify_set.c 1865 1866 1867 Files are added or modified in order to fact out the IPv4 packet transmit process: 1868 nx_ip_driver_packet_send.c 1869 nx_ip_header_add.c 1870 nx_ip_packet_send.c 1871 1872 1873 Files are modified to consolidate IGMP-related data structure in the IP instance: 1874 nx_api.h 1875 nx_igmp_multicast_check.c 1876 nx_igmp_packet_process.c 1877 nx_igmp_periodic_processing.c 1878 nx_ip_packet_send.c 1879 1880 1881 Files are added or modified to support the simple IPv4 routing and the NAT feature: 1882 nx_api.h 1883 nx_icmpv4_packet_process.c 1884 nx_ip_forward_packet_process.c 1885 nx_ip_fragment_forward_packet.c 1886 nx_ip_packet_send.c 1887 nx_ipv4_packet_receive.c 1888 nx_tcp_free_port_find.c 1889 nx_tcp_client_socket_bind 1890 nx_tcp_no_connection_reset.c 1891 nx_tcp_packet_process.c 1892 nx_tcp_server_socket_listen 1893 nx_tcp_server_socket_relisten.c 1894 nx_udp_free_port_find.c 1895 nx_udp_socket_bind.c 1896 nx_user.h 1897 1898 1899 Files are modified to support user defined random function: 1900 nx_api.h 1901 1902 1903 Files are modified to support the router advertisement flag callback feature: 1904 nx_api.h 1905 nx_icmpv6.h 1906 nx_icmpv6_process_ra.c 1907 nxd_icmpv6_ra_flag_callback_set.c 1908 nxde_icmpv6_ra_flag_callback_set.c 1909 1910 1911 Files are modified to support the ARP conflict defend feature: 1912 nx_api.h 1913 nx_arp_packet_receive.c 1914 nx_arp_periodic_update.c 1915 nx_ip_address_set.c 1916 nx_ip_interface_address_set.c 1917 nx_user.h 1918 1919 1920 Files are added or modified to optimized the logic for ARP dynamic entry deletion: 1921 nx_arp_dynamic_entries_invalidate.c 1922 nx_arp_dynamic_entry_delete.c 1923 nx_arp_entry_allocate.c 1924 nx_arp_entry_delete.c 1925 nxe_arp_entry_delete.c 1926 nx_arp_static_entry_delete.c 1927 nx_arp_static_entry_delete_internal.c 1928 nx_ip_create.c 1929 1930 1931 Files are added or modified to support IPv4 multicast join and leave feature: 1932 nx_igmp.h 1933 nx_igmp_multicast_interface_join.c 1934 nx_igmp_multicast_interface_join_internal.c 1935 nx_igmp_multicast_interface_leave.c 1936 nx_igmp_multicast_interface_leave_internal.c 1937 nx_igmp_multicast_join.c 1938 nx_igmp_multicast_leave.c 1939 nx_igmp_packet_process.c 1940 nx_igmp_periodic_processing.c 1941 nxe_igmp_multicast_interface_join_internal.c 1942 nxe_igmp_multicast_interface_leave.c 1943 nxe_igmp_multicast_interface_leave_internal.c 1944 1945 1946 Files are modified to support the router alert feature: 1947 nx_igmp_periodic_processing.c 1948 nx_ip_fragment_packet.c 1949 nx_ip_packet_send.c 1950 nx_ipv4.h 1951 1952 1953 Other modified files: 1954 nx_api.h Added new APIs for ipv4 multicast and interface detach, added definition of reassembly 1955 added definition of reassembly time, added new service nx_ip_gateway_address_clear, 1956 removed duplicate declarations, mapped the old APIs to new APIs, fixed a bug that 1957 nx_ipv4_packet_receive is mapped to _nx_igmp_multicast_leave_internal which is nonexistent. 1958 nx_arp.h Added new APIs for ARP dynamic entry delete, static entry delete internal and interface entries 1959 delete, added ARP defend deature. 1960 nx_arp_packet_receive.c Fixed that packet is used after released, 1961 added a feature that responds to a conflict GARP packet, 1962 added an ARP man in the middle detection feature (NX_ARP_MAC_CHANGE_NOTIFICATION_ENABLE), 1963 blocked adding entries to ARP cache with zero sender IP address, 1964 prevent an ARP request matching an ARP entry sender address to change the mac address. 1965 nx_arp_static_entry_create.c Fixed a bug that interface is not initialized before used. 1966 nx_icmp_interface_ping6.c Fixed a bug for sequence when nx_ip_icmp_sequence is greater than 65535. 1967 nx_icmpv4_packet_process.c Fixed checksum zero for echo reply packet. 1968 nx_icmpv6_DAD_failure.c Fixed a bug that address was not removed from interface. 1969 nx_icmpv6_perform_DAD.c Optimized process logic. 1970 nx_icmpv6_send_error_message.c Fixed endianness of the offending packet, fixed handling multicast packet, 1971 added logic to ensure data to copy does not exceed the ICMPv6 packet boundary. 1972 nx_icmpv6_send_queued_packets.c Fixed the bug for unspecified address check. 1973 Cleaned up the nd_entry after fragment processing. 1974 nx_icmpv6_packet_process Modified the logic of checksum calculation. 1975 nx_icmpv6_dest_table_add.c Protected cache with mutex nx_nd_cache_protection. 1976 nx_icmpv6_process_redirect.c Protected cache with mutex nx_nd_cache_protection. 1977 nx_ip.h Added new service nx_ip_gateway_clear, 1978 added function to compute checksum for fragments, 1979 nx_ipv4.h Added new service nx_ip_gatewar_clear. 1980 nx_ip_create.c Supported loopback interface capability, 1981 nx_ip_checksum_compute.c Optimized the logic. 1982 fixed a bug when the priority of the calling thread is lower than IP thread. 1983 nx_ip_fragment_assembly.c Added definition of reassembly time, fixed a bug in fragment queue. 1984 nx_ip_fragment_packet.c Fixed checksum calculation when fragment is performed, 1985 copied interface from header packet, fixed size of each fragment, 1986 fixed a bug that NX_DISABLE_IP_TX_CHECKSUM option was ignored. 1987 nx_ip_fragment_timeout_check.c Fixed the endian of offset flag before sending ICMPv6 error message. 1988 Fixed a problem with reset of the tail fragment. 1989 Fixed an error for reconnecting around a dropped fragment. 1990 nx_ip_gateway_address_set.c Modified the logic to disallow a zero IP address. 1991 nx_ip_packet_receive.c Added packet drop statisics for invalid packet. 1992 nx_ip_packet_send.c Fixed destination address for non local network, 1993 fixed a bug in loopback interface processing, 1994 optimized the logic, 1995 nx_ip_route_find.c Fixed a bug in loopback interface processing, 1996 skipped interface which is down when finding route and gateway. 1997 nx_ip_raw_packet_processing.c Fixed a bug that interrupt is not restored when no thread waiting for packets. 1998 nx_ip_static_route_add.c Fixed a bug that route table may overflow, 1999 added interface record when shifting route entries, 2000 fixed a bug that unsigned number overflows. 2001 nx_ip_static_route_delete.c Added interface record when shifting route entries. 2002 nx_ip_max_payload_size_find.c Fixed a bug that src_address was set incorrectly, 2003 removed unnecessary check for NULL pointer of IPv6 address. 2004 nx_ipv4_packet_receive.c Supported processing fragmentation immediately, 2005 supported checking for source IP address. 2006 added a feature that receive unicast DHCP message. 2007 nx_ipv6_fragment_process.c Fixed checksum calculation when fragment is performed, 2008 used the same packet pool for original packet and fragmentations. 2009 Increased the IP packet and bytes sent count. 2010 nx_ipv6_packet_copy.c Fixed copy length check for destination packet. 2011 nx_ipv6_packet_send.c Fixed checksum calculation when fragment is performed, optimized the logic. 2012 nx_ipv6_prefix_list_delete_entry.c 2013 Fixed IPv6 address when leave multicast group. 2014 nx_ipv6_process_fragment_option.c Supported processing fragmentation immediately, 2015 fixed the endian of offset flag before sending ICMPv6 error message. 2016 nxd_ip_raw_packet_source_send.c Fixed source address selection for IPv6. 2017 nxd_ipv6_address_set.c Fixed duplicate address set, fixed a bug when ip_address is null. 2018 nxd_ipv6_default_router_add_internal.c 2019 Checked router address whether it is reachable. 2020 nxd_ipv6_default_router_get.c Got index from interface. 2021 nxd_ipv6_default_router_number_of_entries_get.c 2022 Got index from interface. 2023 nxd_ipv6_disable.c Supported loopback address. Fixed a compiler error. 2024 nxd_ipv6_enable.c Supported loopback address. 2025 nxd_ipv6_interface_find.c Fixed return status when there is no address in interface, 2026 supported loopback address, checked interface link status. 2027 nxd_ipv6_raw_packet_send_internal.c 2028 Fixed source address selection for IPv6. 2029 nxd_ipv6_stateless_address_autoconfig_enable.c 2030 Reset the solicitation count. 2031 nxd_ipv6_stateless_address_autoconfig_disable.c 2032 Reset the solicitation count. 2033 nxd_ipv6_multicast_interafce_leave.c 2034 Fixed the bug that return success status when find the same entry. 2035 nx_nd_cache.h Updated time of ND cache to RFC recommended values. 2036 nx_nd_cache_add.c Protected cache with mutex nx_nd_cache_protection. 2037 nx_nd_cache_find_entry.c Removed the mutex release that is not necessary. 2038 nx_nd_cache_find_entry_by_mac_addr.c 2039 Fixed a bug that check the interface pointer before use. 2040 nxd_nd_cache_entry_delete.c Fixed a bug that mutex is not released before return. 2041 nx_packet_copy.c Removed the size check to avoid failure to copy for chain packet. 2042 nx_packet_data_extract_offset.c Used memcpy to optmize data copy. 2043 nx_packet_data_retrieve.c Used memcpy to optmize data copy. 2044 nx_packet_data_append.c Fixed a bug that releases already released packet. 2045 nx_packet_pool_create.c Cleared pool structure before used. 2046 nx_tcp_mss_option_get.c Fixed endless loop when option length is not set. 2047 nx_tcp_packet_process.c Checked source address for syn packets that are queued. 2048 nx_tcp_server_socket_relisten.c Fixed a bug that syn_received_notify was not called. 2049 nx_tcp_socket_delete.c Not allowed to delete before resources are cleaned. 2050 nx_tcp_socket_packet_process.c Fixed a bug ACKs, URGs, RSTs should be processed even sequence 2051 is out of window. 2052 nx_tcp_socket_send.c: Moved process logic to internal function. 2053 nx_tcp_socket_send_internal.c Fixed a bug when socket is not connected, supported 2054 to send small segmentation when length of packet is less than window size. 2055 nx_tcp_socket_state_ack_check.c Fixed cwnd calculation. Fixed window size when ACK is duplicated. 2056 nx_tcp_socket_state_data_check.c Supported to limit the number of packets that are out of order. 2057 nx_tcp_socket_state_transmit_check.c 2058 Moved logic when window size is non zero to send internal function. 2059 nx_tcp_transmit_cleanup.c Removed adjusting sequence since packet in queue would 2060 never contain TCP header. 2061 nx_user.h Added definition for IP reassembly time, 2062 added symbol that allow IP fragment reassemble immediately, 2063 updated time of ND cache to RFC recommended values, 2064 added source address check for incoming packet, 2065 supported to limit the number of packets that are out of order. 2066 nx_udp_packet_receive.c Fixed the endian of UDP header before sending ICMPv6 error message. 2067 nx_udp_socket_delete.c Removed error checking that has been checked in nxe. 2068 nx_udp_socket_receive.c Set packet pointer to NULL if no packet was available. 2069 Removed special process of all ones checksum. 2070 nxd_udp_socket_send.c Fixed source address selection for IPv6. 2071 nxe_icmp_interface_ping6.c Checked interface validity. 2072 nxde_icmp_source_ping.c Checked interface validity. 2073 nxe_igmp_multicast_interface_join.c 2074 Fixed the bug for IP protectio operation. 2075 nxe_ip_gateway_address_set.c 2076 Added the interface status check. 2077 nxe_ip_interface_attach.c Modified invalid IP address check. 2078 nxe_ip_interface_physical_address_get.c 2079 Fixed a dead recursive call bug. 2080 nxe_ip_interface_status_check.c Added interface validation checking. 2081 nxde_ip_raw_packet_source_send.c Fixed address_index check. 2082 nxde_ipv6_stateless_address_autoconfig_enable.c 2083 Modified the comment and fixed the bug. 2084 nxde_ipv6_stateless_address_autoconfig_disable.c 2085 Modified the comment and fixed the bug. 2086 nxde_ipv6_multicast_interface_leave.c 2087 Modified the comment and fixed the bug. 2088 nxde_ipv6_multicast_interface_join.c 2089 Modified the comment and fixed the bug. 2090 nxde_ipv6_default_router_number_of_entries_get.c 2091 Modified the comment and fixed the bug. 2092 nxde_ipv6_default_router_get.c 2093 Modified the comment and fixed the bug. 2094 nxde_ipv6_default_router_entry_get.c 2095 Modified the comment and fixed the bug. 2096 nxde_ipv6_address_delete.c 2097 Modified the comment and fixed the bug. 2098 nxde_nd_cache_entry_set Added the ID check for IP instance. 2099 nxe_packet_release.c Modified the return value. 2100 nxe_packet_transmit_release.c Modified the return value. 2101 nxe_tcp_client_socket_connect.c Added server address check, 2102 nxe_tcp_socket_queue_depth_notify_set.c 2103 Added input parameters check, 2104 nxe_tcp_socket_receive_notify.c Added input parameters check, 2105 nxe_tcp_socket_transmit_configure.c 2106 Added tcp feature check, 2107 nxe_tcp_socket_window_update_notify_set.c 2108 Added input parameters check, 2109 nxe_udp_socket_source_send.c Improved the error checking logic. 2110 nx_ram_network_driver.c Received special MAC address for IPv6 multicast address, 2111 Correctly set the next IP. 2112 2113 Files added: 2114 nx_ip_gateway_address_clear.c 2115 nx_ip_interface_detach.c 2116 nx_ip_packet_checksum_compute.c 2117 nxe_ip_gateway_address_clear.c 2118 nxe_ip_interface_detach.c 2119 2120 2121 2122 2123 212401/31/2013 NetX Duo generic code version 5.7. This release includes the 2125 following major features: 2126 2127 2128 Files are modified to allow conditional compilation for IP fragmentation support: 2129 nx_arp_dynamic_entry_set.c 2130 nx_arp_packet_receive.c 2131 nx_ip_fragment_disable.c 2132 nx_ip_fragment_enable.c 2133 nx_ip_fragment_packet.c 2134 nx_ip_fragment_timeout_check.c 2135 nx_ip_info_get.c 2136 nx_ip_packet_send.c 2137 nx_ipv6_packet_send.c 2138 nx_ipv6_process_fragment_option.c 2139 2140 2141 Files are added or modified to support the interface capability feature: 2142 nx_icmp_interface_ping6.c 2143 nx_icmp_ping.c 2144 nx_icmpv4_packet_process.c 2145 nx_icmpv6_packet_process.c 2146 nx_icmpv6_process_echo_request.c 2147 nx_icmpv6_process_ns.c 2148 nx_icmpv6_send_error_message.c 2149 nx_icmpv6_send_ns.c 2150 nx_icmpv6_send_rs.c 2151 nx_igmp_multicast_leave.c 2152 nx_igmp_packet_process.c 2153 nx_igmp_periodic_processing.c 2154 nx_ip_checksum_compute.c 2155 nx_ip_interface_capability_get.c 2156 nx_ip_interface_capability_set.c 2157 nx_ip_fragment_packet.c 2158 nx_ip_packet_send.c 2159 nx_ip_thread_entry.c 2160 nx_ipv4_packet_receive.c 2161 nx_ipv6_packet_send.c 2162 nx_packet_allocate.c 2163 nx_packet_copy.c 2164 nx_packet_release.c 2165 nx_tcp_packet_process.c 2166 nx_tcp_packet_send_fin.c 2167 nx_tcp_packet_send_rst.c 2168 nx_tcp_packet_send_syn.c 2169 nx_tcp_socket_send_internal.c 2170 nx_udp_socket_receive.c 2171 nxd_udp_socket_send.c 2172 nxe_ip_interface_capability_get.c 2173 nxe_ip_interface_capability_set.c 2174 2175 2176 Files are modified to allow the chained packet feature to be removed: 2177 nx_packet_allocate.c 2178 nx_packet_copy.c 2179 nx_packet_data_append.c 2180 nx_packet_data_extract_offset.c 2181 nx_packet_data_retrieve.c 2182 nx_packet_release.c 2183 2184 2185 Files are added or modified to support the IPv6 address change notify feature: 2186 nx_icmpv6_DAD_failure.c 2187 nx_icmpv6_perform_DAD.c 2188 nx_icmpv6_process_ra.c 2189 nx_ipv6_prefix_list_delete.c 2190 nx_ipv6_prefix_list_delete_entry.c 2191 nxd_ipv6_address_change_notify.c 2192 nxd_ipv6_address_delete.c 2193 nxd_ipv6_address_set.c 2194 nxde_ipv6_address_change_notify.c 2195 2196 2197 Files are added or modified to support the IP raw filter feature and 2198 the raw receive queue depth feature: 2199 nx_ip_raw_packet_enable.c 2200 nx_ip_raw_packet_filter_set.c 2201 nx_ip_raw_packet_processing.c 2202 nx_ip_raw_receive_queue_max_set.c 2203 nxe_ip_raw_packet_filter_set.c 2204 nxe_ip_raw_receive_queue_max_set.c 2205 2206 2207 Files are modified to reset the TCP internal timer when closing a socket: 2208 nx_tcp_client_socket_unbind.c 2209 nx_tcp_server_socket_accept.c 2210 nx_tcp_server_socket_listen.c 2211 nx_tcp_server_socket_relisten.c 2212 nx_tcp_server_socket_unaccept.c 2213 nx_tcp_server_socket_unlisten.c 2214 nx_tcp_socket_state_fin_wait2.c 2215 nx_tcp_socket_state_syn_received.c 2216 2217 2218 Other modified files: 2219 nx_arp_enable.c Cleaned up redundant logic. 2220 nx_icmpv6_dest_table_add.c Protected cache with mutex nx_nd_cache_protection. 2221 nx_icmpv6_process_na.c Modified the logic to set incoming interface to be the 2222 address requested in the NA message. 2223 nx_icmpv6_process_redirect.c Protected cache with mutex nx_nd_cache_protection. 2224 nx_icmpv6_send_queued_packets.c Convert destination address to host byte order before 2225 calling nx_icmpv6_dest_table_find. 2226 nx_igmp_periodic_processing.c Fixed a bug preventing the loop from decrementing all 2227 group update times. 2228 nx_ip_create.c Initializes the device table and the address table. 2229 nx_ip_dispatch_process.c Added upper layer protocol processing for IPv4 2230 nx_ip_driver_direct_command.c Modified function name 2231 nx_ip_fragment_assembly.c Simplified the logic by calling nx_ip_dispatch_process() 2232 for processing upper layer protocols. 2233 nx_ip_fragment_packet.c Removed an extra alignment check 2234 nx_ip_max_payload_size_find.c Added a case for IPsec 2235 nx_ip_raw_packet_source_send.c Modified the constant for the raw packet type 2236 nx_ip_raw_packet_send.c Modified the constant for the raw packet type 2237 nx_ip_static_route_add.c Record the physical interface the route is attached to. 2238 nx_ipv4_packet_receive.c Simplified the logic by calling nx_ip_dispatch_process() 2239 for processing upper layer protocols. 2240 nx_ipv6_fragment_process.c Fixed a compiler warning. 2241 nx_ipv6_packet_receive.c Added IPv6 multicast support 2242 nx_ipv6_packet_send.c Fixed a bug in the logic that does the IPv6 address 2243 search, added a case where IPv6 address to MAC address 2244 mapping is not needed. 2245 nx_ipv6_prefix_list_delete.c Optimized the logic that computes the interface index. 2246 nx_ipv6_util.c Fixed the all router multicast address. 2247 nx_nd_cache_add.c Fixed compiler warnings, protected cache with mutex 2248 nx_nd_cache_protection. 2249 nx_nd_cache_find_entry.c Fixed a bug where an incorrect index value is used, 2250 removed mutex release that is not necessary. 2251 nx_tcp_fast_periodic_processing.c Fixed a bug that prevents TCP retry limit to be reached. 2252 nx_tcp_no_connection_reset.c Fixed for IPsec. 2253 nx_tcp_packet_process.c Validate MSS value, validate IP address, added internal 2254 callback function. 2255 nx_tcp_socket_disconnecte.c Corrected TCP ACK number when sending a RST. 2256 nx_tcp_socket_packet_process.c Improved the handling of validating incoming TCP 2257 segments. 2258 nx_tcp_socket_receive.c Corrected the logic checking the receive queue against 2259 the TCP socket state. 2260 nx_tcp_socket_send.c Added logic to handle error status returned from 2261 nx_tcp_socket_internal to fix a packet leak. 2262 nx_tcp_socket_state_ack_check.c Fixed a bug determining if packets can be released from 2263 the queue when the transmit window wraps, also 2264 modified the return value. 2265 nx_tcp_socket_state_data_check.c Optimized the logic for handling incoming TCP data 2266 segments. 2267 nx_tcp_socket_state_syn_received.c Updated the acknowledged receive sequence. 2268 nx_tcp_socket_state_syn_sent.c Fixed a logic for invalid ACK check. 2269 nx_udp_packet_receive.c Fixed compiler warnings. 2270 nx_udp_socket_source_send.c Removed redundant code. 2271 nxd_ip_raw_packet_sourcee_send.c Added additional parameters this service takes. 2272 nxd_ip_raw_packet_send.c Added additional parameters this service takes. 2273 nxd_ipv6_address_get.c Simplified the logic that finds the address index. 2274 nxd_ipv6_default_router_add_internal.c Fixed compiler warning. 2275 nxd_ipv6_interface_find.c Added IPv6 multicast support, added a case where the 2276 destination address is an offlink address. 2277 nxd_ipv6_router_solicitation_check.c Cleaned up a line of statement. 2278 nxd_nd_cache_entry_set.c Bug fix: Use IPv6 address index to find physical 2279 interface. 2280 nxd_udp_packet_info_extract.c Simplified the logic that finds the interface index. 2281 nxd_udp_socket_send.c Making sure the checksum is always generated for 2282 IPv6 packets. 2283 nxd_udp_socket_source_send.c Fixed the IP address detection logic. 2284 nxde_ip_raw_packet_source_send.c Added additional parameters this service takes. 2285 nxde_ip_raw_packet_send.c Added additional parameters this service takes. 2286 2287 2288 Files added: 2289 nx_ip_gateway_address_get.c 2290 nx_ip_interafce_address_mapping_configure.c 2291 nx_ip_interface_mtu_set.c 2292 nx_ip_interface_physical_address_get.c 2293 nx_ip_interface_physical_address_set.c 2294 nx_tcp_socket_queue_depth_notify_set.c 2295 nxd_ipv6_default_router_entry_get.c 2296 nxd_ipv6_default_router_number_of_entries_get.c 2297 nxd_ipv6_disable.c 2298 nxd_ipv6_multicast_interface_join.c 2299 nxd_ipv6_multicast_interafce_leave.c 2300 nxd_ipv6_stateless_address_autoconfig_disable.c 2301 nxd_ipv6_stateless_address_autoconfig_enable.c 2302 nxde_ipv6_default_router_entry_get.c 2303 nxde_ipv6_default_router_number_of_entries_get.c 2304 nxde_ipv6_disable.c 2305 nxde_ipv6_stateless_address_autoconfig_disable.c 2306 nxde_ipv6_stateless_address_autoconfig_enable.c 2307 nxde_ipv6_multicast_interface_join.c 2308 nxde_ipv6_multicast_interface_leave.c 2309 nxe_ip_gateway_address_get.c 2310 nxe_ip_interface_mtu_set.c 2311 nxe_ip_interface_physical_address_get.c 2312 nxe_ip_interface_physical_address_set.c 2313 nxe_tcp_socket_queue_depth_notify_set.c 2314 2315 Files renamed: 2316 2317 File Name in Release 5.6 File Name in Release 5.7 2318 2319 nx_ip_raw_packet_interface_send.c nx_ip_raw_packet_source_send.c 2320 nx_udp_socket_interface_send.c nx_udp_socket_source_send.c 2321 nxd_ip_raw_packet_interface_send.c nxd_ip_raw_packet_source_send.c 2322 nxd_udp_socket_interface_send.c nxd_udp_socket_source_send.c 2323 nxd_icmp_interface_ping.c nxd_icmp_source_ping.c 2324 nxe_ip_raw_packet_interface_send.c nxe_ip_raw_packet_source_send.c 2325 nxe_udp_socket_interface_send.c nxe_udp_socket_source_send.c 2326 nxde_ip_raw_packet_interface_send.c nxde_ip_raw_packet_source_send.c 2327 nxde_udp_socket_interface_send.c nxde_udp_socket_source_send.c 2328 nxde_icmp_interface_ping.c nxde_icmp_source_ping.c 2329 2330 2331 2332 2333 233410/10/2011 NetX generic code version 5.6. This release includes the following major features: 2335 2336 * IPv4 and IPv6 multihome support 2337 * TCP window scaling 2338 * Allow applications to configure TCP Keep-alive feature on a per-socket basis 2339 * Added support for TCP state change callback functions. 2340 * Allow ICMP checksum operation to be removed 2341 * Added support for IPsec 2342 2343 Files modified in order to support multihome 2344 nx_api.h 2345 nx_arp.h 2346 nx_arp_dynamic_entries_invalidate.c 2347 nx_arp_dynamic_entry_set.c 2348 nx_arp_gratuitous_send.c 2349 nx_arp_packet_receive.c 2350 nx_arp_packet_send.c 2351 nx_arp_periodic_update.c 2352 nx_arp_static_entry_create.c 2353 nx_icmp.h 2354 nx_icmp_ping.c 2355 nx_icmp_ping6.c 2356 nx_icmpv6.h 2357 nx_icmpv6_DAD_failure.c 2358 nx_icmpv6_packet_process.c 2359 nx_icmpv6_process_echo_request.c 2360 nx_icmpv6_process_na.c 2361 nx_icmpv6_process_ns.c 2362 nx_icmpv6_process_ra.c 2363 nx_icmpv6_send_error_message.c 2364 nx_icmpv6_send_ns.c 2365 nx_icmpv6_send_queued_packets.c 2366 nx_icmpv6_send_rs.c 2367 nx_icmpv5_packet_process.c 2368 nx_igmp.h 2369 nx_igmp_multicast_check.c 2370 nx_igmp_multicast_join.c 2371 nx_igmp_multicast_leave.c 2372 nx_ip.h 2373 nx_ip_create.c 2374 nx_ip_delete.c 2375 nx_ip_dispatch_process.c 2376 nx_ip_driver_direct_command.c 2377 nx_ip_fragment_packet.c 2378 nx_ip_gateway_address_set.c 2379 nx_ip_max_payload_size_find.c 2380 nx_ip_packet_receive.c 2381 nx_ip_packet_send.c 2382 nx_ip_status_check.c 2383 nx_ip_thread_entry.c 2384 nx_ip_static_route_add.c 2385 nx_ipv4.h 2386 nx_ipv4_packet_receive.c 2387 nx_ipv6.h 2388 nx_ipv6_address_find_prefix.c 2389 nx_ipv6_fragment_process.c 2390 nx_ipv6_multicast.c 2391 nx_ipv6_packet_receive.c 2392 nx_ipv6_packet_send.c 2393 nx_ipv6_prefix_list_delete_entry.c 2394 nx_nd_cache.h 2395 nx_nd_cache_add.c 2396 nx_packet_allocate.c 2397 nx_packet_copy.c 2398 nx_ram_network_driver.c 2399 nx_tcp_fast_periodic_processing.c 2400 nx_tcp_packet_process.c 2401 nx_tcp_packet_send_ack.c 2402 nx_tcp_packet_send_fin.c 2403 nx_tcp_packet_send_syn.c 2404 nx_tcp_socket_mss_set.c 2405 nx_tcp_socket_send.c 2406 nx_tcp_socket_state_transmit_check.c 2407 nx_udp.h 2408 nx_udp_socket_create.c 2409 nxd_ip_raw_packet_send.c 2410 nxd_ipv6_default_router_add.c 2411 nxd_ipv6_router_solicitation_check.c 2412 nxd_nd_cache_entry_set.c 2413 nxd_nd_cache_ip_address_find.c 2414 nxd_udp_socket_send.c 2415 nxde_ipv6_default_router_add.c 2416 nxde_nd_cache_entry_set.c 2417 nxde_nd_cache_ip_address_find.c 2418 nxe_arp_gratuitous_send.c 2419 nxe_igmp_multicast_join.c 2420 nxe_ip_gateway_address_set.c 2421 nxe_ip_status_check.c 2422 nxe_tcp_socket_send.c 2423 2424 Files changed to allow optionally exclude the ICMPv6 Error Messages feature 2425 nx_icmpv6.h 2426 nx_icmpv6_send_error_message.c 2427 nx_ip_dispatch_process.c 2428 nx_ip_fragment_assembly.c 2429 nx_ip_fragment_timeout_check.c 2430 nx_ipv6_process_fragment_option.c 2431 nx_ipv6_process_routing_option.c 2432 nx_udp_packet_receive.c 2433 nx_user.h 2434 2435 Files changed to support TCP window scaling: 2436 nx_tcp.h 2437 nx_tcp_mss_option_get.c 2438 nx_tcp_packet_process.c 2439 nx_tcp_packet_send_ack.c 2440 nx_tcp_packet_send_fin.c 2441 nx_tcp_packet_send_syn.c 2442 nx_tcp_socket_create.c 2443 nx_tcp_socket_send.c 2444 nx_tcp_socket_state_ack_check.c 2445 nx_tcp_socket_state_data_check.c 2446 nx_tcp_socket_state_syn_sent.c 2447 nx_tcp_socket_state_syn_received.c 2448 nx_user.h 2449 nxe_tcp_socket_create.c 2450 2451 2452 Files changed to support per-socket keepalive option: 2453 nx_tcp_periodic_processing.c 2454 nx_tcp_socket_create.c 2455 nx_tcp_socket_state_ack_check.c 2456 nx_tcp_socket_state_established.c 2457 nx_tcp_socket_state_syn_received.c 2458 nx_tcp_socket_state_syn_sent.c 2459 2460 Files changed to support TCP state change callback functions: 2461 nx_tcp.h 2462 nx_tcp_socket_connection_reset.c 2463 nx_tcp_socket_create.c 2464 nx_tcp_socket_state_fin_wait1.c 2465 nx_tcp_socket_state_fin_wait2.c 2466 nx_tcp_socket_state_last_ack.c 2467 nx_tcp_socket_state_syn_received.c 2468 2469 Added a check to make sure this function only operates on an entry owned by ip_ptr. 2470 nx_nd_cache_fast_periodic_update.c 2471 nx_nd_cache_find_entry_by_mac_addr.c 2472 nx_nd_cache_find_entry_and_add.c 2473 nx_nd_cache_find_entry.c 2474 nx_nd_cache_slow_periodic_update.c 2475 2476 Files changed to allow ICMP checksum operation to be removed: 2477 nx_icmp_ping.c 2478 nx_icmpv4_packet_process.c 2479 nx_icmpv6_process_echo_request.c 2480 nx_icmpv6_process_ns.c 2481 nx_icmpv6_send_error_message.c 2482 nx_icmpv6_send_ns.c 2483 nx_icmpv6_send_rs.c 2484 2485 2486 Files changed to support IPsec: 2487 nx_icmp_ping.c 2488 nx_icmpv4_packet_process.c 2489 nx_icmpv6_DAD_clear_NDCache_entry.c 2490 nx_icmpv6_DAD_failure.c 2491 nx_icmpv6_packet_process.c 2492 nx_icmpv6_perform_DAD.c 2493 nx_icmpv6_process_echo_reply.c 2494 nx_icmpv6_process_echo_request.c 2495 nx_icmpv6_process_na.c 2496 nx_icmpv6_process_ns.c 2497 nx_icmpv6_send_error_message.c 2498 nx_icmpv6_validate_neighbor_message.c 2499 nx_ip_dispatch_process.c 2500 nx_ip_max_payload_size_find.c 2501 nx_ip_packet_send.c 2502 nx_ip_thread_entry.c 2503 nx_ipv4_packet_receive.c 2504 nx_ipv6_packet_send.c 2505 nx_ipv6_perform_min_path_MTU_discovery.c 2506 nx_packet_allocate.c 2507 nx_packet_copy.c 2508 nx_tcp_no_connection_reset.c 2509 nx_tcp_packet_send_ack.c 2510 nx_tcp_packet_send_fin.c 2511 nx_tcp_packet_send_rst.c 2512 nx_tcp_packet_send_syn.c 2513 nx_tcp_socket_create.c 2514 nx_tcp_socket_send_internal.c 2515 nx_udp_packet_receive.c 2516 nxd_udp_socket_send.c 2517 nxe_ip_max_payload_size_find.c 2518 2519 Other modified files: 2520 nx_api.h Added macro NX_PACKET_HEADER_PAD_SIZE to allow an application 2521 to specify the number of ULONG words padded towards the end of the 2522 NX_PACKET structure, giving the starting address of the paylaod 2523 area to a desired alignment. 2524 nx_icmpv6_dest_table_find.c Allowed this function to update the path MTU information 2525 nx_icmpv6_destination_table_periodic_update.c 2526 Upadted the path MTU logic, optimized the search process 2527 nx_icmpv6_perform_DAD.c Added an option that allows caller to specify an IPv6 address for DAD. 2528 nx_icmpv6_process_echo_reply.c Added ICMP statistical counter, removed ICMP header before passing the packet 2529 to the thread 2530 nx_icmpv6_process_na.c Optimized the NA packet process 2531 nx_icmpv6_process_ra.c Optimized the destination table operation, added ICMP counters 2532 nx_icmpv6_process_redirect.c Added ICMP statistical counter, optimized internal operation 2533 nx_igmp_loopback_disable.c Added mutex protection 2534 nx_igmp_loopback_enable.c Added mutex protection 2535 nx_igmp_packet_process.c Allowed IGMP statistical counters to be compiled out, 2536 impoved the handling of IGMPv1 packets 2537 nx_ip_address_change_notify.c Added mutex protection 2538 nx_ip_address_get.c Added mutex protection 2539 nx_ip_address_set.c Added mutex protection 2540 nx_ip_checksum_compute.c Fixed a compiler warning when the IPv6 feature is not enabled 2541 nx_ip_delete.c: Clear the nx_ip_id field after the IP internal is cleaned up. 2542 nx_ip_gateway_address_set.c Added missing mutex release if no interface found, allow the gateway to be cleared 2543 nx_ip_fragment_assembly.c Improved fragment matching per RFC 791, fixed a compiler warning 2544 nx_ip_packet_receive.c Added VOID* cast to avoid compiler warnings. 2545 nx_ip_packet_send.c Added check for non null packet interface or next hop (e.g. gateway) 2546 Fixed a bug where the prepend_ptr was incorrectedly adjusted before 2547 calling nx_packet_transmit_release. 2548 nx_ipv6.h Added and modified internal API prototypes 2549 nx_ipv6_fragment_process.c Release all fragments when discarding a fragment 2550 Added counter for total_fragments sent. 2551 nx_ipv6_packet_send.c Fixed a bug where the prepend_ptr was incorrectedly adjusted before 2552 calling nx_packet_transmit_release. 2553 nx_ipv6_util.h Optimized internal operations, added a check for the FF05:: multicast range 2554 nx_ip_status_check.c: Added the configurable wait option NX_IP_STATUS_CHECK_WAIT_TIME 2555 nx_ipv6_option_error.c simplify the logic 2556 nx_ipv6_packet_copy.c Fixed a compiler warning 2557 nx_nd_cache_delete_internal.c Optimized the destination table search process 2558 nx_packet_release Removed an IPv6 conditional compilation so the IP version field is cleaned up 2559 nx_rarp_packet_receive.c Added initialization to avoid compiler warnings 2560 nx_tcp_mss_option_get.c Corrected the logic in the option length calculation. 2561 nx_tcp_no_connection_reset.c Added a parameter to indicate source IPv6 address to use when sending the RST packet. 2562 nx_tcp_packet_send_ack.c Skip TCP checksum calculation if the feature is turned off. 2563 nx_tcp_packet_send_fin.c Skip TCP checksum calculation if the feature is turned off. 2564 nx_tcp_packet_send_rst.c Skip TCP checksum calculation if the feature is turned off. 2565 nx_tcp_packet_send_syn.c Skip TCP checksum calculation if the feature is turned off. 2566 nx_tcp_socket_packet_process.c Added check for acceptable RST, moved TCP header optino process into nx_tcp_packet_process 2567 nx_tcp_periodic_process.c Added per-socket keep-alive feature. 2568 nx_tcp_socket_receive Optimized internal logic, added netX trace event 2569 Modified logic to always return a packet in the receive queue regardless of the TCP socket state 2570 nx_tcp_server_socket_accept.c Clean up the socket data structure before responding to a new conenction. 2571 nx_tcp_socket_state_closing.c Validate the ACK and SEQ number before closing down the socket 2572 nx_tcp_socket_state_ack_check.c Fixed a corner case where the ACK number was incorrectly checked 2573 Fixed another corner case when determining if packets can be released from the transmit queue 2574 where the transmit window is wrapped. 2575 nx_udp_packet_receive.c Optimized internal operations 2576 nx_udp_socket_bytes_available: Modified output to error status if the socket port is not bound, corrected return value, fixed comiler warnings 2577 nx_udp_socket_receive.c Removed redundant calls to checksum 2578 nx_user.h Added options to remove ICMP checksum computation 2579 nxd_icmp_enable.c Added mutex protection, optimized initilization process 2580 nxd_ipv6_find_max_prefix_length.c Optimized the search algorithm 2581 nxd_ipv6_prefix_router_timer_tick.c Clean up the destination table when a router times out 2582 nxd_ipv6_router_lookup.c Check nd_cache_entry being valid before dereferencing it, 2583 nxd_ipv6_router_solicitation_check.c Check router entry valid before updating its timer value optimized the router table search algorithm 2584 nxd_ipv6_search_onlink.c Also search manually configured Ipv6 addresses for onlink nodes 2585 nxd_nd_cache_entry_delete.c Make sure the ND cache entry exists before deleting it, also invalidated the destination table entry 2586 nxd_tcp_client_socket_connect.c Do socket cleanup before sending the SYN packet 2587 nxde_ip_raw_packet_send.c Added more error checking logic 2588 nxde_udp_socket_send.c Added more error checking logic 2589 nxe_ip_gateway_address_set.c Removed a requirement that ARP be enabled before setting IPv4 gateway address and 2590 removed requirement that the service must be called from a thread 2591 nxe_ip_max_payload_size_find.c Replaced source address with an index to the source address 2592 nxe_ip_static_route_add.c Added a check to make sure the next hop address is directly reachable. 2593 nxe_ip_static_route_delete.c Removed unused code 2594 nxe_packet_release.c Removed unreachable code 2595 nxe_packet_transmit_release.c Removed unreachable code 2596 2597 2598 Files added: 2599 demo_netx_duo_multihome_tcp.c 2600 demo_netx_duo_multihome_udp.c 2601 nx_icmp_interface_ping6.c 2602 nx_icmpv6_dest_table_add.c 2603 nx_icmpv6_process_packet_too_big.c 2604 nx_igmp_multicast_interface_join.c 2605 nx_ip_driver_interface_direct_command.c 2606 nx_ip_interface_address_get.c 2607 nx_ip_interface_address_set.c 2608 nx_ip_interface_attach.c 2609 nx_ip_interface_info_get.c 2610 nx_ip_interface_status_check.c 2611 nx_ip_raw_packet_interface_send.c 2612 nx_ip_route_find.c 2613 nx_nd_cache_add_entry.c 2614 nx_packet_data_extract_offset.c 2615 nx_tcp_socket_disconnect_complete_notify.c 2616 nx_tcp_socket_establish_notify.c 2617 nx_tcp_socket_send_internal.c 2618 nx_tcp_socket_timed_wait_callback.c 2619 nx_tcp_window_scaling_option_get.c 2620 nx_udp_packet_info_extract.c 2621 nx_udp_socket_interface_send.c 2622 nxd_icmp_interface_ping.c 2623 nxd_ip_raw_packet_interface_send.c 2624 nxd_ipv6_address_delete.c 2625 nxd_ipv6_address_get.c 2626 nxd_ipv6_address_set.c 2627 nxd_ipv6_default_router_get.c 2628 nxd_udp_socket_interface_send.c 2629 nxde_icmp_interface_ping.c 2630 nxde_ip_raw_packet_interface_send.c 2631 nxde_ipv6_address_delete.c 2632 nxde_ipv6_address_get.c 2633 nxde_ipv6_address_set.c 2634 nxde_ipv6_default_router_get.c 2635 nxde_udp_packet_info_extract.c 2636 nxde_udp_socket_interface_send.c 2637 nxe_icmp_interface_ping6.c 2638 nxe_igmp_multicast_interface_join.c 2639 nxe_ip_driver_interface_direct_command.c 2640 nxe_ip_interface_address_get.c 2641 nxe_ip_interface_address_set.c 2642 nxe_ip_interface_attach.c 2643 nxe_ip_interface_info_get.c 2644 nxe_ip_interface_status_check.c 2645 nxe_ip_raw_packet_interface_send.c 2646 nxe_packet_data_extract_offset.c 2647 nxe_tcp_socket_disconnect_complete_notify.c 2648 nxe_tcp_socket_establish_notify.c 2649 nxe_tcp_socket_timed_wait_callback.c 2650 nxe_udp_packet_info_extract.c 2651 nxe_udp_socket_interface_send.c 2652 2653 2654 Files removed: 2655 nx_icmpv6_dest_table_find_and_add.c 2656 nx_icmpv6_dest_table_find_and_add.c 2657 nx_ip_static_routing_disable.c 2658 nx_ip_static_routing_enable.c 2659 nx_ipv6_process_packet_too_big.c 2660 nx_nd_cache_find_entry_and_add.c 2661 nxd_ipv6_interface_address_get.c 2662 nxd_ipv6_interface_address_set.c 2663 nxd_ipv6_linklocal_address_get.c 2664 nxd_ipv6_linklocal_address_set.c 2665 nxd_udp_socket_set_interface.c 2666 nxde_ipv6_interface_address_get.c 2667 nxde_ipv6_interface_address_set.c 2668 nxde_ipv6_linklocal_address_get.c 2669 nxde_ipv6_linklocal_address_set.c 2670 nxde_udp_socket_set_interface.c 2671 nxe_ip_static_routing_disable.c 2672 nxe_ip_static_routing_enable.c, 2673 2674 267506/01/2010 NetX generic code version 5.5. This release includes the following major features: 2676 Path MTU Discovery and IPv6 Advertised Link MTU 2677 Internal debug modules removed (replaced with TraceX events) 2678 2679 Other modifications are: 2680 2681 nx_icmpv6_process_ra.c Path MTU support 2682 Fixed bug in Neighbor Discovery cache processing 2683 nx_icmpv6_process_redirect.c Path MTU support 2684 nx_icmpv6_send_error_message.c Path MTU support 2685 nx_icmpv6_send_queued_packets.c Path MTU support 2686 Fixed a bug where NA packet is received how queued packets requiring fragmentation are sent 2687 nx_ip_static_route_add.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING 2688 nx_ip_static_route_delete.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING 2689 nx_ip_static_route_find.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING 2690 nx_ip_static_route_enable.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING 2691 nx_ip_static_route_disable.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING 2692 nx_ip_thread_entry.c Path MTU support 2693 nx_ipv6_packet_send.c Path MTU support 2694 Added a check if source and destination IP addresses are the same as part of Denial of service attack, 2695 Added check for suitable next hop; no packet transmitted if not found by routing algorithm */ 2696 Fixed bug how multicast packets are detected 2697 nx_tcp_packet_process.c Modified RST packets sent in response to invalid data packets to include proper ACK number 2698 nx_tcp_packet_send_rst.c Send a RST with proper ACK number in response to invalid data packet. 2699 nx_tcp_socket_packet_process.c Removed duplicate logic that detects and sets MSS number from peer 2700 Added logic for sending ACKs for out-of-order packet 2701 Added check for duplicated SYNs 2702 nx_tcp_socket_state_data_check.c Modified to send ACKs for out-of-order data packets 2703 modified handling invalid RST control message 2704 Added check for duplicated incoming SYNs 2705 Fixed bug (corner case) handling overlapping sequence numbers 2706 Make _nx_tcp_socket_state_data_trim and _nx_tcp_socket_state_data_trim_front 2707 non-static function. 2708 nx_tcp_socket_state_syn_sent.c Modified detection and handling of unacceptable ACK before sending RST packet 2709 nxd_icmp_enable.c Path MTU support 2710 nxd_ipv6_enable.c Replaced literal router solicitation parameters with macros defined in nx_user.h 2711 nxd_ipv6_find_max_prefix_length.c Optimized the prefix match algorithm 2712 nxd_udp_socket_send.c Corrected placement of IPSec ENABLED conditional code, 2713 Added check for IPv6 logical outgoing interface 2714 nxe_ip_static_routing_disable.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING 2715 nxe_ip_static_routing_enable.c Renamed define NX_IP_STATIC_ROUTING_SUPPORTED to NX_ENABLE_IP_STATIC_ROUTING 2716 nx_icmpv6.h Path MTU support 2717 nx_nd_cache.h Removed unused defines for Router and ND protocols 2718 nx_user.h Added #defines for router solicitation parameters 2719 Added NX_PACKET_HEADER_PAD_SIZE to pad towards the end of the NX_PACKET structure. 2720 2721 272211/23/2009 NetX generic code version 5.4. This release includes the following major features: 2723 Multiple IPv6 address support added 2724 Path MTU and IPv6 Advertised Link MTU support removed 2725 2726 Other modifications are: 2727 2728 nx_ip_fragment_assembly.c Added check for invalid length (exceed maximum size limit) 2729 nx_ip_max_payload_size.c New API:computes max packet payload that will not require fragmentation 2730 nx_ip_packet_send.c Corrected NX_IP_LIMITIED_BROADCAST to NX_IP_LIMITED_BROADCAST as destination IP 2731 nx_ipv6_packet_receive.c Added support for multiple IPv6 addresses 2732 nx_ipv6_packet_send.c Made packet fragmentation conditional; if not enabled and fragmentation is required drop the packet 2733 Added mutex protection around Neighbor Discovery cache table operations 2734 nx_ipv6_utils.c Fixed bug in IPv6_Address_Type() for detecting multicast address type 2735 nx_tcp_no_connection_reset.c For socket in CLOSED state, RST packet sequence number set to incoming ACK number 2736 nx_tcp_fast_periodic_processing.c Replaced reference to primary IP global address with transmit socket outgoing interface address 2737 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 2738 must be sent 2739 Update the socket outgoing interface to the received packet interface 2740 nx_tcp_packet_send_ack.c Added support for multiple IPv6 addresses 2741 nx_tcp_packet_send_fin.c Added support for multiple IPv6 addresses 2742 nx_tcp_packet_send_rst.c Added support for multiple IPv6 addresses 2743 nx_tcp_packet_send_syn.c Added support for multiple IPv6 addresses 2744 nx_tcp_socket_create.c Initialize socket outgoing interface with NULL instead of IP global address 2745 nx_tcp_socket_send.c Added support for multiple IPv6 addresses 2746 nx_tcp_socket_state_data_check.c Fixed minor compiler warning with conditional coding around IP block pointer declaration 2747 nx_tcp_socket_state_transmit_check.c Renamed nx_tcp_window_update_callback_notify with nx_tcp_socket_window_update_notify 2748 Added support for multiple IPv6 addresses 2749 nx_tcp_socket_window_update_notify_set.c Renamed file from nx_tcp_socket_window_notify to nx_tcp_socket_window_notify_set 2750 nx_udp_socket_create.c Initialize socket outgoing interface with NULL instead of IP global address 2751 nx_udp_socket_receive.c Corrected placement of conditional #defines around extracting packet source and destination address 2752 nx_udp_source_extract.c Modified for performing IPv4 packet extraction only 2753 nxd_icmp_enable.c Removed path MTU support 2754 nxd_icmp_ping.c Added check for IPv6 enabled for sending IPv6 echo request packets 2755 nxd_ipv6_enabled.c Send an error status return if not IPv6 enabled 2756 nxd_ipv6_find_max_prefix_length.c New function: finds the longest matching prefix between two IPv6 addresses 2757 nxd_ipv6_interface_address_get.c New API: returns IPv6 address and prefix length based in the input interface index 2758 nxd_ipv6_interface_address_set.c New API: Sets the IPv6 address and prefix length of the input interface index 2759 nxd_ipv6_interface_find.c Added multiple IPv6 address support 2760 nxd_ipv6_linklocal_address_get.c Replace reference to obsoleted IP link local address with IP instance zero index interface (designated 2761 link local) 2762 nxd_ipv6_linklocal_address_get.c Replace reference to obsoleted IP link local address with IP instance zero index interface (designated 2763 link local) 2764 nxd_ipv6_raw_packet_send_internal.c Added check for valid IP instance outgoing interface for packet destination 2765 nx_nd_cache_entry_delete.c Added TraceX support 2766 nxd_tcp_client_socket_connect.c Added support for multiple IPv6 addresses 2767 nxd_tcp_socket_peer_info_get.c Added TraceX support 2768 nxd_udp_socket_send.c Added support for multiple IPv6 addresses 2769 nxd_udp_socket_set_interface.c Added support for multiple IPv6 addresses 2770 nxd_udp_source_extract.c Optimized the logic for retrieving the IP address 2771 nxde_ipv6_default_router_add.c Updated call to nxd_ipv6_default_router_add() based on changes to that function 2772 nxde_udp_source_extract.c Added check for packet with invalid IP header 2773 nxe_udp_source_extract.c Added check for packet with invalid IP header 2774 nx_nd_cache.h Declared two new API, _nxd_nd_cache_entry_delete and _nxd_nd_cache_entry_set 2775 nx_tcp.h Declared new API, _nxd_tcp_no_connection_reset 2776 nx_user.h Removed NX_DISABLE_IPV6_PATH_MTU_DISCOVERY 2777 2778 2779 278008/03/2009 NetX generic code version 5.3. This release includes the following major features: 2781 Trace Events support 2782 IPSec support 2783 IGMP version 2 support 2784 2785 Other modifications are: 2786 2787 nx_igmp_enable.c IGMPv2 support 2788 nx_igmp_multicast_leave.c IGMPv2 support 2789 nx_igmp_packet_process.c IGMPv2 support 2790 nx_igmp_periodic_processing.c IGMPv2 support 2791 nx_ip_checksum_compute.c When adding last byte to the checksum, 2792 cast the byte to unsigned short 2793 nx_ip_fragment_assembly.c Fixed a packet size computation bug 2794 nx_ip_packet_send.c Use nx_ip_packet_deferred_receive for loopback 2795 nx_ipv6_packet_send.c Use nx_ip_packet_deferred_receive for loopback 2796 nx_ip_thread_entry.c Added IPv6 destination table support 2797 nx_tcp_socket_state_data_check.c Optimized TCP out-of-order data receive logic 2798 Added support for TCP congestion avoidance 2799 nx_tcp_socket_state_syn_received.c Added support for TCP congestion avoidance 2800 nx_tcp_socket_state_syn_sent.c Added support for TCP congestion avoidance 2801 nx_tcp_socket_state_transmit_check.c Added support for TCP congestion avoidance 2802 nx_tcp_socket_windows_update_notify.c Added support for TCP congestion avoidance 2803 nxd_tcp_client_socket_connect.c Revised TCP loopback connection handling 2804 nx*.h Modified comment(s). 2805 nx*.c Modified comment(s). 2806 280712/30/2007 Initial NetX Duo generic code version 5.2. This release is based on NetX 5.1 for IPv4 support, 2808 with features developed for IPv6. 2809 2810 28112. NetXDuo Secure 2812 281308/15/2019 NX Secure generic code version 5.12. This release includes the 2814 following major features: 2815 2816 Files are modified to store cipher suite pointer in the session: 2817 nx_secure_dtls_hash_record.c 2818 nx_secure_dtls_process_clienthello.c 2819 nx_secure_dtls_send_serverhello.c 2820 nx_secure_dtls_server_handshake.c 2821 nx_secure_dtls_verify_mac.c 2822 nx_secure_tls.h 2823 nx_secure_tls_finished_hash_generate.c 2824 nx_secure_tls_generate_keys.c 2825 nx_secure_tls_generate_premaster_secret.c 2826 nx_secure_tls_hash_record.c 2827 nx_secure_tls_process_certificate_verify.c 2828 nx_secure_tls_process_client_key_exchange.c 2829 nx_secure_tls_process_clienthello.c 2830 nx_secure_tls_process_server_key_exchange.c 2831 nx_secure_tls_process_serverhello.c 2832 nx_secure_tls_process_serverhello_extensions.c 2833 nx_secure_tls_record_hash_calculate.c 2834 nx_secure_tls_record_hash_initialize.c 2835 nx_secure_tls_record_hash_update.c 2836 nx_secure_tls_record_payload_decrypt.c 2837 nx_secure_tls_record_payload_encrypt.c 2838 nx_secure_tls_send_certificate_verify.c 2839 nx_secure_tls_send_client_key_exchange.c 2840 nx_secure_tls_send_record.c 2841 nx_secure_tls_send_server_key_exchange.c 2842 nx_secure_tls_send_serverhello.c 2843 nx_secure_tls_server_handshake.c 2844 nx_secure_tls_session_iv_size_get.c 2845 nx_secure_tls_session_keys_set.c 2846 nx_secure_tls_session_reset.c 2847 nx_secure_tls_verify_mac.c 2848 2849 Files are modified to optimize RAM usage for remote certificates by 2850 utilizing otherwise unused space in the TLS packet reassembly buffer 2851 and parsing the certificates directly within the reassembly buffer: 2852 nx_secure_tls.h 2853 nx_secure_tls_process_record.c 2854 nx_secure_tls_process_remote_certificate.c 2855 nx_secure_tls_remote_certificate_allocate.c 2856 nx_secure_tls_remote_certificate_free_all.c 2857 nx_secure_tls_session_packet_buffer_set.c 2858 nx_secure_tls_session_receive_records.c 2859 nx_secure_tls_session_x509_client_verify_configure.c 2860 nx_secure_x509.h 2861 nxe_secure_tls_session_x509_client_verify_configure.c 2862 2863 Files are modified to add TLS session intialization checking: 2864 nx_secure_tls.h 2865 nx_secure_tls_session_create.c 2866 nx_secure_tls_session_delete.c 2867 nx_secure_tls_session_reset.c 2868 nxe_secure_dtls_client_protocol_version_override.c 2869 nxe_secure_dtls_client_session_start.c 2870 nxe_secure_dtls_packet_allocate.c 2871 nxe_secure_dtls_psk_add.c 2872 nxe_secure_dtls_server_session_send.c 2873 nxe_secure_dtls_server_session_start.c 2874 nxe_secure_dtls_session_client_info_get.c 2875 nxe_secure_dtls_session_end.c 2876 nxe_secure_dtls_session_local_certificate_add.c 2877 nxe_secure_dtls_session_local_certificate_remove.c 2878 nxe_secure_dtls_session_receive.c 2879 nxe_secure_dtls_session_reset.c 2880 nxe_secure_dtls_session_send.c 2881 nxe_secure_dtls_session_start.c 2882 nxe_secure_dtls_session_trusted_certificate_add.c 2883 nxe_secure_dtls_session_trusted_certificate_remove.c 2884 nxe_secure_tls_active_certificate_set.c 2885 nxe_secure_tls_client_psk_set.c 2886 nxe_secure_tls_local_certificate_add.c 2887 nxe_secure_tls_local_certificate_find.c 2888 nxe_secure_tls_local_certificate_remove.c 2889 nxe_secure_tls_packet_allocate.c 2890 nxe_secure_tls_psk_add.c 2891 nxe_secure_tls_remote_certificate_allocate.c 2892 nxe_secure_tls_remote_certificate_buffer_allocate.c 2893 nxe_secure_tls_remote_certificate_free_all.c 2894 nxe_secure_tls_server_certificate_add.c 2895 nxe_secure_tls_server_certificate_find.c 2896 nxe_secure_tls_server_certificate_remove.c 2897 nxe_secure_tls_session_alert_value_get.c 2898 nxe_secure_tls_session_certificate_callback_set.c 2899 nxe_secure_tls_session_client_callback_set.c 2900 nxe_secure_tls_session_client_verify_disable.c 2901 nxe_secure_tls_session_client_verify_enable.c 2902 nxe_secure_tls_session_end.c 2903 nxe_secure_tls_session_packet_buffer_set.c 2904 nxe_secure_tls_session_protocol_version_override.c 2905 nxe_secure_tls_session_receive.c 2906 nxe_secure_tls_session_renegotiate.c 2907 nxe_secure_tls_session_renegotiate_callback_set.c 2908 nxe_secure_tls_session_reset.c 2909 nxe_secure_tls_session_send.c 2910 nxe_secure_tls_session_server_callback_set.c 2911 nxe_secure_tls_session_sni_extension_parse.c 2912 nxe_secure_tls_session_sni_extension_set.c 2913 nxe_secure_tls_session_start.c 2914 nxe_secure_tls_session_time_function_set.c 2915 nxe_secure_tls_session_x509_client_verify_configure.c 2916 nxe_secure_tls_trusted_certificate_add.c 2917 nxe_secure_tls_trusted_certificate_remove.c 2918 2919 2920 Files are modified to fix DTLS version handling: 2921 nx_secure_dtls_send_clienthello.c 2922 nx_secure_dtls_send_helloverifyrequest.c 2923 nx_secure_dtls_server_handshake.c 2924 nx_secure_dtls_session_start.c 2925 2926 Files are modified to improve informational error return codes for 2927 easier debugging of TLS errors: 2928 nx_secure_dtls_client_handshake.c 2929 nx_secure_dtls_process_clienthello.c 2930 nx_secure_dtls_send_clienthello.c 2931 nx_secure_dtls_send_serverhello.c 2932 nx_secure_dtls_server_handshake.c 2933 nx_secure_tls.h 2934 nx_secure_tls_map_error_to_alert.c 2935 nx_secure_tls_process_client_key_exchange.c 2936 nx_secure_tls_process_finished.c 2937 nx_secure_tls_process_server_key_exchange.c 2938 nx_secure_tls_process_serverhello_extensions.c 2939 nx_secure_tls_server_handshake.c 2940 nx_secure_tls_ecc_generate_premaster_secret.c 2941 nx_secure_tls_ecc_process_certificate_verify.c 2942 nx_secure_tls_ecc_process_client_key_exchange.c 2943 nx_secure_tls_ecc_process_server_key_exchange.c 2944 nx_secure_tls_ecc_send_certificate_verify.c 2945 nx_secure_tls_ecc_send_server_key_exchange.c 2946 2947 Files are added or modified for the new API 2948 "nx_secure_tls_session_alert_value_get": 2949 nx_secure_dtls_process_record.c 2950 nx_secure_tls.h 2951 nx_secure_tls_api.h 2952 nx_secure_tls_session_alert_value_get.c 2953 nx_secure_tls_session_start.c 2954 nxe_secure_tls_session_alert_value_get.c 2955 2956 Files are modified to provide consistent error checking of return 2957 values from generic NX_CRYPTO cipher routine APIs: 2958 nx_secure_dtls_hash_record.c 2959 nx_secure_tls_client_handshake.c 2960 nx_secure_tls_finished_hash_generate.c 2961 nx_secure_tls_generate_keys.c 2962 nx_secure_tls_handshake_hash_init.c 2963 nx_secure_tls_hash_record.c 2964 nx_secure_tls_process_certificate_verify.c 2965 nx_secure_tls_process_client_key_exchange.c 2966 nx_secure_tls_record_payload_decrypt.c 2967 nx_secure_tls_send_certificate_verify.c 2968 nx_secure_tls_send_client_key_exchange.c 2969 nx_secure_tls_server_handshake.c 2970 nx_secure_tls_session_keys_set.c 2971 nx_secure_tls_session_reset.c 2972 nx_secure_x509_certificate_verify.c 2973 nx_secure_x509_crl_verify.c 2974 2975 Files are modified to improve the error return code when the 2976 TLS crypto key buffer is too small for the chosen ciphersuite: 2977 nx_secure_tls. 2978 nx_secure_tls_session_keys_set.c 2979 2980 Files are modified to improve packet length verification: 2981 nx_secure_dtls_send_clienthello.c 2982 nx_secure_dtls_send_serverhello.c 2983 nx_secure_tls_ecc_generate_keys.c 2984 nx_secure_tls_ecc_send_client_key_exchange.c 2985 nx_secure_tls_generate_keys.c 2986 nx_secure_tls_send_clienthello.c 2987 nx_secure_tls_send_serverhello.c 2988 2989 Files are modified to add caller checking: 2990 nxe_secure_tls_active_certificate_set.c 2991 nxe_secure_tls_client_psk_set.c 2992 nxe_secure_tls_local_certificate_add.c 2993 nxe_secure_tls_local_certificate_find.c 2994 nxe_secure_tls_local_certificate_remove.c 2995 nxe_secure_tls_metadata_size_calculate.c 2996 nxe_secure_tls_packet_allocate.c 2997 nxe_secure_tls_psk_add.c 2998 nxe_secure_tls_remote_certificate_allocate.c 2999 nxe_secure_tls_remote_certificate_buffer_allocate.c 3000 nxe_secure_tls_remote_certificate_free_all.c 3001 nxe_secure_tls_server_certificate_add.c 3002 nxe_secure_tls_server_certificate_find.c 3003 nxe_secure_tls_server_certificate_remove.c 3004 nxe_secure_tls_session_certificate_callback_set.c 3005 nxe_secure_tls_session_client_callback_set.c 3006 nxe_secure_tls_session_client_verify_disable.c 3007 nxe_secure_tls_session_client_verify_enable.c 3008 nxe_secure_tls_session_create.c 3009 nxe_secure_tls_session_delete.c 3010 nxe_secure_tls_session_end.c 3011 nxe_secure_tls_session_packet_buffer_set.c 3012 nxe_secure_tls_session_protocol_version_override.c 3013 nxe_secure_tls_session_receive.c 3014 nxe_secure_tls_session_renegotiate.c 3015 nxe_secure_tls_session_renegotiate_callback_set.c 3016 nxe_secure_tls_session_reset.c 3017 nxe_secure_tls_session_send.c 3018 nxe_secure_tls_session_server_callback_set.c 3019 nxe_secure_tls_session_sni_extension_parse.c 3020 nxe_secure_tls_session_sni_extension_set.c 3021 nxe_secure_tls_session_start.c 3022 nxe_secure_tls_session_time_function_set.c 3023 nxe_secure_tls_session_x509_client_verify_configure.c 3024 nxe_secure_tls_trusted_certificate_add.c 3025 nxe_secure_tls_trusted_certificate_remove.c 3026 nxe_secure_x509_certificate_initialize.c 3027 nxe_secure_x509_common_name_dns_check.c 3028 nxe_secure_x509_crl_revocation_check.c 3029 nxe_secure_x509_dns_name_initialize.c 3030 nxe_secure_x509_extended_key_usage_extension_parse.c 3031 nxe_secure_x509_extension_find.c 3032 nxe_secure_x509_key_usage_extension_parse.c 3033 3034 Files are modified to fix static anaylsis reports: 3035 nx_secure_tls_generate_keys.c 3036 nx_secure_tls_process_remote_certificate.c 3037 nx_secure_tls_session_packet_buffer_set.c 3038 nx_secure_tls_ecc_generate_keys.c 3039 nx_secure_tls_ecc_send_server_key_exchange.c 3040 3041 Files are modified to correct self-signed certificate verification 3042 and support duplicate certificates sent by a remote host: 3043 nx_secure_tls_process_remote_certificate.c 3044 nx_secure_x509_certificate_chain_verify.c 3045 3046 Files are modified to provide RFC 7507 version fallback SCSV support: 3047 nx_secure_tls_process_clienthello.c 3048 nx_secure_dtls_process_clienthello.c 3049 nx_secure_dtls_send_clienthello.c 3050 nx_secure_tls.h 3051 nx_secure_tls_map_error_to_alert.c 3052 nx_secure_tls_newest_supported_version.c 3053 nx_secure_tls_protocol_version_get.c 3054 nx_secure_tls_send_clienthello.c 3055 nx_secure_tls_send_serverhello_extensions.c 3056 nx_secure_tls_session_reset.c 3057 3058 Files are modified to improve packet length verification: 3059 nx_secure_dtls_allocate_handshake_packet.c 3060 nx_secure_dtls_packet_allocate.c 3061 nx_secure_dtls_process_record.c 3062 nx_secure_dtls_process_receive_callback.c 3063 nx_secure_dtls_send_helloverifyrequest.c 3064 nx_secure_dtls_send_record.c 3065 nx_secure_dtls_send_serverhello.c 3066 nx_secure_dtls_session_end.c 3067 nx_secure_dtls_session_receive.c 3068 nx_secure_dtls_session_start.c 3069 nx_secure_tls.h 3070 nx_secure_tls_allocate_handshake_packet.c 3071 nx_secure_tls_client_psk_set.c 3072 nx_secure_tls_generate_keys.c 3073 nx_secure_tls_generate_premaster_secret.c 3074 nx_secure_tls_packet_allocate.c 3075 nx_secure_tls_process_clienthello_extensions.c 3076 nx_secure_tls_process_serverhello.c 3077 nx_secure_tls_record_payload_decrypt.c 3078 nx_secure_tls_send_certificate.c 3079 nx_secure_tls_send_certificate_request.c 3080 nx_secure_tls_send_certificate_verify.c 3081 nx_secure_tls_send_changecipherspec.c 3082 nx_secure_tls_send_client_key_exchange.c 3083 nx_secure_tls_send_clienthello.c 3084 nx_secure_tls_send_clienthello_extensions.c 3085 nx_secure_tls_send_finished.c 3086 nx_secure_tls_send_record.c 3087 nx_secure_tls_send_server_key_exchange.c 3088 nx_secure_tls_send_serverhello.c 3089 nx_secure_tls_send_serverhello_extensions.c 3090 nx_secure_tls_session_receive_records.c 3091 nx_secure_tls_verify_mac.c 3092 3093 Files are modified to add buffer boundary checking in ASN.1 parsing: 3094 nx_secure_x509.c 3095 nx_secure_x509.h 3096 nx_secure_x509_asn1_tlv_block_parse.c 3097 nx_secure_x509_certificate_revocation_list_parse.c 3098 nx_secure_x509_crl_revocation_check.c 3099 nx_secure_x509_distinguished_name_parse.c 3100 nx_secure_x509_extended_key_usage_extension_parse.c 3101 nx_secure_x509_extension_find.c 3102 nx_secure_x509_key_usage_extension_parse.c 3103 nx_secure_x509_pkcs1_rsa_private_key_parse.c 3104 nx_secure_x509_pkcs7_decode.c 3105 nx_secure_x509_subject_alt_names_find.c 3106 3107 Files are added to support DTLS: 3108 nx_secure_dtls.h 3109 nx_secure_dtls_api.h 3110 nx_secure_dtls_allocate_handshake_packet.c 3111 nx_secure_dtls_client_handshake.c 3112 nx_secure_dtls_client_protocol_version_override.c 3113 nx_secure_dtls_client_session_start.c 3114 nx_secure_dtls_hash_record.c 3115 nx_secure_dtls_initialize.c 3116 nx_secure_dtls_packet_allocate.c 3117 nx_secure_dtls_process_clienthello.c 3118 nx_secure_dtls_process_handshake_header.c 3119 nx_secure_dtls_process_header.c 3120 nx_secure_dtls_process_helloverifyrequest.c 3121 nx_secure_dtls_process_record.c 3122 nx_secure_dtls_psk_add.c 3123 nx_secure_dtls_receive_callback.c 3124 nx_secure_dtls_retransmit.c 3125 nx_secure_dtls_retransmit_queue_flush.c 3126 nx_secure_dtls_send_clienthello.c 3127 nx_secure_dtls_send_handshake_record.c 3128 nx_secure_dtls_send_helloverifyrequest.c 3129 nx_secure_dtls_send_record.c 3130 nx_secure_dtls_send_serverhello.c 3131 nx_secure_dtls_server_create.c 3132 nx_secure_dtls_server_delete.c 3133 nx_secure_dtls_server_handshake.c 3134 nx_secure_dtls_server_local_certificate_add.c 3135 nx_secure_dtls_server_local_certificate_remove.c 3136 nx_secure_dtls_server_notify_set.c 3137 nx_secure_dtls_server_protocol_version_override.c 3138 nx_secure_dtls_server_psk_add.c 3139 nx_secure_dtls_server_session_send.c 3140 nx_secure_dtls_server_session_start.c 3141 nx_secure_dtls_server_start.c 3142 nx_secure_dtls_server_stop.c 3143 nx_secure_dtls_server_trusted_certificate_add.c 3144 nx_secure_dtls_server_trusted_certificate_remove.c 3145 nx_secure_dtls_server_x509_client_verify_configure.c 3146 nx_secure_dtls_server_x509_client_verify_disable.c 3147 nx_secure_dtls_session_cache.c 3148 nx_secure_dtls_session_client_info_get.c 3149 nx_secure_dtls_session_create.c 3150 nx_secure_dtls_session_delete.c 3151 nx_secure_dtls_session_end.c 3152 nx_secure_dtls_session_local_certificate_add.c 3153 nx_secure_dtls_session_local_certificate_remove.c 3154 nx_secure_dtls_session_receive.c 3155 nx_secure_dtls_session_reset.c 3156 nx_secure_dtls_session_send.c 3157 nx_secure_dtls_session_start.c 3158 nx_secure_dtls_session_trusted_certificate_add.c 3159 nx_secure_dtls_session_trusted_certificate_remove.c 3160 nx_secure_dtls_verify_mac.c 3161 nxe_secure_dtls_client_protocol_version_override.c 3162 nxe_secure_dtls_client_session_start.c 3163 nxe_secure_dtls_packet_allocate.c 3164 nxe_secure_dtls_psk_add.c 3165 nxe_secure_dtls_server_create.c 3166 nxe_secure_dtls_server_delete.c 3167 nxe_secure_dtls_server_local_certificate_add.c 3168 nxe_secure_dtls_server_local_certificate_remove.c 3169 nxe_secure_dtls_server_notify_set.c 3170 nxe_secure_dtls_server_protocol_version_override.c 3171 nxe_secure_dtls_server_psk_add.c 3172 nxe_secure_dtls_server_session_send.c 3173 nxe_secure_dtls_server_session_start.c 3174 nxe_secure_dtls_server_start.c 3175 nxe_secure_dtls_server_stop.c 3176 nxe_secure_dtls_server_trusted_certificate_add.c 3177 nxe_secure_dtls_server_trusted_certificate_remove.c 3178 nxe_secure_dtls_server_x509_client_verify_configure.c 3179 nxe_secure_dtls_server_x509_client_verify_disable.c 3180 nxe_secure_dtls_session_client_info_get.c 3181 nxe_secure_dtls_session_create.c 3182 nxe_secure_dtls_session_delete.c 3183 nxe_secure_dtls_session_end.c 3184 nxe_secure_dtls_session_local_certificate_add.c 3185 nxe_secure_dtls_session_local_certificate_remove.c 3186 nxe_secure_dtls_session_receive.c 3187 nxe_secure_dtls_session_reset.c 3188 nxe_secure_dtls_session_send.c 3189 nxe_secure_dtls_session_start.c 3190 nxe_secure_dtls_session_trusted_certificate_add.c 3191 nxe_secure_dtls_session_trusted_certificate_remove.c 3192 3193 Files are modified to fix compiler errors when NX_SECURE_X509_DISABLE_CRL is defined: 3194 nx_secure_x509.h 3195 nx_secure_x509_certificate_revocation_list_parse.c 3196 nx_secure_x509_crl_revocation_check.c 3197 nx_secure_x509_crl_verify.c 3198 nx_secure_x509_ecc_certificate_revocation_list_parse.c 3199 nx_secure_x509_ecc_crl_verify.c 3200 3201 Files are modified to support AES-GCM cipher: 3202 nx_secure_crypto_method_self_test_aes.c 3203 nx_secure_crypto_table_self_test.c 3204 nx_secure_tls_record_payload_decrypt.c 3205 nx_secure_tls_record_payload_encrypt.c 3206 3207 Files are modified to fix swapped PSK identity and hint parameters 3208 when sending to the remote host: 3209 nx_secure_tls_send_client_key_exchange.c 3210 nx_secure_tls_send_server_key_exchange.c 3211 3212 Files are modified to fix Session ID handling problem (session ID 3213 length is always 0 in the initial ServerHello): 3214 nx_secure_tls_send_serverhello.c 3215 3216 Files are modified to update scratch buffers to support the new 3217 default 4096-bit RSA key size: 3218 nx_secure_tls_process_certificate_verify.c 3219 nx_secure_tls_process_client_key_exchange.c 3220 nx_secure_tls_send_certificate_verify.c 3221 nx_secure_tls_send_client_key_exchange.c 3222 3223 Files are modified to fix issue with processing CertificateVerify 3224 messages in a TLS Server with Client X.509 Certificate 3225 verification enabled: 3226 nx_secure_tls_process_remote_certificate.c 3227 nx_secure_tls_process_certificate_verify.c 3228 nx_secure_tls_remote_certificate_verify.c 3229 nx_secure_tls_server_handshake.c 3230 3231 Files are added to support new API for allocating buffer space 3232 for incoming remote certificates: 3233 nx_secure_tls_remote_certificate_buffer_allocate.c 3234 nxe_secure_tls_remote_certificate_buffer_allocate.c 3235 3236 Files are modified to support new API for allocating buffer space 3237 for incoming remote certificates: 3238 nx_secure_tls.h 3239 nx_secure_tls_api.h 3240 3241 Files are added to support new API for configuring Client X.509 3242 authentication for TLS servers: 3243 nx_secure_tls_session_x509_client_verify_configure.c 3244 nxe_secure_tls_session_x509_client_verify_configure.c 3245 3246 Files are modified to support new API for Client X.509 authentication: 3247 nx_secure_tls.h 3248 nx_secure_tls_api.h 3249 3250 Files are modified to clear cryptographic secret data on errors: 3251 nx_secure_tls_session_receive_records.c 3252 nx_secure_tls_session_send.c 3253 3254 Files are modified to assure that random number values are always cast 3255 to 32-bit type or smaller: 3256 nx_secure_tls_generate_premaster_secret.c 3257 3258 Files are modified to assure that CBC padding values are properly checked: 3259 nx_secure_tls_record_payload_decrypt.c 3260 3261 Files are modified to assure that MAC hash checking happens even if 3262 decryption padding checking fails: 3263 nx_secure_tls_record_payload_decrypt.c 3264 nx_secure_tls_process_record.c 3265 3266 Files are modified to free all allocated remote certificates in a 3267 TLS server session as soon as certificate chain validation is 3268 complete. TLS clients need the remote certificates until after 3269 the key echange is complete so they are cleared later: 3270 nx_secure_tls_process_remote_certificate.c 3271 nx_secure_tls_send_client_key_exchange.c 3272 3273 Files are modified to fix the usage of crypto metadata for hash method: 3274 nx_secure_tls_local_certificate_add.c 3275 nx_secure_tls_process_remote_certificate.c 3276 nx_secure_tls_remote_certificate_verify.c 3277 nx_secure_tls_session_create.c 3278 nx_secure_tls_trusted_certificate_add.c 3279 nx_secure_x509.h 3280 nx_secure_x509_certificate_verify.c 3281 nx_secure_x509_crl_verify.c 3282 3283 Files are modified to support AEAD cipher: 3284 nx_secure_tls.h 3285 nx_secure_tls_record_payload_decrypt.c 3286 nx_secure_tls_record_payload_encrypt.c 3287 3288 Files are modified to reset TLS session state if the TLS connection fails: 3289 nx_secure_tls_session_end.c 3290 nx_secure_tls_session_start.c 3291 3292 Files are modified to return errors if cryptographic routines are 3293 improperly initialized: 3294 nx_secure_tls.h 3295 nx_secure_tls_finished_hash_generate.c 3296 nx_secure_tls_process_finished.c 3297 3298 Files are modified to support elliptic curve cryptography: 3299 nx_secure_tls.h 3300 nx_secure_tls_process_client_key_exchange.c 3301 nx_secure_tls_process_server_key_exchange.c 3302 nx_secure_tls_process_serverhello_extensions.c 3303 nx_secure_tls_send_client_key_exchange.c 3304 nx_secure_tls_send_clienthello_extensions.c 3305 nx_secure_tls_send_server_key_exchange.c 3306 nx_secure_tls_send_serverhello_extensions.c 3307 nx_secure_dtls_process_clienthello.c 3308 nx_secure_dtls_send_clienthello.c 3309 nx_secure_dtls_send_serverhello.c 3310 3311 Files are added or modified to optimize the logic: 3312 nx_secure_tls_client_handshake.c 3313 nx_secure_tls_payload_encrypt.c 3314 nx_secure_tls_process_clienthello_extensions.c 3315 nx_secure_tls_process_record.c 3316 nx_secure_tls_send_certificate.c 3317 nx_secure_tls_send_certificate_verify.c 3318 nx_secure_tls_send_client_key_exchange.c 3319 nx_secure_tls_send_clienthello.c 3320 nx_secure_tls_send_clienthello_extensions.c 3321 nx_secure_tls_send_serverhello.c 3322 nx_secure_tls_send_serverhello_extensions.c 3323 nx_secure_tls_server_handshake.c 3324 nx_secure_tls_session_create.c 3325 nx_secure_x509.c 3326 nx_secure_x509_certificate_chain_verify.c 3327 3328 Files are modified to add wait_option to _nx_secure_tls_send_certificate: 3329 nx_secure_dtls_client_handshake.c 3330 nx_secure_dtls_server_handshake.c 3331 nx_secure_tls.h 3332 nx_secure_tls_client_handshake.c 3333 nx_secure_tls_send_certificate.c 3334 nx_secure_tls_server_handshake.c 3335 3336 Files are modified to fix renegotiation issue with certain browsers due to both 3337 SCSV and the Secure Renegotiation extension being required (should be either/or): 3338 nx_secure_tls.h 3339 nx_secure_tls_map_error_to_alert.c 3340 nx_secure_tls_process_clienthello.c 3341 nx_secure_tls_process_clienthello_extensions.c 3342 nx_secure_tls_process_serverhello_extensions.c 3343 nx_secure_tls_session_renegotiate.c 3344 nx_secure_tls_session_reset.c 3345 3346 Files are modified about server state processing: 3347 nx_secure_tls_process_clienthello.c 3348 nx_secure_tls_process_client_key_exchange.c 3349 nx_secure_tls_process_finished.c 3350 nx_secure_tls_server_handshake.c 3351 nx_secure_dtls_server_handshake.c 3352 3353 Files are modified to add flexibility of using macros instead of direct C library function calls: 3354 nx_secure_dtls_client_handshake.c 3355 nx_secure_dtls_hash_record.c 3356 nx_secure_dtls_packet_allocate.c 3357 nx_secure_dtls_process_clienthello.c 3358 nx_secure_dtls_process_clienthello.c 3359 nx_secure_dtls_process_header.c 3360 nx_secure_dtls_process_helloverifyrequest.c 3361 nx_secure_dtls_process_record.c 3362 nx_secure_dtls_send_clienthello.c 3363 nx_secure_dtls_send_helloverifyrequest.c 3364 nx_secure_dtls_send_record.c 3365 nx_secure_dtls_send_serverhello.c 3366 nx_secure_dtls_server_handshake.c 3367 nx_secure_dtls_session_cache.c 3368 nx_secure_dtls_session_create.c 3369 nx_secure_dtls_session_reset.c 3370 nx_secure_dtls_session_send.c 3371 nx_secure_dtls_verify_mac.c 3372 nx_secure_tls.h 3373 nx_secure_tls_client_handshake.c 3374 nx_secure_tls_client_psk_set.c 3375 nx_secure_tls_finished_hash_generate.c 3376 nx_secure_tls_generate_keys.c 3377 nx_secure_tls_generate_premaster_secret.c 3378 nx_secure_tls_key_material_init.c 3379 nx_secure_tls_local_certificate_remove.c 3380 nx_secure_tls_packet_allocate.c 3381 nx_secure_tls_process_certificate_verify.c 3382 nx_secure_tls_process_changecipherspec.c 3383 nx_secure_tls_process_clienthello.c 3384 nx_secure_tls_process_client_key_exchange.c 3385 nx_secure_tls_process_finished.c 3386 nx_secure_tls_process_remote_certificate.c 3387 nx_secure_tls_process_serverhello.c 3388 nx_secure_tls_process_serverhello_extensions.c 3389 nx_secure_tls_psk_add.c 3390 nx_secure_tls_psk_find.c 3391 nx_secure_tls_record_payload_encrypt.c 3392 nx_secure_tls_send_certificate_verify.c 3393 nx_secure_tls_send_clienthello.c 3394 nx_secure_tls_send_finished.c 3395 nx_secure_tls_send_serverhello.c 3396 nx_secure_tls_session_create.c 3397 nx_secure_tls_session_keys_set.c 3398 nx_secure_tls_session_reset.c 3399 nx_secure_tls_session_sni_extension_parse.c 3400 nx_secure_tls_verify_mac.c 3401 nx_secure_x509_certificate_initialize.c 3402 nx_secure_x509_certificate_revocation_list_parse.c 3403 nx_secure_x509_certificate_verify.c 3404 nx_secure_x509_crl_revocation_check.c 3405 nx_secure_x509_distinguished_name_compare.c 3406 nx_secure_x509_dns_name_initialize.c 3407 nx_secure_x509_oid_parse.c 3408 3409 Files are modified to add extension hook: 3410 nx_secure_tls.h 3411 nx_secure_tls_generate_keys.c 3412 nx_secure_tls_generate_premaster_secret.c 3413 nx_secure_tls_process_certificate_request.c 3414 nx_secure_tls_process_certificate_verify.c 3415 nx_secure_tls_process_clienthello.c 3416 nx_secure_tls_process_clienthello_extensions.c 3417 nx_secure_tls_process_serverhello_extensions.c 3418 nx_secure_tls_process_server_key_exchange.c 3419 nx_secure_tls_send_certificate_request.c 3420 nx_secure_x509.h 3421 nx_secure_x509_crl_verify.c 3422 3423 Files are modified to properly initialize the crypto control block and pass crypto handled 3424 into crypto internal functions: 3425 nx_secure_tls.h 3426 nx_secure_tls_finished_hash_generate.c 3427 nx_secure_tls_generate_keys.c 3428 nx_secure_tls_handshake_hash_init.c 3429 nx_secure_tls_handshake_hash_update.c 3430 nx_secure_tls_hash_record.c 3431 nx_secure_tls_process_certificate_verify.c 3432 nx_secure_tls_process_client_key_exchange.c 3433 nx_secure_tls_process_serverhello_extensions.c 3434 nx_secure_tls_process_server_key_exchange.c 3435 nx_secure_tls_record_hash_initialize.c 3436 nx_secure_tls_record_hash_update.c 3437 nx_secure_x509_certificate_verify.c 3438 nx_secure_x509_crl_verify.c 3439 3440 Files are modified to clear encryption key and other secret data: 3441 nx_secure_dtls_send_record.c 3442 nx_secure_dtls_session_end.c 3443 nx_secure_dtls_session_receive.c 3444 nx_secure_dtls_session_start.c 3445 nx_secure_tls_client_handshake.c 3446 nx_secure_tls_finished_hash_generate.c 3447 nx_secure_tls_generate_keys.c 3448 nx_secure_tls_handshake_process.c 3449 nx_secure_tls_hash_record.c 3450 nx_secure_tls_process_certificate_verify.c 3451 nx_secure_tls_process_record.c 3452 nx_secure_tls_record_hash_calculate.c 3453 nx_secure_tls_record_payload_encrypt.c 3454 nx_secure_tls_send_record.c 3455 nx_secure_tls_session_receive.c 3456 nx_secure_tls_session_receive_records.c 3457 nx_secure_tls_session_renegotiate.c 3458 nx_secure_x509_crl_verify.c 3459 3460 Files are added for crypto method self test: 3461 nx_secure_crypto_method_self_test_3des.c 3462 nx_secure_crypto_method_self_test_aes.c 3463 nx_secure_crypto_method_self_test_des.c 3464 nx_secure_crypto_method_self_test_hmac_md5.c 3465 nx_secure_crypto_method_self_test_hmac_sha.c 3466 nx_secure_crypto_method_self_test_md5.c 3467 nx_secure_crypto_method_self_test_prf.c 3468 nx_secure_crypto_method_self_test_rsa.c 3469 nx_secure_crypto_method_self_test_sha.c 3470 nx_secure_crypto_rng_self_test.c 3471 nx_secure_crypto_table_self_test.c 3472 nx_secure_crypto_table_self_test.h 3473 3474 Other modified files: 3475 nx_secure_dtls_process_clienthello.c Adjusted the function name. 3476 nx_secure_dtls_send_clienthello.c Fixed endian issue. 3477 nx_secure_module_hash_compute.c Compute the hash value of module. 3478 nx_secure_tls_ecc_send_client_key_exchange.c Fixed swapped PSK identity and hint parameters. 3479 nx_secure_tls_process_record.c Removed unused function parameter (internal API). 3480 nx_secure_tls_session_receive_records.c Removed unused function parameter (internal API). 3481 nx_secure_tls.h Supported ECC ciphersuite. 3482 Disabled AEAD by default. 3483 nx_secure_tls_api.h Modified the format slightly. 3484 nx_secure_tls_check_protocol_version.c Fix compiler errors for position independence. 3485 nx_secure_tls_ecc_process_certificate_request.c Fix the issue with no client certificate added. 3486 nx_secure_tls_finished_hash_generate.c Fixed the function pointer checking. 3487 nx_secure_tls_generate_keys.c Rearranged code sequence for static analysis. 3488 nx_secure_tls_generate_premaster_secret.c Rearranged code sequence for static analysis. 3489 nx_secure_tls_metadata_size_calculate.c Fixed the usage of crypto metadata for hash method. 3490 nx_secure_tls_newest_supported_version.c Moved version override support to a separate API. 3491 nx_secure_tls_process_certificate_verify.c Fixed compiler warnings. 3492 nx_secure_tls_process_client_key_exchange.c Used random premaster for incorrect message. 3493 Fixed endian issue. 3494 nx_secure_tls_process_clienthello.c Corrected the index of compress method. 3495 nx_secure_tls_process_clienthello_extensions.c Added buffer size checking. 3496 nx_secure_tls_process_record.c Modified the format slightly. 3497 nx_secure_tls_process_server_key_exchange.c Fixed endian issue. 3498 nx_secure_tls_process_serverhello_extensions.c Fixed compiler warnings. 3499 nx_secure_tls_protocol_version_get.c Moved version override support to a separate API. 3500 3501 nx_secure_tls_record_payload_decrypt.c Modified the format slightly. 3502 Fixed compiler issues. 3503 nx_secure_tls_record_payload_encrypt.c Added CBC mode checking for chained packet. 3504 Fixed packet buffer overflow while padding for AES-CBC. 3505 nx_secure_tls_remote_certificate_buffer_allocate.c 3506 Rearranged code sequence for static analysis. 3507 nx_secure_tls_send_clienthello_extensions.c Send ClientHello extensions. 3508 nx_secure_tls_send_record.c Skipped the hash when it was not required. 3509 nx_secure_tls_send_server_key_exchange.c Fixed endian issue. 3510 nx_secure_tls_send_serverhello_extensions.c Send ServerHello extensions. 3511 nx_secure_tls_send_serverhello.c Fixed compiler warnings. 3512 nx_secure_tls_session_create.c Fixed the usage of crypto metadata for hash method. 3513 nx_secure_tls_session_iv_size_get.c Fixed IV size for TLS 1.0. 3514 nx_secure_tls_session_keys_set.c Rearranged code sequence for static analysis. 3515 nx_secure_tls_session_reset.c Optimized the logic. 3516 nx_secure_tls_session_time_function_set.c Set a function pointer to get the current time. 3517 nx_secure_tls_verify_mac.c Supported zero-length TLS application data records. 3518 nx_secure_x509.c Fixed issues with parsing offsets and 3519 version check in parsing unique IDs. 3520 nx_secure_x509.h Fixed compiler warnings. 3521 nx_secure_x509_certificate_revocation_list_parse.c 3522 Improved CRL parsing. 3523 nx_secure_x509_certificate_initialize.c Released mutex when return. 3524 nx_secure_x509_oid_parse.c Fix compiler errors for position independence. 3525 nx_secure_x509_pkcs1_rsa_private_key_parse.c Removed obsolete comment. 3526 nxe_secure_tls_remote_certificate_buffer_allocate.c 3527 Rearranged code sequence for static analysis. 3528 nxe_secure_tls_session_create.c Checked duplicate creation. 3529 nxe_secure_tls_session_delete.c Verified the session before it is deleted. 3530 3531 Files renamed: 3532 3533 File Name in Release 5.11 File Name in Release 5.12 3534 nx_secure_tls_session_timestamp_function_set.c nx_secure_tls_session_time_function_set.c 3535 nxe_secure_tls_session_timestamp_function_set.c nxe_secure_tls_session_time_function_set.c 3536 353712/15/2017 NX Secure generic code version 5.11. This release includes the 3538 following major features: 3539 3540 Session renegotiation and the Secure Renegotiation Indication extension 3541 Full TLS session renegotiation is now supported, along with the 3542 Secure Renegotiation Indication extension which prevents certain 3543 Man-in-the-Middle attacks against renegotiation. 3544 3545 Certificate verification callback 3546 Added support to allow application to perform additional checks on 3547 a certificate provided by a remote host during the TLS handshake utilizing 3548 a user-supplied callback. 3549 3550 Session callbacks for TLS Client and TLS Server 3551 Added support to allow the application to process TLS extensions following 3552 the reception of a Hello message from the remote host. This allows for 3553 the application to respond to extensions requiring decisions such as 3554 the Server Name Indication (SNI) extension which allows a client to specify 3555 the name of the server it wishes to connect with. 3556 3557 Multiple Server Certificate support 3558 Added new API to support adding multiple device identity certificates, 3559 possibly with the same Subject (Common Name, etc.) using a new unique 3560 numeric identifier (supplied by the application). This allows a TLS server 3561 to host multiple identity certificates and choose an approriate certificate 3562 to send to a connecting client. Used with the TLS Server session callback, 3563 the application can search for the appropriate certificate during the TLS 3564 handshake, and the numeric identifier allows for name conflicts between 3565 multiple server certificates used for the same device. 3566 3567 Server Name Indication TLS extension 3568 Added support for the TLS Server Name Indication (SNI) extension. This 3569 extension allows a client to specify the server with which it is trying 3570 to connect, allowing the server to select parameters and credentials 3571 in the case where a single endpoint services multiple different server 3572 identities. 3573 3574 X.509 Certificate Revocation List parsing 3575 Added support for X.509 CRLs. A new API (used with the certificate verification 3576 callback) is provided to check revocation status for certificates recieved 3577 during the TLS handshake. 3578 3579 X.509 Key Usage and Extended Key Usage extensions support 3580 Added helper functions to allow an application to check the Key Usage 3581 and Extended Key Usage extensions in the certificate verification callback. 3582 The extensions allow an application to determine if a certificate supplied 3583 by a remote host is valid for a particular operation (e.g. identifying a 3584 TLS server). 3585 3586 DNS verification 3587 Added support for checking the URL top-level domain name for a remote host 3588 against the certificate provided by that remote host. A new API (used 3589 with the certificate verification callback) is provided to compare the TLD 3590 name of the URL used to access a host with the Common Name and subjectAltName 3591 DNSName fields in the X.509 certificate provided by the remote host. 3592 3593 Vendor-defined private key types 3594 Added support for private key types beyond the standard DER-encoded RSA 3595 keys. Vendor-defined private keys will be passed directly to the hardware 3596 driver for the appropriate cryptographic operations, with the assumption 3597 that all parsing, unwrapping, and processing of those keys will be handled 3598 by the hardware or hardware driver. 3599 3600 Files are modified or added to add session callbacks: 3601 nx_secure_tls.h 3602 nx_secure_tls_process_clienthello.c 3603 nx_secure_tls_session_client_callback_set.c 3604 nx_secure_tls_process_serverhello.c 3605 nx_secure_tls_session_server_callback_set.c 3606 nxe_secure_tls_session_client_callback_set.c 3607 nxe_secure_tls_session_server_callback_set.c 3608 3609 Files are modified to match the certificate ID: 3610 nx_secure_tls_local_certificate_remove.c 3611 nx_secure_tls_trusted_certificate_remove.c 3612 nx_secure_x509.h 3613 nx_secure_x509_certificate_chain_verify.c 3614 nx_secure_x509_certificate_list_add.c 3615 nx_secure_x509_certificate_list_find.c 3616 nx_secure_x509_certificate_list_remove.c 3617 nx_secure_x509_local_device_certificate_get.c 3618 nx_secure_x509_store_certificate_find.c 3619 nx_secure_x509_store_certificate_add.c 3620 nx_secure_x509_store_certificate_remove.c 3621 3622 Files are modified or added to support multiple extensions: 3623 nx_secure_tls.h 3624 nx_secure_tls_process_clienthello.c 3625 nx_secure_tls_process_clienthello_extensions.c 3626 nx_secure_tls_process_serverhello.c 3627 nx_secure_tls_process_serverhello_extensions.c 3628 nx_secure_tls_session_sni_extension_parse.c 3629 nx_secure_tls_session_sni_extension_set.c 3630 nxe_secure_tls_session_sni_extension_parse.c 3631 nxe_secure_tls_session_sni_extension_set.c 3632 3633 Files are modified or added to support DTLS: 3634 nxe_secure_dtls_packet_allocate.c 3635 nxe_secure_dtls_session_create.c 3636 nxe_secure_dtls_session_delete.c 3637 nxe_secure_dtls_session_end.c 3638 nxe_secure_dtls_session_receive.c 3639 nxe_secure_dtls_session_reset.c 3640 nxe_secure_dtls_session_send.c 3641 nxe_secure_dtls_session_start.c 3642 nx_secure_dtls_allocate_handshake_packet.c 3643 nx_secure_dtls_api.h 3644 nx_secure_dtls_client_handshake.c 3645 nx_secure_dtls.h 3646 nx_secure_dtls_hash_record.c 3647 nx_secure_dtls_packet_allocate.c 3648 nx_secure_dtls_process_clienthello.c 3649 nx_secure_dtls_process_handshake_header.c 3650 nx_secure_dtls_process_header.c 3651 nx_secure_dtls_process_helloverifyrequest.c 3652 nx_secure_dtls_process_record.c 3653 nx_secure_dtls_retransmit.c 3654 nx_secure_dtls_retransmit_queue_flush.c 3655 nx_secure_dtls_send_clienthello.c 3656 nx_secure_dtls_send_handshake_record.c 3657 nx_secure_dtls_send_helloverifyrequest.c 3658 nx_secure_dtls_send_record.c 3659 nx_secure_dtls_send_serverhello.c 3660 nx_secure_dtls_server_handshake.c 3661 nx_secure_dtls_session_cache.c 3662 nx_secure_dtls_session_create.c 3663 nx_secure_dtls_session_delete.c 3664 nx_secure_dtls_session_end.c 3665 nx_secure_dtls_session_receive.c 3666 nx_secure_dtls_session_reset.c 3667 nx_secure_dtls_session_send.c 3668 nx_secure_dtls_session_start.c 3669 nx_secure_dtls_verify_mac.c 3670 nx_secure_tls_check_protocol_version.c 3671 nx_secure_tls_finished_hash_generate.c 3672 nx_secure_tls_handshake_hash_update.c 3673 nx_secure_tls_newest_supported_version.c 3674 nx_secure_tls_process_certificate_request.c 3675 nx_secure_tls_send_certificate_verify.c 3676 3677 Files are modified or added to optimize the logic: 3678 nx_secure_tls_client_handshake.c 3679 nx_secure_tls_ciphersuite_lookup.c 3680 nx_secure_tls_finished_hash_generate.c 3681 nx_secure_tls_generate_keys.c 3682 nx_secure_tls_handshake_process.c 3683 nx_secure_tls_key_material_init.c 3684 nx_secure_tls_process_certificate_request.c 3685 nx_secure_tls_process_certificate_verify.c 3686 nx_secure_tls_process_changecipherspec.c 3687 nx_secure_tls_process_header.c 3688 nx_secure_tls_process_remote_certificate.c 3689 nx_secure_tls_send_alert.c 3690 nx_secure_tls_send_certificate.c 3691 nx_secure_tls_send_certificate_verify.c 3692 nx_secure_tls_send_changecipherspec.c 3693 nx_secure_tls_send_clienthello.c 3694 nx_secure_tls_send_record.c 3695 nx_secure_tls_send_server_key_exchange.c 3696 nx_secure_tls_send_serverhello.c 3697 nx_secure_tls_server_handshake.c 3698 nx_secure_tls_session_create.c 3699 nx_secure_tls_session_iv_size_get.c 3700 nx_secure_tls_session_keys_set.c 3701 nx_secure_tls_session_start.c 3702 nx_secure_tls_verify_mac.c 3703 nx_secure_x509_certificate_list_find.c 3704 nx_secure_x509_remote_endpoint_certificate_get.c 3705 nx_secure_x509_store_certificate_add.c 3706 nxe_secure_tls_packet_allocate.c 3707 nxe_secure_tls_session_create.c 3708 3709 Files are modified or added to support renegotiation: 3710 nx_secure_tls.h 3711 nx_secure_tls_client_handshake.c 3712 nx_secure_tls_process_clienthello.c 3713 nx_secure_tls_process_finished.c 3714 nx_secure_tls_send_clienthello.c 3715 nx_secure_tls_send_finished.c 3716 nx_secure_tls_send_hellorequest.c 3717 nx_secure_tls_send_serverhello.c 3718 nx_secure_tls_session_receive.c 3719 nx_secure_tls_session_receive_records.c 3720 nx_secure_tls_session_renegotiate.c 3721 nx_secure_tls_session_renegotiation_callback_set.c 3722 nx_secure_tls_session_reset.c 3723 nxe_secure_tls_session_renegotiate.c 3724 nxe_secure_tls_session_renegotiation_callback_set.c 3725 3726 Files are modified to support more ciphersuites: 3727 nx_secure_tls.h 3728 nx_secure_tls_process_clienthello.c 3729 nx_secure_tls_record_payload_decrypt.c 3730 nx_secure_tls_record_payload_encrypt.c 3731 nx_secure_tls_send_certificate_verify.c 3732 nx_secure_tls_send_client_key_exchange.c 3733 nx_secure_tls_send_clienthello.c 3734 3735 Files are modified to support ECJPAKE for DTLS: 3736 nx_secure_tls.h 3737 nx_secure_tls_generate_keys.c 3738 nx_secure_tls_generate_premaster_secret.c 3739 nx_secure_tls_process_client_key_exchange.c 3740 nx_secure_tls_process_server_key_exchange.c 3741 nx_secure_tls_psk_add.c 3742 nx_secure_tls_record_payload_decrypt.c 3743 nx_secure_tls_send_client_key_exchange.c 3744 nx_secure_tls_send_server_key_exchange.c 3745 nxe_secure_tls_psk_add.c 3746 3747 Files are modified to fix compiler warnings: 3748 nx_secure_tls_process_clienthello.c 3749 nx_secure_tls_record_payload_decrypt.c 3750 nx_secure_tls_remote_certificate_verify.c 3751 nx_secure_tls_send_certificate.c 3752 nx_secure_tls_session_end.c 3753 nx_secure_x509.c 3754 nx_secure_x509_certificate_chain_verify.c 3755 nx_secure_x509_certificate_list_add.c 3756 nx_secure_x509_certificate_list_find.c 3757 nx_secure_x509_certificate_list_remove.c 3758 nx_secure_x509_certificate_verify.c 3759 nx_secure_x509_remote_endpoint_certificate_get.c 3760 3761 Files are modified to support TLS protocol version override: 3762 nx_secure_tls_check_protocol_version.c 3763 nx_secure_tls_newest_supported_version.c 3764 nx_secure_tls_session_reset.c 3765 3766 Files are modified to support context specific ASN.1 tags: 3767 nx_secure_x509_asn1_tlv_block_parse.c 3768 nx_secure_x509_pkcs1_rsa_private_key_parse.c 3769 nx_secure_x509_pkcs7_decode.c 3770 3771 Files are added to hash record: 3772 nx_secure_tls_record_hash_calculate.c 3773 nx_secure_tls_record_hash_initialize.c 3774 nx_secure_tls_record_hash_update.c 3775 3776 Files are added to free remote certificate: 3777 nx_secure_tls_remote_certificate_free.c 3778 nx_secure_tls_remote_certificate_free_all.c 3779 nxe_secure_tls_remote_certificate_free_all.c 3780 3781 Files are added to support vendor-defined private key type: 3782 nx_secure_tls_process_client_key_exchange.c 3783 nx_secure_tls_send_certificate_verify.c 3784 nx_secure_tls_send_client_key_exchange.c 3785 nx_secure_x509.c 3786 nx_secure_x509_certificate_initialize.c 3787 nx_secure_x509_certificate_verify.c 3788 nx_secure_x509_pkcs1_rsa_private_key_parse.c 3789 nxe_secure_x509_certificate_initialize.c 3790 3791 Files are added to support empty certificate messages: 3792 nx_secure_tls_send_certificate.c 3793 nx_secure_tls_send_certificate_verify.c 3794 3795 Files are added for server certificate API: 3796 nx_secure_tls_server_certificate_add.c 3797 nx_secure_tls_server_certificate_find.c 3798 nx_secure_tls_server_certificate_remove.c 3799 nxe_secure_tls_server_certificate_add.c 3800 nxe_secure_tls_server_certificate_find.c 3801 nxe_secure_tls_server_certificate_remove.c 3802 3803 Files are modified to add compare bit fields: 3804 nx_secure_tls_send_certificate.c 3805 nx_secure_x509.h 3806 nx_secure_x509_certificate_chain_verify.c 3807 nx_secure_x509_certificate_list_remove.c 3808 nx_secure_x509_distinguished_name_compare.c 3809 nx_secure_x509_remote_endpoint_certificate_get.c 3810 3811 Other modified files: 3812 nx_secure_tls.h Supported to configure symbols for PSK buffers. 3813 Sorted the functions by alphabet order. 3814 nx_secure_tls_api.h Sorted the API by alphabet order. 3815 nx_secure_tls_check_protocol_version.c Supported TLS protocol version override. 3816 nx_secure_tls_client_handshake.c Handled the return values. 3817 Fixed packet leak issue. 3818 nx_secure_tls_initialize.c Fixed the function name. 3819 nx_secure_port.h Fixed a typo. 3820 nx_secure_tls_generate_keys.c Added additional check for missing PRF. 3821 nx_secure_tls_map_error_to_alert.c Updated mapping for certificate 3822 verification failure. 3823 nx_secure_tls_process_client_key_exchange.c Updated to new crypto API. 3824 nx_secure_tls_process_record.c Fixed record length check. 3825 nx_secure_tls_psk_find.c Returned the first associated PSK when 3826 no hint is received. 3827 nx_secure_tls_record_payload_encrypt.c Supported data in packet chain. 3828 nx_secure_tls_remote_certificate_verify.c Added expiration data check. 3829 nx_secure_tls_send_certificate.c Released mutex before block operation. 3830 nx_secure_tls_send_clienthello.c Supported extensions. 3831 nx_secure_tls_send_handshake_record.c Released packet on error. 3832 nx_secure_tls_send_record.c Let the caller release packet when TCP send failed. 3833 nx_secure_tls_send_serverhello.c Supported extensions. 3834 nx_secure_tls_server_handshake.c Added support for server-side client 3835 certificate verification. 3836 Released packet on send failed. 3837 nx_secure_tls_session_end.c Improved TLS session shutdown. 3838 Released packet on send failed. 3839 nx_secure_tls_session_reset.c Cleaned up existing certificate. 3840 nx_secure_x509.c Added support for extension parsing. 3841 nx_secure_x509.h Added support for extension parsing and fixed typos for API names. 3842 nx_secure_x509_certificate_list_add.c Fixed the logic to add certificate with duplicate ID. 3843 nx_secure_x509_distinguished_name_compare.c Supported empty name comparison. 3844 Improved the distinguished name comparison logic. 3845 nx_secure_x509_find_certificate_methods.c Updated API to take an ID for the 3846 algorithm desired. 3847 nx_secure_x509_local_device_certificate_get.c Used pre-defined symbols instead of 3848 hardcoded values. 3849 nx_secure_x509_pkcs7_decode.c Fixed signature length check. 3850 3851 Other added files: 3852 nx_secure_tls_active_certificate_set.c Set the active local certificate. 3853 nx_secure_tls_local_certificate_find.c New API to find certificates by Common Name. 3854 nx_secure_tls_send_certificate_request.c Populated an NX_PACKET with a CertificateRequest message. 3855 nx_secure_tls_session_certificate_callback_set.c 3856 Set up a function pointer that TLS will 3857 invoke when a certificate is received. 3858 nx_secure_tls_session_client_verify_disable.c Disabled client certificate verification. 3859 nx_secure_tls_session_client_verify_enable.c Enabled client certificate verification. 3860 nx_secure_tls_session_protocol_version_override.c 3861 Overrided the TLS protocol version. 3862 nx_secure_x509_certificate_revocation_list_parse.c 3863 Supported revocation list parse. 3864 nx_secure_x509_common_name_dns_check.c Checked a certificate's Common Name 3865 against a Top Level Domain name (TLD). 3866 nx_secure_x509_crl_revocation_check.c Supported revocation check. 3867 nx_secure_x509_crl_verify.c Verified CRL. 3868 nx_secure_x509_distinguished_name_parse.c Parsed a DER-encoded X.509 Distinguished Name. 3869 nx_secure_x509_dns_name_initialize.c Initialized an X.509 DNS name. 3870 nx_secure_x509_expiration_check.c Checked a certificate's validity period. 3871 nx_secure_x509_extended_key_usage_extension_parse.c 3872 Parse through an X.509 certificate for 3873 an Extended KeyUsage extension. 3874 nx_secure_x509_extension_find.c Added support for X.509 extension parsing. 3875 nx_secure_x509_key_usage_extension_parse.c Parse through an X.509 certificate for 3876 a KeyUsage extension. 3877 nx_secure_x509_local_certificate_find.c Searched a given certificate store. 3878 nx_secure_x509_oid_parse.c Parsed a DER-encoded Object Identifier string. 3879 nx_secure_x509_subject_alt_names_find.c Searched X.509 subjectAltName. 3880 nx_secure_x509_wildcard_compare.c Compared wildcard names. 3881 nxe_secure_tls_active_certificate_set.c Set the active local certificate. 3882 nxe_secure_tls_local_certificate_find.c New API to find local certificate by Common Name. 3883 nxe_secure_tls_session_certificate_callback_set.c 3884 Set up a function pointer that TLS will 3885 invoke when a certificate is received. 3886 nxe_secure_tls_session_client_verify_disable.c Disabled client certificate verification. 3887 nxe_secure_tls_session_client_verify_enable.c Enabled client certificate verification. 3888 nxe_secure_tls_session_protocol_version_override.c 3889 Overrided the TLS protocol version. 3890 nxe_secure_x509_common_name_dns_check.c Checked a certificate's Common Name 3891 against a Top Level Domain name (TLD). 3892 nxe_secure_x509_crl_revocation_check.c Supported revocation check. 3893 nxe_secure_x509_dns_name_initialize.c Initialized an X.509 DNS name. 3894 nxe_secure_x509_extension_find.c Added support for X.509 extension parsing. 3895 nxe_secure_x509_extended_key_usage_extension_parse.c 3896 Parse through an X.509 certificate for 3897 an Extended KeyUsage extension. 3898 nxe_secure_x509_key_usage_extension_parse.c Parse through an X.509 certificate for 3899 a KeyUsage extension. 3900 3901 Files renamed: 3902 3903 File Name in Release 5.10 File Name in Release 5.11 3904 nx_secure_tls_process_server_certificate.c nx_secure_tls_process_remote_certificate.c 3905 390606/09/2017 Initial NX Secure generic code version 5.10. 3907 3908 39093. NetXDuo Secure Crypto 3910 391108/15/2019 NX Secure generic code version 5.12. This release includes the 3912 following major features: 3913 3914 Files are modified to provide consistent error checking of return 3915 values from generic NX_CRYPTO cipher routine APIs: 3916 nx_crypto_const.h 3917 nx_crypto_drbg.c 3918 nx_crypto_ecjpake.c 3919 nx_crypto_ecjpake.h 3920 nx_crypto_phash.c 3921 nx_crypto_pkcs1_v1.5.c 3922 3923 Files are modified to improve error checking: 3924 nx_crypto_ec.c 3925 nx_crypto_ec.h 3926 nx_crypto_ecdh.c 3927 nx_crypto_ecdsa.c 3928 nx_crypto_ecjpake.c 3929 3930 Files are modified to fix the compiler warnings for cast-function-type: 3931 nx_crypto_3des.c 3932 nx_crypto_des.c 3933 nx_crypto_des.h 3934 nx_crypto_md5.c 3935 nx_crypto_md5.h 3936 nx_crypto_sha1.c 3937 nx_crypto_sha1.h 3938 3939 Files are modified to address issues raised by static anaylsis tools: 3940 nx_crypto_aes.c 3941 nx_crypto_cbc.c 3942 nx_crypto_drbg.c 3943 nx_crypto_ec.c 3944 nx_crypto_ecjpake.c 3945 nx_crypto_huge_number.c 3946 nx_crypto_phash.c 3947 nx_crypto_sha5.c 3948 3949 Files are modified to add an "extern 'C'" wrapper for C++ compilers: 3950 nx_crypto.h 3951 nx_crypto_3des.h 3952 nx_crypto_const.h 3953 nx_crypto_des.h 3954 nx_crypto_ecdsa.h 3955 nx_crypto_hkdf.h 3956 nx_crypto_hmac_md5.h 3957 nx_crypto_hmac_sha1.h 3958 nx_crypto_hmac_sha2.h 3959 nx_crypto_hmac_sha5.h 3960 nx_crypto_md5.h 3961 nx_crypto_phash.h 3962 nx_crypto_pkcs1_v1.5.h 3963 nx_crypto_sha1.h 3964 nx_crypto_sha2.h 3965 nx_crypto_sha5.h 3966 nx_crypto_tls_prf_1.h 3967 nx_crypto_tls_prf_sha256.h 3968 nx_crypto_tls_prf_sha384.h 3969 nx_crypto_tls_prf_sha512.h 3970 3971 Files are modified to avoid unaligned memory access: 3972 nx_crypto_aes.c 3973 nx_crypto_ccm.c 3974 nx_crypto_ctr.c 3975 nx_crypto_drbg.c 3976 nx_crypto_xcbc_mac.c 3977 3978 Files are modified or added to be FIPS 140-2 compliant: 3979 nx_crypto.h 3980 nx_crypto_3des.c 3981 nx_crypto_3des.h 3982 nx_crypto_aes.c 3983 nx_crypto_cbc.c 3984 nx_crypto_cbc.h 3985 nx_crypto_ccm.c 3986 nx_crypto_ccm.h 3987 nx_crypto_const.h 3988 nx_crypto_ctr.c 3989 nx_crypto_ctr.h 3990 nx_crypto_des.c 3991 nx_crypto_des.h 3992 nx_crypto_dh.c 3993 nx_crypto_dh.h 3994 nx_crypto_ec.c 3995 nx_crypto_ec.h 3996 nx_crypto_ecjpake.c 3997 nx_crypto_ecjpake.h 3998 nx_crypto_generic_ciphersuites.c 3999 nx_crypto_hmac.c 4000 nx_crypto_hmac.h 4001 nx_crypto_hmac_md5.c 4002 nx_crypto_hmac_md5.h 4003 nx_crypto_hmac_sha1.c 4004 nx_crypto_hmac_sha1.h 4005 nx_crypto_hmac_sha2.c 4006 nx_crypto_hmac_sha2.h 4007 nx_crypto_hmac_sha5.c 4008 nx_crypto_hmac_sha5.h 4009 nx_crypto_huge_number.c 4010 nx_crypto_huge_number.h 4011 nx_crypto_huge_number_extended.c 4012 nx_crypto_initialize.c 4013 nx_crypto_md5.c 4014 nx_crypto_md5.h 4015 nx_crypto_method_self_test.c 4016 nx_crypto_method_self_test.h 4017 nx_crypto_method_self_test_3des.c 4018 nx_crypto_method_self_test_aes.c 4019 nx_crypto_method_self_test_des.c 4020 nx_crypto_method_self_test_drbg.c 4021 nx_crypto_method_self_test_ecdh.c 4022 nx_crypto_method_self_test_ecdsa.c 4023 nx_crypto_method_self_test_hmac_md5.c 4024 nx_crypto_method_self_test_hmac_sha.c 4025 nx_crypto_method_self_test_md5.c 4026 nx_crypto_method_self_test_pkcs1.c 4027 nx_crypto_method_self_test_prf.c 4028 nx_crypto_method_self_test_rsa.c 4029 nx_crypto_method_self_test_sha.c 4030 nx_crypto_module_start.c 4031 nx_crypto_null.h 4032 nx_crypto_null_cipher.c 4033 nx_crypto_phash.c 4034 nx_crypto_phash.h 4035 nx_crypto_pkcs1_v1.5.c 4036 nx_crypto_pkcs1_v1.5.h 4037 nx_crypto_rsa.c 4038 nx_crypto_sha1.c 4039 nx_crypto_sha1.h 4040 nx_crypto_sha2.c 4041 nx_crypto_sha2.h 4042 nx_crypto_sha5.c 4043 nx_crypto_sha5.h 4044 nx_crypto_tls_prf_1.c 4045 nx_crypto_tls_prf_1.h 4046 nx_crypto_tls_prf_sha256.c 4047 nx_crypto_tls_prf_sha256.h 4048 nx_crypto_xcbc_mac.c 4049 nx_crypto_xcbc_mac.h 4050 4051 Files are modified to add operation method for elliptic curve cryptography: 4052 nx_crypto.h 4053 nx_crypto_const.h 4054 nx_crypto_ec.c 4055 nx_crypto_ec.h 4056 nx_crypto_ecjpake.c 4057 nx_crypto_ecjpake.h 4058 nx_crypto_generic_ciphersuites.c 4059 4060 Other modified files: 4061 nx_crypto.h Avoided unexpected optimization on memset. 4062 nx_crypto_aes.h Split operation functions for different modes. 4063 nx_crypto_aes.c Split operation functions for different modes. 4064 nx_crypto_const.h Set algorithm IDs to unique values. 4065 nx_crypto_dh.c Fixed key length check. 4066 nx_crypto_ecjpake.c Generated key pair using extra bits. 4067 nx_crypto_generic_ciphersuites.c Split crypto methods to nx_crypto_methods.c, 4068 remove CCM ciphersuites when AEAD was disabled. 4069 nx_crypto_huge_number.c Optimized the logic. 4070 nx_crypto_method_self_test_drbg.c Added return value checking of nx_crypto_init. 4071 nx_crypto_rsa.h Modified to support RSA 4096 bits by default. 4072 nx_crypto_generic_ciphersuites.c Removed CCM ciphersuites when AEAD was disabled. 4073 4074 Other added files: 4075 nx_crypto_drbg.c Supported DRBG. 4076 nx_crypto_drbg.h Supported DRBG. 4077 nx_crypto_ecdh.c Supported ECDH. 4078 nx_crypto_ecdh.h Supported ECDH. 4079 nx_crypto_ecdsa.c Supported ECDSA. 4080 nx_crypto_ecdsa.h Supported ECDSA. 4081 nx_crypto_methods.c Split from nx_crypto_generic_ciphersuites.c 4082 nx_crypto_tls_prf_sha384.c Supported PRF SHA384 4083 nx_crypto_tls_prf_sha384.h Supported PRF SHA384 4084 nx_crypto_tls_prf_sha512.c Supported PRF SHA512 4085 nx_crypto_tls_prf_sha512.h Supported PRF SHA512 4086 408712/15/2017 Initial Crypto generic code version 5.11. 4088 4089 40904. NetXDuo Addons 4091 4092Release 5.12 08-15-2019 4093 4094 demo_netx_auto_ip.c Improved string length verification. 4095 nx_auto_ip.c Modified comments. 4096 nx_auto_ip.h Modified comments. 4097 4098 bsd_demo_raw.c Improved string length verification. 4099 bsd_demo_tcp.c Improved string length verification. 4100 bsd_demo_udp.c Improved string length verification. 4101 nxd_bsd.h Supported BSD raw socket. 4102 Added C++ extern wrapper. 4103 nxd_bsd.c Supported BSD raw socket. 4104 Added mutex protection. 4105 Fixed BSD time calculation. 4106 Improved packet length verification. 4107 Modified API functions: 4108 connect - Initialized the local interface after bind. 4109 getaddrinfo - Fixed NULL pointer access. 4110 inet_pton - Corrected dst buffer check. 4111 4112 nxd_dhcp_client.c Improved string length verification. 4113 Improved packet length verification. 4114 Corrected the logic for checking DHCP message. 4115 Fixed the outgoing interface. 4116 Function is modified: 4117 _nx_dhcp_client_send_with_zero_source_address() 4118 Added check for invalid address. 4119 nxd_dhcp_server.c Improved string length verification. 4120 Corrected the interface for sending response in _nx_dhcp_respond_to_client_message(). 4121 demo_netxduo_dhcpv6.c Improved string length verification. 4122 nxd_dhcpv6_client.c Improved string length verification. 4123 Validated the available payload in _nx_dhcpv6_send_request(). 4124 Improved packet length verification. 4125 nxd_dhcpv6_client.h Improved string length verification. 4126 nxd_dhcpv6_server.c Added new APIs to improve buffer/string length verification. 4127 Validated the DUID private length in _nx_dhcpv6_add_client_record(). 4128 Improved packet length verification. 4129 nxd_dhcpv6_server.h Added new APIs to improve buffer/string length verification. 4130 4131 nxd_dns.h Improved internal logic. 4132 nxd_dns.c Improved packet payload verification in _nx_dns_packet_pool_set(). 4133 Improved string length verification. 4134 Functions are modified: 4135 _nx_dns_cache_delete_string() 4136 _nx_dns_cache_find_answer() 4137 _nx_dns_host_by_address_get_internal() 4138 _nx_dns_process_a_type() 4139 _nx_dns_process_aaaa_type() 4140 _nx_dns_process_cname_type() 4141 _nx_dns_process_mx_type() 4142 _nx_dns_process_ns_type() 4143 _nx_dns_process_soa_type() 4144 _nx_dns_process_srv_type() 4145 _nx_dns_process_txt_type() 4146 _nx_dns_question_add() 4147 _nx_dns_send_query_by_address() 4148 Improved internal logic. 4149 Functions are modified: 4150 _nx_dns_send_query_by_address() 4151 _nx_dns_send_query_get_rdata_by_name() 4152 _nx_dns_name_string_unencode() 4153 _nxde_dns_host_by_name_get() 4154 Fixed compiler warnings in _nx_dns_process_txt_type(). 4155 4156 demo_netxduo_ftp.c Improved string length verification. 4157 demo_netxduo_ftp_client_pasv.c Improved string length verification. 4158 nxd_ftp_client.c Improved internal logic. 4159 Improved string length verification. 4160 Improved buffer length verification. 4161 nxd_ftp_client.h Removed FileX dependency. 4162 Improved string length verification. 4163 nxd_ftp_server.c Fixed a bug when there were more than one connection. 4164 Fixed socket state check on receiving RST packet. 4165 Improved string length verification. 4166 Improved buffer length verification. 4167 4168 nxd_http_client.h Included necessary headers. 4169 Improved string length verification. 4170 nxd_http_server.h Included necessary headers. 4171 Improved string length verification. 4172 nxd_http_client.c Added check of null pointer for username and password. 4173 Improved packet length verification. 4174 Improved string length verification. 4175 nxd_http_server.c Fixed buffer size for DELETE method in _nx_http_server_digest_authenticate(). 4176 Fixed compiler warnings in _nx_http_server_hex_ascii_convert(). 4177 Improved logic to avoid timing attack in _nx_http_server_digest_authenticate() 4178 and _nx_http_server_basic_authenticate(). 4179 Improved string length verification. 4180 Created function nx_http_server_type_retrieve() as 4181 an alternative to nx_http_server_type_get(). 4182 Added digest authentication callback support. 4183 Improved packet length verification. 4184 4185 demo_netx_duo_mdns.c Added simultaneous interface support. 4186 nxd_mdns.c Added local resource records as known answer. 4187 Functions are modified: 4188 _nx_mdns_data_send() 4189 _nx_mdns_known_answer_find() 4190 Initialized is_present to fix the bug for processing service change notify. 4191 Functions is modified: 4192 _nx_mdns_cache_add_resource_record() 4193 Corrected the cache pointer. 4194 Functions is modified: 4195 _nx_mdns_service_lookup() 4196 Added simultaneous interface support. 4197 Functions are modified or added or deleted: 4198 _nx_mdns_additional_a_aaaa_find() 4199 _nx_mdns_additional_resource_record_find() 4200 _nx_mdns_address_change_process() 4201 _nx_mdns_announcing_send() 4202 _nx_mdns_cache_add_resource_record() 4203 _nx_mdns_cache_find_resource_record() 4204 _nx_mdns_continuous_query() 4205 _nx_mdns_create() 4206 _nx_mdns_data_send() 4207 _nx_mdns_disable() 4208 _nx_mdns_enable() 4209 _nx_mdns_host_address_get() 4210 _nx_mdns_host_name_register() 4211 _nx_mdns_known_answer_find() 4212 _nx_mdns_one_shot_query() 4213 _nx_mdns_packet_process() 4214 _nx_mdns_packet_rr_process() 4215 _nx_mdns_packet_rr_set() 4216 _nx_mdns_packet_send() 4217 _nx_mdns_probing_send() 4218 _nx_mdns_query_check() 4219 _nx_mdns_query_send() 4220 _nx_mdns_response_send() 4221 _nx_mdns_rr_a_aaaa_add() 4222 _nx_mdns_rr_nsec_add() 4223 _nx_mdns_rr_parameter_set() 4224 _nx_mdns_rr_ptr_add() 4225 _nx_mdns_rr_txt_add() 4226 _nx_mdns_service_add() 4227 _nx_mdns_service_addition_info_get() 4228 _nx_mdns_service_change_notify_process() 4229 _nx_mdns_service_continuous_query() 4230 _nx_mdns_service_delete() 4231 _nx_mdns_service_interface_delete() 4232 _nx_mdns_service_lookup() 4233 _nx_mdns_service_one_shot_query() 4234 _nx_mdns_service_query_stop() 4235 _nx_mdns_timer_event_process() 4236 _nx_mdns_thread_entry() 4237 _nxe_mdns_service_add() 4238 Fixed compiler warnings in _nx_mdns_ipv6_address_change_notify(). 4239 Fixed ipv6 address string. 4240 Functions are modified: 4241 _nx_mdns_cache_delete_rr_string() 4242 _nx_mdns_cache_find_resource_record() 4243 _nx_mdns_packet_rr_data_set() 4244 _nx_mdns_rr_a_aaaa_add() 4245 Improve string length verification. 4246 Functions are modified: 4247 _nx_mdns_create() 4248 _nx_mdns_disable() 4249 _nxe_mdns_create() 4250 _nxe_mdns_domain_name_set() 4251 _nxe_mdns_service_add() 4252 _nx_mdns_service_add() 4253 _nxe_mdns_service_delete() 4254 _nx_mdns_service_interface_delete() 4255 _nxe_mdns_service_one_shot_query() 4256 _nx_mdns_service_one_shot_query() 4257 _nx_mdns_one_shot_query() 4258 _nxe_mdns_service_continuous_query() 4259 _nx_mdns_continuous_query() 4260 _nxe_mdns_service_query_stop() 4261 _nx_mdns_service_query_stop() 4262 _nxe_mdns_service_lookup() 4263 _nx_mdns_service_lookup() 4264 _nxe_mdns_host_address_get() 4265 _nx_mdns_host_address_get() 4266 _nx_mdns_rr_ptr_add() 4267 _nx_mdns_rr_srv_add() 4268 _nx_mdns_rr_txt_add() 4269 _nx_mdns_rr_nsec_add() 4270 _nx_mdns_rr_parameter_set() 4271 _nx_mdns_service_name_resolve() 4272 _nx_mdns_service_name_assemble() 4273 _nx_mdns_host_name_register() 4274 _nx_mdns_timer_event_process() 4275 _nx_mdns_probing_send() 4276 _nx_mdns_packet_rr_add() 4277 _nx_mdns_packet_rr_set() 4278 _nx_mdns_packet_rr_process() 4279 _nx_mdns_packet_rr_data_set() 4280 _nx_mdns_conflict_process() 4281 _nx_mdns_service_change_notify_process() 4282 _nx_mdns_service_addition_info_get() 4283 _nx_mdns_cache_add_resource_record() 4284 _nx_mdns_cache_delete_string() 4285 _nx_mdns_known_answer_find() 4286 _nx_mdns_query_check() 4287 _nx_mdns_service_mask_match() 4288 Improve packet length verification. 4289 Functions are modified: 4290 _nx_mdns_packet_create() 4291 _nx_mdns_packet_process() 4292 nxd_mdns.h Added simultaneous interface support. 4293 Fixed ipv6 address string. 4294 Improve string length verification. 4295 4296 nxd_mqtt_client.c Corrected the mutex processing for receiving MQTT CONNACK. 4297 Added packet receive notify. 4298 Checked return status of TLS setup in _nxd_mqtt_client_secure_connect(). 4299 Deleted TLS session when disconnecting MQTT in _nxd_mqtt_process_disconnect(). 4300 Deleted TLS session when MQTT connect failed. 4301 Improved internal logic. 4302 Corrected timeout for TLS session. 4303 Improved packet length verification. 4304 nxd_mqtt_client.h Added packet receive notify. 4305 Changed the return type of tls_setup to UINT. 4306 4307 demo_netx_nat.c Improved string length verification. 4308 4309 nxd_pop3_client.c Improved packet length verification. 4310 Improved internal logic. 4311 Improved string length verification. 4312 nxd_pop3_client.h Improved string length verification. 4313 4314 demo_netx_ppp.c Improved string length verification. 4315 Improved the logic. 4316 4317 4318 nx_ppp.c Improved buffer length verification. 4319 Functions are modified or added: 4320 _nx_ppp_ipcp_configure_check() 4321 _nx_ppp_lcp_configuration_retrieve() 4322 Improved packet length verification. 4323 Functions are modified or added: 4324 _nx_ppp_chap_challenge_respond() 4325 _nx_ppp_chap_challenge_send() 4326 _nx_ppp_create() 4327 _nx_ppp_ipcp_configure_check() 4328 _nx_ppp_lcp_code_reject() 4329 _nx_ppp_lcp_configuration_retrieve() 4330 _nx_ppp_lcp_configure_reply_send() 4331 _nx_ppp_pap_authentication_request() 4332 _nx_ppp_ping_request() 4333 _nx_ppp_receive_packet_process() 4334 Improved internal logic. 4335 Function is modified: 4336 _nx_ppp_receive_packet_get() 4337 Fixed the bug for chained packet. 4338 Function is modified: 4339 _nx_ppp_netx_packet_transfer() 4340 Improved string length verification. 4341 Functions are modified: 4342 _nx_ppp_pap_authentication_request() 4343 _nx_ppp_pap_login_valid() 4344 _nx_ppp_chap_challenge_send() 4345 _nx_ppp_chap_challenge_respond() 4346 _nx_ppp_chap_challenge_validate() 4347 _nx_ppp_pap_login_valid() 4348 nx_ppp.h Improved string length verification. 4349 Improved packet length verification. 4350 4351 nx_pppoe_client.c Improved string length verification. 4352 Corrected the function name. 4353 Improved internal logic. 4354 Improved buffer length verification. 4355 Fixed system state check. 4356 nx_pppoe_client.h Improved internal logic. 4357 Improved string length verification. 4358 nx_pppoe_server.c Improved string length verification. 4359 Improved buffer length verification. 4360 4361 nxd_smtp_client.h Improved string length verification. 4362 nxd_smtp_client.c Improved string length verification. 4363 Improved buffer length verification. 4364 4365 nxd_snmp.h Improved string length verification. 4366 4367 nxd_snmp.c Improved buffer length verification. 4368 Improved string length verification. 4369 Fixed a compiler warning. 4370 Modified nx_snmp_version_3_process to check for string size before writing PDU Engine name. 4371 4372 demo_netxduo_sntp_client.c Fixed compiler warnings. 4373 nxd_sntp_client.c Improved packet length verification. 4374 Corrected the length of memset. 4375 Adjusted local time before updating SNTP server time. 4376 Kept microseconds precision while adding milliseconds. 4377 nxd_sntp_client.h Adjusted local time before updating SNTP server time. 4378 4379 nxd_telnet_server.c Improved packet length verification. 4380 Fixed socket state check on receiving RST packet. 4381 Fixed a bug when there were more than one connection. 4382 4383 demo_netxduo_tftp.c Improved string length verification. 4384 nxd_tftp_client.c Improved string length verification. 4385 Improved packet length verification. 4386 nxd_tftp_server.c Improved string length verificaiton. 4387 Improved packet length verification. 4388 4389 demo_netxduo_https.c Improved string length verification. 4390 nx_web_http_common.h Improved string length verification. 4391 nx_web_http_client.c Deleted TLS session in _nx_web_http_client_error_exit(). 4392 Cleared request packet. 4393 Functions are modified: 4394 _nx_web_http_client_delete() 4395 _nx_web_http_client_request_initialize() 4396 _nx_web_http_client_cleanup() 4397 Added check of client state in _nx_web_http_client_response_body_get(). 4398 Checked if request packet was allocated. 4399 Functions are modified: 4400 _nx_web_http_client_request_header_add() 4401 _nxe_web_http_client_request_send() 4402 _nx_web_http_client_request_send() 4403 Improved packet length verification. 4404 Fixed the issue of reconnection. 4405 Improved string length verification. 4406 Fixed the bug of packet release. 4407 nx_web_http_client.h Included necessary headers. 4408 Improved string length verification. 4409 nx_web_http_server.c Check content length in _nxe_web_http_server_packet_content_find(). 4410 Fixed buffer size for DELETE method in _nx_web_http_server_digest_authenticate(). 4411 Improved logic to avoid timing attack in _nx_web_http_server_digest_authenticate() 4412 and _nx_web_http_server_basic_authenticate(). 4413 Added digest authentication callback support. 4414 Improved packet length verification. 4415 Fixed return value when suffix was not found. 4416 Improved string length verification. 4417 Created function nx_web_http_server_type_retrieve() as 4418 an alternative to nx_web_http_server_type_get(). 4419 nx_web_http_server.h Included necessary headers. 4420 Added digest authentication callback support. 4421 Improved string length verification. 4422 nx_tcpserver.c Fixed socket state check on receiving RST packet. 4423 Fixed session reuse issue in _nx_tcpserver_data_process(). 4424 4425 4426Release 5.11 07-15-2018 4427 4428 nx_auto_ip.c Modified comments. 4429 nx_auto_ip.h Modified comments. 4430 4431 bsd_demo_raw.c Supported for disabling IPv4 feature. 4432 bsd_demo_tcp.c Supported for disabling IPv4 feature. 4433 bsd_demo_udp.c Supported for disabling IPv4 feature. 4434 nxd_bsd.c Improved internal logic. 4435 Modified API functions: 4436 getaddrinfo - Fixed a bug that AF_INET info was returned even ai_family was set to AF_INET6. 4437 inet_pton - Fixed compiler warnings. 4438 Fixed endian issue for IPv6 address when ntohl is not defined. 4439 nx_bsd_socket_set_inherited_settings - Removed NX_BSD_INHERIT_LISTENER_SOCKET_SETTINGS. 4440 nx_bsd_raw_packet_info_extract - Used interface index since nx_interface_ip_instance 4441 is removed from interface structure. 4442 Removed NetX trace event. 4443 Supported for disabling IPv4 feature. 4444 Modified internal functions: 4445 nx_bsd_udp_receive_notify - used API to receive UDP packet to verify checksum. 4446 nx_bsd_udp_packet_received - used API to receive UDP packet to verify checksum. 4447 _nxd_bsd_ipv6_packet_send - Checked interface for router lookup. 4448 Moved destination and ND cache tables to IP structure. 4449 nxd_bsd.h Removed NX_BSD_INHERIT_LISTENER_SOCKET_SETTINGS which is now enabled, not optional 4450 and NX_BSD_TIMED_WAIT_TIMEOUT - no longer in use. 4451 Used time_t from time.h. 4452 4453 demo_netxduo_dhcp.c Corrected the host name. 4454 nxd_dhcp_client.c Returned the option value as host byte order. 4455 Function is modified: 4456 _nx_dhcp_interface_user_option_retrieve() 4457 Fixed compiler errors when event trace is enabled. 4458 Function is modified: 4459 _nx_dhcp_client_send_with_zero_source_address() 4460 Added a check for invalid characters in the host name. 4461 Function is modified: 4462 _nx_dhcp_create() 4463 Improved packet length verification. 4464 Function is modified: 4465 _nx_dhcp_packet_process() 4466 Supported for adding user supplied options. 4467 Functions are added or modified: 4468 _nx_dhcp_send_request_internal() 4469 _nx_dhcp_user_option_add_callback_set() 4470 _nxe_dhcp_user_option_add_callback_set() 4471 Fixed a bug that mutex is not released before return. 4472 Function is modified: 4473 _nx_dhcp_client_send_with_zero_source_address() 4474 nxd_dhcp_client.h Added a status for invalid characters in the host name. 4475 Supported for adding user supplied options. 4476 Updated the default value of NX_DHCP_CLIENT_MAX_RECORDS. 4477 nxd_dhcp_server.c Fixed an error checking for interface index in _nx_dhcp_create_server_ip_address_list(). 4478 Removed #if 0 code for feature never implemented in 4479 _nx_dhcp_server_extract_information(). 4480 Improved internal logic. 4481 Fixed a compiler warning. 4482 nxd_dhcp_server.h Removed unused symbol:NX_DHCP_CLIENT_IDENTIFIER_MAX. 4483 demo_netxduo_dhcpv6.c Corrected the symbol name and value for hardware type. 4484 demo_netxduo_dhcpv6_client.c Corrected the symbol name and value for hardware type. 4485 nxd_dhcpv6_client.c Corrected the symbol name and value for hardware type. 4486 Function is modified: 4487 _nxe_dhcpv6_create_client_duid() 4488 Added support for EUI-64 hardware type. 4489 Functions are modified: 4490 _nx_dhcpv6_add_client_duid() 4491 _nx_dhcpv6_add_server_duid() 4492 _nx_dhcpv6_create_client_duid() 4493 _nx_dhcpv6_process_client_duid() 4494 _nx_dhcpv6_process_server_duid() 4495 _nxe_dhcpv6_create_client_duid() 4496 Added function to set the destination address where DHCP message should be sent. 4497 Functions are modified: 4498 _nx_dhcpv6_client_create() 4499 _nx_dhcpv6_client_set_destination_address() 4500 _nxe_dhcpv6_client_set_destination_address() 4501 Corrected the logic for setting the source address. 4502 Function is modified: 4503 _nx_dhcpv6_send_request() 4504 Supported for rapid option. 4505 Function is modified: 4506 _nx_dhcpv6_scan_packet_options() 4507 Improved packet length verification. 4508 Function is modified: 4509 _nx_dhcpv6_packet_process() 4510 Improved internal logic. 4511 Function is modified: 4512 _nx_dhcpv6_add_client_ia() 4513 _nx_dhcpv6_client_create() 4514 _nx_dhcpv6_create_client_duid() 4515 _nx_dhcpv6_get_valid_ip_address_lease_time() 4516 _nx_dhcpv6_process_domain_name() 4517 _nx_dhcpv6_process_server_duid() 4518 _nx_dhcpv6_remove_assigned_address() 4519 Added support for setting DHCPv6 server as default router. 4520 Functions are modified: 4521 _nx_dhcpv6_packet_process() 4522 _nx_dhcpv6_register_IP_address() 4523 _nx_dhcpv6_remove_assigned_address() 4524 nxd_dhcpv6_server.c Fixed the bug for checking length. 4525 Function is modified: 4526 _nx_dhcpv6_server_process_iana() 4527 Improved packet length verification. 4528 Function is modified: 4529 _nx_dhcpv6_listen_for_messages() 4530 Improved internal logic. 4531 Functions are modified: 4532 _nx_dhcpv6_assign_ip_address() 4533 _nx_dhcpv6_find_client_record_by_duid() 4534 _nx_dhcpv6_add_ip_address_lease() 4535 _nx_dhcpv6_create_ip_address_range() 4536 _nx_dhcpv6_reserve_ip_address_range() 4537 _nx_dhcpv6_retrieve_client_record() 4538 _nx_dhcpv6_server_utility_time_randomize() 4539 nxd_dhcpv6_server.h Corrected the symbol name and value for hardware type. 4540 4541 demo_netxduo_dns.c Supported for disabling IPv4 feature. 4542 nxd_dns.c Added the check for record count pointer. 4543 Functions are modified: 4544 _nxe_dns_ipv4_address_by_name_get() 4545 _nxde_dns_ipv6_address_by_name_get() 4546 _nxe_dns_domain_name_server_get() 4547 _nxe_dns_domain_mail_exchange_get() 4548 _nxe_dns_domain_service_get() 4549 Supported for disabling IPv4 feature. 4550 Dropped the chained packet to avoid memory overflow. 4551 Improved packet length verification. 4552 Fixed a bug that mutex is not released before return. 4553 Improved internal logic. 4554 Functions are modified: 4555 _nx_dns_cname_get() 4556 _nx_dns_host_text_get() 4557 _nx_dns_authority_zone_start_get() 4558 _nx_dns_host_resource_data_by_name_get() 4559 _nx_dns_response_process() 4560 _nx_dns_server_remove_internal() 4561 _nx_dns_process_cname_type() 4562 _nx_dns_process_txt_type() 4563 _nx_dns_process_soa_type() 4564 _nx_dns_cache_add_string() 4565 _nx_dns_cache_delete_string() 4566 4567 nxd_ftp_client.c Supported for disabling IPv4 feature. 4568 Dropped the chained packet to avoid memory overflow. 4569 Improved internal logic. 4570 nxd_ftp_server.c Made the sprintf formats the same for LIST the command case in nx_ftp_server_command_process(). 4571 Added a sanity check for minimum packet payload size of the FTP server in _nx_ftp_server_create_internal(). 4572 Supported for disabling IPv4 feature. 4573 Dropped the chained packet to avoid memory overflow. 4574 Improved internal logic. 4575 Corrected the logic for processing login/out. 4576 Fixed a bug that causes crash when month is invalid. 4577 nxd_ftp_server.h Created a configuration option for defining minimum FTP server packet pool payload, NX_FTP_SERVER_MIN_PACKET_PAYLOAD, 4578 and created an error status NX_FTP_INSUFFICIENT_PACKET_PAYLOAD if the payload is too small. 4579 Supported for disabling IPv4 feature. 4580 4581 demo_netxduo_http.c Supported for disabling IPv4 feature. 4582 nxd_http_server.c Fixed the logic for multi packet GET request. 4583 Improved internal logic. 4584 nxd_http_client.c Supported for disabling IPv4 feature. 4585 4586 nxd_mqtt_client.c Improved packet length verification. 4587 Removed the usage of global variable for MQTT client. 4588 Added logic to prevent packet ID value from being zero. 4589 Fixed a bug that packet may be queued by TLS and can not be received. 4590 Added a symbol for user to set initial packet ID value. 4591 Improved internal logic. 4592 Modified _nxd_mqtt_process_disconnect to use the NXD_MQTT_SOCKET_TIMEOUT as the wait option 4593 Modified _nxd_mqtt_packet_allocate to use TLS packet allocate for TLS socket. TLS packet allocate routine is able to 4594 take into consideration the TLS header size, including the crypto initial vector area. 4595 Modified _nxd_mqtt_client_publish to fix packet leak, and use packet append API instead of memcpy to prevent data 4596 overflow the packet strcutre. 4597 Modified _nxd_mqtt_client_sub_unsub to fix a ptoential packet leak under error conditions. 4598 Modified _nxd_mqtt_client_disconnect to not exit if the send message calls returns an error. Added a call to delete the timer 4599 so that a subsequent connect call will not error out when it tries to create the already existing timer. 4600 Modified _nxd_mqtt_thread_entry to delete the TCP socket. Added logic to check if 4601 timer, event flag group are already deleted before deleting. Moved the socket delete call to the end of the function 4602 Modified _nxd_mqtt_client_create to create the socket instead of in the connect call. Delete the MQTT thread if an error occurs. 4603 Modified _nxd_mqtt_client_connect to remove the socket create call, and removed socket delete calls where an error is handled. 4604 Delete the timer if an error occurs. Replaced NX_WAIT_FOREVER with NXD_MQTT_SOCKET_TIMEOUT on the socket receive calls. 4605 Modified _nxd_mqtt_client_delete to wait for the nxd_mqtt_client_thread_entry to complete processing the DELETE event. 4606 Modified _nxde_mqtt_client_login_set to allow user to set username but not password. 4607 Added call to delete the MQTT thread after the DELETE event is finished processing. 4608 Supported user defined memory functions. 4609 Added symbols NXD_MQTT_REQUIRE_TLS, NXD_MQTT_SECURE_MEMCPY, NXD_MQTT_SECURE_MEMCMP, NXD_MQTT_SECURE_MEMSET, NXD_MQTT_SECURE_MEMMOVE for 4610 security requirement. 4611 Checked topic name and message lengths in runtime. 4612 Allowed zero length of username and password. 4613 nxd_mqtt_client.h Added NXD_MQTT_SOCKET_TIMEOUT to put a finite timeout for nx_tcp_socket_disconnect. 4614 The default value is NX_WAIT_FOREVER so no difference in behavior should be observed. 4615 Supported user defined memory functions. 4616 4617 nx_nat.c Set different timeout for TCP and non-TCP seesion. 4618 Functions are modified: 4619 _nx_nat_inbound_entry_find() 4620 _nx_nat_outbound_entry_find() 4621 Added support for replacement when cache is full. 4622 Function is modified: 4623 _nx_nat_entry_create() 4624 Corrected the logic for appending the overflowing data to the new packet. 4625 Function is modified: 4626 _nx_nat_ip_packet_send() 4627 Improved packet length verification. 4628 Function is modified: 4629 _nx_nat_process_packet() 4630 nx_nat.h Added symbols for TCP and non-TCP session timeout. 4631 Added NX_NAT_ENABLE_REPLACEMENT. 4632 4633 demo_netxduo_pop3_client.c Increased packet payload to 1460 from 500, and clear final_packet local variable in 4634 the loop that iterates to capture all the packets in a mail item. 4635 4636 nxd_pop3_client.c Corrected the logic in _nx_pop3_client_mail_item_message_get for handling packets with only 4637 the POP3 end marker tag indicating end of mail message. 4638 Supported for disabling IPv4 feature. 4639 Dropped the chained packet to avoid memory overflow. 4640 Improved internal logic. 4641 Fixed the logic for handling message and command in one packet. 4642 nxd_pop3_client.h Fixed the logic for handling message and command in one packet. 4643 4644 nx_ppp.c Supported for transmitting PPP over Ethernet. 4645 Functions are modified or added: 4646 _nx_ppp_netx_packet_transfer() 4647 _nx_ppp_packet_receive() 4648 _nx_ppp_packet_send_set() 4649 _nx_ppp_packet_transmit() 4650 _nx_ppp_process_deferred_raw_string_send() 4651 _nx_ppp_receive_packet_get() 4652 _nx_ppp_thread_entry() 4653 _nxe_ppp_packet_receive() 4654 _nxe_ppp_packet_send_set() 4655 _nxe_ppp_create() 4656 4657 _nx_ppp_crc_append() 4658 _nx_ppp_process_deferred_ip_packet_send() 4659 _nx_ppp_lcp_code_reject() 4660 _nx_ppp_lcp_configure_reply_send() 4661 _nx_ppp_lcp_configure_request_send() 4662 _nx_ppp_lcp_configuration_retrieve() 4663 _nx_ppp_lcp_state_machine_update() 4664 _nx_ppp_lcp_terminate_ack_send() 4665 _nx_ppp_lcp_terminate_request_send() 4666 _nx_ppp_pap_authentication_request() 4667 _nx_ppp_pap_authentication_ack() 4668 _nx_ppp_pap_authentication_nak() 4669 _nx_ppp_pap_login_valid() 4670 _nx_ppp_pap_state_machine_update() 4671 _nx_ppp_chap_challenge_send() 4672 _nx_ppp_chap_challenge_respond() 4673 _nx_ppp_chap_challenge_validate() 4674 _nx_ppp_chap_state_machine_update() 4675 _nx_ppp_ipcp_configure_check() 4676 _nx_ppp_ipcp_configure_request_send() 4677 _nx_ppp_ipcp_response_extract() 4678 _nx_ppp_ipcp_response_send() 4679 _nx_ppp_ipcp_state_machine_update() 4680 _nx_ppp_ipcp_terminate_ack_send() 4681 _nx_ppp_ipcp_terminate_send() 4682 _nx_ppp_raw_string_send() 4683 _nx_ppp_receive_packet_process() 4684 Added state check before start PAP, CHAP and IPCP. 4685 _nx_ppp_packet_receive() 4686 Corrected the logic for stopping PPP. 4687 Functions are modified: 4688 _nx_ppp_thread_entry() 4689 _nx_ppp_lcp_state_machine_update() 4690 Corrected the logic for processing LCP message. 4691 Function is modified: 4692 _nx_ppp_receive_packet_process() 4693 Corrected the logic for setting gateway address. 4694 Function is modified: 4695 _nx_ppp_ipcp_state_machine_update() 4696 Set the flag to distinguish PPP Server and PPP Client. 4697 Function is modified: 4698 _nx_ppp_receive_packet_process() 4699 Added functions to stop/start PPP. 4700 Function are modified: 4701 _nx_ppp_start() 4702 _nx_ppp_stop() 4703 _nxe_ppp_start() 4704 _nxe_ppp_stop() 4705 Improved packet length verification. 4706 Function are modified: 4707 _nx_ppp_chap_challenge_respond() 4708 _nx_ppp_chap_challenge_validate() 4709 _nx_ppp_ipcp_configure_check() 4710 _nx_ppp_ipcp_response_extract() 4711 _nx_ppp_pap_login_valid() 4712 _nx_ppp_receive_packet_process() 4713 Improved internal logic. 4714 Function are modified: 4715 _nx_ppp_chap_challenge_respond() 4716 _nx_ppp_chap_challenge_validate() 4717 _nx_ppp_chap_state_machine_update() 4718 _nx_ppp_ipcp_state_machine_update() 4719 _nx_ppp_lcp_state_machine_update() 4720 _nx_ppp_pap_state_machine_update() 4721 Added echo request statistics and corrected the length field in _nx_ppp_ping_request(). 4722 nx_ppp.h Supported for transmitting PPP over Ethernet. 4723 Added functions to stop/start PPP. 4724 4725 demo_netxduo_smtp_client.c Supported for disabling IPv4 feature. 4726 nxd_smtp_client.c Fix compiler errors when event trace is enabled. 4727 Supported for disabling IPv4 feature. 4728 Dropped the chained packet to avoid memory overflow. 4729 Improved packet length verification. 4730 nxd_smtp_client.h Removed unused API macro nxd_smtp_mail_send. 4731 4732 nxd_snmp.c Supported for disabling IPv4 feature. 4733 Dropped the chained packet to avoid memory overflow. 4734 Added buffer length check. 4735 Fixed packet leak issue. 4736 Modified logic of converting to UCHARs for the buffer. 4737 Removed logic setting boot count to one if not set. 4738 Fixed a bug to use the trap security flags instead of the agent security flags. 4739 Fixed bug to use context name from get request if agent context name not set. 4740 Improved internal logic. 4741 Modified nx_snmpv3_agent_engineboot_set to accept boot count of zero 4742 Fixed nx_snmp_utility_object_data_get, nx_snmp_object_counter64_get/set, 4743 nx_snmp_object_octet_string.get for errors in data processing. 4744 Added new parsing route nx_snmp_tlv_parse_data to parse the Type-Length-Value 4745 field as per ASN1 specificactions, this also handles the 'long form' for integer types 4746 Added check for counter64 type to nx_snmp_v1/v2/v3_processing 4747 Added an error response to nx_snmp_v1/v2/v3_processing if nx_snmp_object_data_get returns an error 4748 instead of failing silently. 4749 Modified nx_snmp_utility_object_data_get to accept a null IPv4 address. 4750 nxd_snmp.h Removed #include nx_tcp.h 4751 Added macros for ASN1/BER standard symbols used in TLV parsing routine 4752 Added new error returns relevant to the TLV parsing added. 4753 Redefined IPv6 address type as NX_SNMP_ASN1_OCTET_STRING 4754 demo_snmp_helper.h Removed #include nx_tcp.h and references to TCP configuration options defined in nx_tcp.h. 4755 Added a get_octet_callback() which is similar to the get_callback except that it includes the length 4756 arguement to accomodate the nx_snmp_object_octet_string_get API 4757 Added a length field to MIB table for reading octet strings which not 0x0 delimited. 4758 Simplified the table to a few dozen OIDs instead of a hundreds of OID for ease of use. 4759 Added atIPv6NetworkAddress[16] and MIB table entry for it for testing IPv6 address types 4760 demo_netxduo_snmp.c Simplified mib2_variable_update to be a comment that this is where MIB data can be updated at runtime. 4761 Removed printf statements. 4762 Added check of status returns from SNMP API that were missing them. 4763 demo_netxduo_mib2.c Removed the demo file since demo_netx_snmp.c is sufficient to demonstrate the use of SNMP API 4764 for managing the MIB table. 4765 4766 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 4767 is older than the current date and a leapyear has occurred between that year and the current date. 4768 Removed useless code. 4769 Supported for disabling IPv4 feature. 4770 Improved internal logic. 4771 nxd_sntp_client.h Modified comments. 4772 4773 nxd_telnet_client.h Removed NX_TELNET_MAX_OPTION_SIZE option and 4774 nx_telnet_client_request_option from CLIENT_REQUEST structure. 4775 nxd_telnet_client.c Supported for disabling IPv4 feature. 4776 nxd_telnet_server.c Dropped the chained packet to avoid memory overflow. 4777 4778 nxd_tftp_client.c Supported for disabling IPv4 feature. 4779 Improved packet length verification. 4780 Corrected the field size of block number. 4781 nxd_tftp_server.c Improved packet length verification. 4782 Improved internal logic. 4783 Corrected the field size of block number. 4784 nxd_tftp_client.h Corrected the field size of block number. 4785 nxd_tftp_server.h Corrected the field size of block number. 4786 4787 nx_web_http_client.c Added support for chunked transfer. Functions are added or modified: 4788 _nx_web_http_client_chunked_size_get() 4789 _nx_web_http_client_cleanup() 4790 _nx_web_http_client_memicmp() 4791 _nx_web_http_client_process_header_fields() 4792 _nx_web_http_client_response_body_get() 4793 _nx_web_http_client_response_read() 4794 _nx_web_http_client_response_byte_expect() 4795 _nx_web_http_client_response_chunked_get() 4796 _nx_web_http_client_request_chunked_set() 4797 _nx_web_http_client_request_packet_send() 4798 _nx_web_http_client_request_initialize() 4799 _nxe_web_http_client_request_chunked_set() 4800 _nxe_web_http_client_request_packet_send() 4801 _nx_web_http_client_delete() 4802 Corrected the TCP header size in _nxe_web_http_client_put_packet(). 4803 Added support for keep-alive. Functions are added or modified: 4804 _nx_web_http_client_connect() 4805 _nx_web_http_client_process_header_fields() 4806 _nx_web_http_client_secure_connect() 4807 Corrected the wait option. 4808 Functions are modified: 4809 _nx_web_http_client_request_initialize() 4810 _nx_web_http_client_request_header_add() 4811 _nx_web_http_client_request_send() 4812 Added support for returning all the status code in _nx_web_http_client_response_body_get(). 4813 Fixed the issue of TCP socket cleanup in _nx_web_http_client_secure_connect(). 4814 nx_web_http_client.h Added support for chunked transfer. 4815 Added support for keep-alive. 4816 Added support for returning all the status code. 4817 nx_web_http_server.c Added support for chunked transfer. Functions are added or modified: 4818 _nx_web_http_server_content_get() 4819 _nx_web_http_server_packet_content_find() 4820 _nx_web_http_server_packet_get() 4821 _nx_web_http_server_content_get_extended() 4822 _nx_web_http_server_receive_data() 4823 _nx_web_http_server_get_process() 4824 _nx_web_http_server_put_process() 4825 _nx_web_http_server_callback_packet_send() 4826 _nx_web_http_server_request_read() 4827 _nx_web_http_server_request_byte_expect() 4828 _nx_web_http_server_chunked_size_get() 4829 _nx_web_http_server_request_chunked_get() 4830 _nxe_web_http_server_response_chunked_set() 4831 _nx_web_http_server_response_chunked_set() 4832 _nx_web_http_server_chunked_check() 4833 _nx_web_http_server_get_entity_header() 4834 _nx_web_http_server_boundary_find() 4835 Modified packet allocation function. Functions are added or modified: 4836 _nx_web_http_server_basic_authenticate() 4837 _nx_web_http_server_calculate_content_offset() 4838 _nx_web_http_server_callback_data_send() 4839 _nx_web_http_server_digest_authenticate() 4840 _nx_web_http_server_get_process() 4841 _nx_web_http_server_generate_response_header() 4842 _nx_web_http_server_response_packet_allocate() 4843 _nxe_web_http_server_response_packet_allocate() 4844 nx_web_http_server.h Added support for chunked transfer. 4845 Added packet allocation function. 4846 nx_tcpserver.c Corrected the wait time of TCP server socket accepting in _nx_tcpserver_connect_process(). 4847 nx_tcpserver.h Modified the default thread priority of TCP server. 4848 nx_web_http_common.h Added support for returning all the status code. 4849 demo_netxduo_https.c Fixed the compile errors. 4850 4851 4852Release 5.10 05-10-2016 4853 4854 nx_auto_ip.c Optimized the logic for detecting address conflict. 4855 Functions are modified or deleted: 4856 _nx_auto_ip_arp_packet_send() 4857 _nx_auto_ip_conflict() 4858 _nx_auto_ip_create() 4859 _nx_auto_ip_delete() 4860 _nx_auto_ip_thread_entry() 4861 Fixed the bug for checking interface status. 4862 Function is modified: 4863 _nx_auto_ip_thread_entry() 4864 nx_auto_ip.h Optimized the logic for detecting address conflict. 4865 4866 nxd_bsd.c Included internal header file in C file. 4867 Modified API functions: 4868 getsockopt - Optimized the logic for keepalive feature. 4869 recv - Added support for thread preemption. 4870 setsockopt - Optimized the logic for keepalive feature. 4871 socket - Optimized the logic for keepalive feature. 4872 inet_ntop - Fixed endian swap when ntohl is not defined. 4873 Modified internal functions: 4874 _nxd_bsd_ipv6_packet_send - Modified the parameter list of _nx_icmpv6_send_ns. 4875 inet_ntoa_internal - Fixed endian swap when ntohl is not defined. 4876 nx_bsd_find_interface_by_source_addr - Fixed endian swap when ntohl is not defined. 4877 nx_bsd_send_internal - Added a case for the error status NX_NO_PACKET. 4878 nxd_bsd.h Included internal header file in C file. 4879 4880 nxd_dhcp_client.c Optimized the logic for detecting address conflict. 4881 The following functions are modified or added: 4882 _nx_dhcp_client_send_arp_probe() 4883 _nx_dhcp_create() 4884 _nx_dhcp_delete() 4885 _nx_dhcp_ip_conflict() 4886 _nx_dhcp_process() 4887 Corrected the logic for setting the broadcast bit. 4888 The following functions are modified: 4889 _nx_dhcp_send_request_internal() 4890 Corrected the logic for setting the target IP address. 4891 The following functions are modified: 4892 _nx_dhcp_send_request_internal() 4893 Modified the logic for processing DHCP options. 4894 The following functions are modified: 4895 _nx_dhcp_extract_information() 4896 _nx_dhcp_user_option_retrieve() 4897 _nx_dhcp_get_option_value() 4898 _nx_dhcp_search_buffer() 4899 Added support for DHCP on multiple interfaces. 4900 The following API are modified or added: 4901 _nx_dhcp_create() 4902 _nx_dhcp_clear_broadcast_flag() 4903 _nx_dhcp_client_send_with_zero_source_address() 4904 _nx_dhcp_delete() 4905 _nx_dhcp_decline() 4906 _nx_dhcp_extract_information() 4907 _nx_dhcp_force_renew() 4908 _nx_dhcp_packet_process() 4909 _nx_dhcp_reinitialize() 4910 _nx_dhcp_release() 4911 _nx_dhcp_request_client_ip() 4912 _nx_dhcp_resume() 4913 _nx_dhcp_suspend() 4914 _nx_dhcp_send_request() 4915 _nx_dhcp_send_request_internal() 4916 _nx_dhcp_server_address_get() 4917 _nx_dhcp_set_interface_index() 4918 _nx_dhcp_start() 4919 _nx_dhcp_stop() 4920 _nx_dhcp_thread_entry() 4921 _nx_dhcp_timeout_entry() 4922 _nx_dhcp_timeout_process() 4923 _nx_dhcp_udp_receive_notify() 4924 _nx_dhcp_user_option_retrieve() 4925 _nx_dhcp_client_get_record() 4926 _nx_dhcp_client_restore_record() 4927 _nx_dhcp_client_update_time_remaining() 4928 _nx_dhcp_client_interface_get_record() 4929 _nx_dhcp_client_interface_restore_record() 4930 _nx_dhcp_client_interface_update_time_remaining() 4931 _nx_dhcp_interface_clear_broadcast_flag() 4932 _nx_dhcp_interface_enable() 4933 _nx_dhcp_interface_disable() 4934 _nx_dhcp_interface_decline() 4935 _nx_dhcp_interface_force_renew() 4936 _nx_dhcp_interface_reinitialize() 4937 _nx_dhcp_interface_release() 4938 _nx_dhcp_interface_request_client_ip() 4939 _nx_dhcp_interface_start() 4940 _nx_dhcp_interface_stop() 4941 _nx_dhcp_interface_send_request() 4942 _nx_dhcp_interface_server_address_get() 4943 _nx_dhcp_interface_state_change_notify() 4944 _nx_dhcp_interface_user_option_retrieve() 4945 _nx_dhcp_interface_record_find() 4946 _nxe_dhcp_interface_clear_broadcast_flag() 4947 _nxe_dhcp_interface_enable() 4948 _nxe_dhcp_interface_disable() 4949 _nxe_dhcp_interface_decline() 4950 _nxe_dhcp_interface_force_renew() 4951 _nxe_dhcp_interface_reinitialize() 4952 _nxe_dhcp_interface_release() 4953 _nxe_dhcp_interface_request_client_ip() 4954 _nxe_dhcp_interface_start() 4955 _nxe_dhcp_interface_stop() 4956 _nxe_dhcp_interface_send_request() 4957 _nxe_dhcp_interface_server_address_get() 4958 _nxe_dhcp_interface_state_change_notify() 4959 _nxe_dhcp_interface_user_option_retrieve() 4960 _nxe_dhcp_client_interface_get_record() 4961 _nxe_dhcp_client_interface_restore_record() 4962 _nxe_dhcp_client_interface_update_time_remaining() 4963 Modified the logic for updating DHCP timeout. 4964 The following functions are modified: 4965 _nx_dhcp_update_timeout() 4966 _nx_dhcp_packet_process() 4967 _nx_dhcp_timeout_entry() 4968 _nx_dhcp_interface_record_find() 4969 _nx_dhcp_ip_conflict() 4970 _nx_dhcp_thread_entry() 4971 nxd_dhcp_client.h Fixed compiler warnings. 4972 Modified the logic for processing DHCP options. 4973 Added support for DHCP on multiple interfaces. 4974 nxd_dhcp_server.c Added flag events to process packet receive event, fast periodic event and slow periodic event. 4975 Functions are modified or renamed: 4976 _nx_dhcp_server_create() 4977 _nx_dhcp_server_delete() 4978 _nx_dhcp_fast_periodic_timer_entry() 4979 _nx_dhcp_slow_periodic_timer_entry() 4980 _nx_dhcp_server_thread_entry() 4981 _nx_dhcp_listen_for_messages() 4982 _nx_dhcp_server_packet_process() 4983 Fixed packet leaks in _nx_dhcp_respond_to_client_message(). 4984 Added mutex protection. 4985 Functions are modified: 4986 _nx_dhcp_create_server_ip_address_list() 4987 _nx_dhcp_set_interface_network_parameters() 4988 _nx_dhcp_clear_client_record() 4989 nxd_dhcp_server.h Added flag events to process packet receive event, fast periodic event and slow periodic event. 4990 nxd_dhcpv6_server.c Fixed the typo, rename NX_DHCPV6_STATUS_NO_ADDRS_AVAILABLE to NX_DHCPV6_STATUS_MESSAGE_NO_ADDRS_AVAILABLE. 4991 nxd_dhcpv6_server.h Fixed the typo, rename NX_DHCPV6_STATUS_NO_ADDRS_AVAILABLE to NX_DHCPV6_STATUS_MESSAGE_NO_ADDRS_AVAILABLE. 4992 4993 nxd_ftp_server.c Renamed _nx_ftp_server_control_disonnect_processing to nx_ftp_server_control_disconnect_processing. 4994 Added a check on status return from FileX file write and file create calls in _nx_ftp_server_command_process 4995 and _nx_ftp_server_data_process. 4996 nxd_ftp_server.h Renamed _nx_ftp_server_control_disonnect_processing to nx_ftp_server_control_disconnect_processing. 4997 nxd_ftp_client.c Added support for PASV, passive transfer mode 4998 Added IPv6 support to nx_ftp_client_directory_listing_get 4999 nxd_ftp_client.h Added support for PASV, passive transfer mode 5000 5001 demo_netxduo_http.c Fix a bug that memory of ram disk is corrupted. 5002 nxd_http_client.c Allow zero or more whitespaces between Content-Length and value 5003 in nx_http_client_content_length_get() 5004 Optimized the code. 5005 _nx_http_client_content_length_get() 5006 Fixed packet leak for invalid HTTP packet in _nxd_http_client_get_start 5007 and _nx_http_client_get_packet. 5008 Corrected the logic in _nxd_http_client_get_start when checking 5009 offset against the packet length 5010 Modified nxd_http_client_get_start() and nxd_http_client_put_start() 5011 to accept a URI resource string that refers to a full website 5012 e.g. http://abc.def.com/index.htm. 5013 Added nx_http_client_set_connect_port() service to allow the Client 5014 to change the HTTP server port at runtime. 5015 nxd_http_client.h Declare the nx_http_client_set_connect_port() service 5016 5017 nxd_pop3_client.c Returned NX_SUCCESS only if the positive response consists of "+OK". 5018 Functions are modified: 5019 _nx_pop3_client_mail_item_get() 5020 _nx_pop3_client_mail_item_delete() 5021 _nx_pop3_client_quit() 5022 5023 5024Release 5.9 02-22-2016 5025 5026 demo_netx_auto_ip.c Used TX_TIMER_TICKS_PER_SECOND as default value of NX_IP_PERIODIC_RATE. 5027 Fixed compiler warnings. 5028 5029 nx_auto_ip.c Fixed one bug that hardware address is set as zero if IP instance is uninitialized. 5030 Fixed compiler warnings. 5031 Corrected the value of NX_AUTO_IP_END_ADDRESS. 5032 5033 bsd_demo_raw.c Unified ticks per second. 5034 Fixed compiler warnings. 5035 bsd_demo_tcp.c Unified ticks per second. 5036 Fixed compiler warnings. 5037 bsd_demo_udp.c Unified ticks per second. 5038 Fixed compiler warnings. 5039 nxd_bsd.c Fixed compiler warnings. 5040 Modified API functions: 5041 bsd_initialize - Returned error when extended notify feature was disabled. 5042 recv - Fixed return value when peer shutdown orderly. 5043 Fixed statistics of TCP socket. 5044 send - Fixed length of data sent. 5045 sendto - Fixed length of data sent. 5046 connect - Fixed errno when connection timeouts. 5047 bind - Added logic to allow TCP IPv4 and IPv6 sockets to share a port if reuse is enabled 5048 on the sockets (which it is by default. This lets BSD emulate a TCP client socket that accepts 5049 and transmits IPv4 and IPv6 packets. 5050 inet_addr - Corrected the status process of inet_aton. 5051 setsockopt - Unified ticks per second. 5052 Added support for SO_SNDTIMEO option. 5053 Renamed symbols from NX_TCP_ENABLE_KEEPALIVE to NX_ENABLE_TCP_KEEPALIVE, 5054 and from NX_TCP_ENABLE_WINDOW_SCALING to NX_ENABLE_TCP_WINDOW_SCALING. 5055 select - Unified ticks per second. 5056 Fixed statistics of TCP socket. 5057 Modified internal functions: 5058 bsd_initialize - Used tx_thread_sleep instead of setting event from timer. 5059 nx_bsd_select_wakeup - Cleared fd_sets in suspend info if they were not met. 5060 nx_bsd_send_internal - Supported to return length of data sent. 5061 Fixed timeout for packet process. 5062 Added support for SO_SNDTIMEO option. 5063 nx_bsd_socket_set_inherited_settings - Renamed symbols from NX_TCP_ENABLE_KEEPALIVE to NX_ENABLE_TCP_KEEPALIVE, 5064 and from NX_TCP_ENABLE_WINDOW_SCALING to NX_ENABLE_TCP_WINDOW_SCALING. 5065 nx_bsd_tcp_socket_disconnect_notify - Fixed errno when connection timeouts. 5066 nx_bsd_timer_entry - Used tx_thread_sleep instead of setting event from timer. 5067 nx_bsd_thread_entry - Used tx_thread_sleep instead of setting event from timer. 5068 nxd_bsd.h Added support for unified timer tick macros. 5069 Defined return code for environment error. 5070 Modified the type of time_t and suseconds_t from ULONG to LONG. 5071 5072 demo_netxduo_dhcp.c Unified ticks per second. 5073 Simplified the demo. 5074 Fixed compiler warnings. 5075 5076 nxd_dhcp_client.c Unified ticks per second. 5077 Added support for sending maximum DHCP message size option. 5078 Changed the logic to check the DHCP state to update the time remaining in renew and rebind states. 5079 Optimized the algorithm for calculating random time. 5080 Corrected the logic for sending ARP probe and restarting configuration. 5081 Fixed compiler warnings. 5082 Set the source address field in the IP header to 0 for DHCP messages that client obtaining its IP address. 5083 nxd_dhcp_client.h Unified ticks per second. 5084 Added support for sending maximum DHCP message size option. 5085 Added symbol names for sending ARP probe and restarting configuration. 5086 Fixed compiler warnings. 5087 nxd_dhcp_server.c Unified ticks per second in nx_dhcp_server_create(). 5088 Optimized process logic in nx_dhcp_server_thread_entry(). 5089 Fixed a packet leak in nx_dhcp_listen_for_message(). 5090 Fixed the bug for user options seek in nx_dhcp_server_extract_information. 5091 Initialized dhcp client in nx_dhcp_listen_for_message. 5092 Copied the incoming data in one packet from dhcp server pool in nx_dhcp_listen_for_messages. 5093 Fixed a bug in nx_dhcp_server_extract_information to initialize the dhcp_client_ptr to NULL in the event 5094 the function encounters an invalid packet. Previously, the function returned a garbage dhcp_client_ptr to 5095 the caller which would then dereference it and get an exception. 5096 Send NACK message if the client's requested IP address is incorrect in _nx_dhcp_validate_client_message. 5097 Simplified the logic to find, record and clear the IP address owner. 5098 Fixed compiler warnings. 5099 nxd_dhcp_server.h Unified ticks per second. 5100 Adjusted the default value of configuration options. 5101 Optimized the structure. 5102 demo_netxduo_dhcpv6.c Unified ticks per second. 5103 Simplified the demo. 5104 Fixed compiler warnings. 5105 demo_netxduo_dhcpv6_client.c Unified ticks per second. 5106 Fixed compiler warnings. 5107 nxd_dhcpv6_client.c Unified ticks per second. 5108 Verified the incoming data does not exceed our DHCPv6 Client packet payload in _nx_dhcpv6_packet_process(). 5109 Fixed the bug for setting IPv6 address change notify in _nx_dhcpv6_client_create(). 5110 Fixed the bug for setting address status in _nx_dhcpv6_register_IP_address(). 5111 Renamed symbols from NX_IPV6_ADDRESS_CHANGE_NOTIFY_ENABLE to NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY, 5112 NXDUO_DISABLE_DAD to NX_DISABLE_IPV6_DAD since NetX Duo renamed these symbols. 5113 Fixed compiler warnings. 5114 nxd_dhcpv6_client.h Unified ticks per second. 5115 Added conditional code for DAD notify declaration. 5116 Renamed symbols from NX_IPV6_ADDRESS_CHANGE_NOTIFY_ENABLE to NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY, 5117 NXDUO_DISABLE_DAD to NX_DISABLE_IPV6_DAD since NetX Duo renamed these symbols. 5118 Fixed compiler warnings. 5119 nxd_dhcpv6_server.c Unified ticks per second. 5120 Copied the incoming data in one packet from dhcpv6 server pool in nx_dhcpv6_listen_for_messages. 5121 Fixed the bug for IPv6 address get. 5122 Fixed compiler warnings. 5123 nxd_dhcpv6_server.h Unified ticks per second. 5124 Fixed the bug for IPv6 address get. 5125 5126 demo_netxduo_dns.c Unified ticks per second. 5127 Fixed compiler warnings. 5128 nxd_dns.h Unified ticks per second. 5129 Removed the symbol NX_DNS_CLIENT_IP_GATEWAY_ADDRESS. 5130 nxd_dns.c Unified ticks per second. 5131 Modified the logic to send DNS query in _nx_dns_host_resource_rdata_by_name_get and 5132 _nx_dns_host_by_address_get_internal. 5133 Modified the return status in _nx_dns_send_query_by_address. 5134 Modified the return status if answer_found is true in _nx_dns_response_process. 5135 Modified the logic for setting the IP gateway server to be the DNS Server in _nx_dns_create. 5136 Added check for malformed packet. 5137 Fixed compiler warnings. 5138 Added the check for record_count_pointer. 5139 5140 demo_netxduo_ftp.c Unified ticks per second. 5141 Fixed compiler warnings. 5142 nxd_ftp_client.c Fixed compiler warnings. 5143 nxd_ftp_server.c Cleared socket resource when ftp server is stopped. 5144 Optimized the logic. 5145 Fixed a bug for calculating the length of file info. 5146 Fixed compiler warnings. 5147 nxd_ftp_server.h Unified ticks per second. 5148 Added event to stop ftp server. 5149 5150 demo_netxduo_http.c Unified ticks per second. 5151 Fixed compiler warnings. 5152 nxd_http_client.h Unified ticks per second. 5153 nxd_http_client.c Removed trailing space on HTTP/1.0. 5154 nxd_http_server.h Unified ticks per second. 5155 Declared missing function headers. 5156 nxd_http_server.c Cleared socket resource when stopped. 5157 Fixed first MIME type in the default array. 5158 Fixed compiler warnings. 5159 5160 demo_netx_nat.c Unified ticks per second. 5161 nx_nat.c Unified ticks per second. 5162 Fixed compiler warnings. 5163 Modified the logic for packet processing and sending since all 5164 the fragments are assembled before forwarding. 5165 Functions are modified: 5166 _nx_nat_process_packet() 5167 _nx_nat_ip_packet_send() 5168 nx_nat.h Unified ticks per second. 5169 5170 demo_netxduo_pop3_client.c Unified ticks per second. Used TX_TIMER_TICKS_PER_SECOND as default value of NX_IP_PERIODIC_RATE. 5171 Fixed compiler errors. 5172 nxd_pop3_client.c Unified ticks per second. Used TX_TIMER_TICKS_PER_SECOND as default value of NX_IP_PERIODIC_RATE. 5173 Fixed compiler errors. 5174 Fixed number checking. 5175 nxd_pop3_client.h Unified ticks per second. Used TX_TIMER_TICKS_PER_SECOND as default value of NX_IP_PERIODIC_RATE. 5176 5177 demo_netx_ppp.c Unified ticks per second. 5178 Fixed compiler warnings. 5179 nx_ppp.c Replaced hard numbers with PPP symbols for PPP codes, protocols, options and protocol states. 5180 Added _nx_ppp_debug_log_capture_protocol function to outputs the status of various protocols and timeouts of the specified PPP instance. 5181 Added support for the secondary DNS option in the IPCP protocol. 5182 Added a retry limit on IPCP NAK list requests with primary and secondary DNS options so that 5183 IPCP can complete if either address is not available. 5184 Added NXE function for error checking. 5185 Fixed compiler warnings. 5186 nx_ppp.h Unified ticks per second. 5187 Defined PPP symbols for naked list options. 5188 Added _nx_ppp_debug_log_capture_protocol prototype. 5189 Modified the NX_PPP data block to contain a secondary DNS address and count of retries on IPCP 5190 config requests with DNS address options. 5191 Added #defines for maximum retries on IPCP requests containing DNS options. 5192 Added services for setting and getting the primary and secondary DNS addresses. 5193 Added NXE function for error checking. 5194 Fixed the compiler error if defined NX_PPP_DISABLE_INFO. 5195 5196 demo_netxduo_smtp_client.c Unified ticks per second. 5197 Fixed compiler warnings. 5198 nxd_smtp_client.c Unified ticks per second. 5199 Removed unused code and simplified SMTP client data types 5200 Fixed packet leaks in various functions 5201 Added logic for SMTP servers not configured for authentication 5202 Added option for SMTP Client to skip authentication (NX_SMTP_CLIENT_AUTH_NONE) 5203 Fixed problems handling multi-packet response from the server to client EHLO 5204 Check socket state and delete TCP socket in nx_smtp_client_delete() before clearing SMTP Client memory 5205 Modified _nx_smtp_utility_parse_server_services() not to set AUTH type if the current 250 packet does not 5206 contain the AUTH keyword. Otherwise the client authentication type may not be set correctly. 5207 Fixed compiler warnings. 5208 nxd_smtp_client.h Unified ticks per second. Remove definitions of NX_SMTP_MILLISECONDS_PER_TICK and NX_SMTP_TICKS_PER_SECOND. 5209 Added logic for SMTP servers not configured for authentication 5210 Added option for SMTP Client to skip authentication (NX_SMTP_CLIENT_AUTH_NONE) 5211 Removed unused code and simplified SMTP client data types 5212 5213 demo_netxduo_mib2.c Unified ticks per second. 5214 Fixed compiler warnings. 5215 demo_netxduo_snmp.c Unified ticks per second. 5216 Fixed compiler warnings. 5217 Replace #ifdef ENABLE_V3 with #ifndef NX_SNMP_DISABLE_V3 to eliminate compile errors 5218 if NX_SNMP_DISABLE_V3 is defined in SNMP. 5219 demo_snmp_helper.h Fixed compiler warnings. 5220 nxd_snmp.c Modified nx_snmp_version3_report_send() : 5221 1) never encrypt data in a report response 5222 2) never to set encryption or reportable bit in security header flags field, 5223 3) if sending time synchronization report, only use authentication even if encryption is enabled, 5224 4) never send boot data in response to a discovery request. 5225 Modified nx_snmp_version3_process() : 5226 1) Flags in the security header should never have reportable bit sent 5227 2) never send boot data if authentication is not enabled. 5228 Modified nx_snmp_version3_process where it sets the request_type_ptr 5229 for returning the request packet with an error status. 5230 Renamed _nx_snmp_utility_request_type_set_A5 to _nx_snmp_utility_request_type_set_multibyte 5231 Removed _nx_snmp_utility_request_type_set (use only _nx_snmp_utility_request_type_set_1byte) 5232 Modified nx_snmp_send_error_response() and nx_snmp_encrypt_pdu for handling SNMPV3 request packet PDUs 5233 for error messages when security is enabled. 5234 Replaced 1 byte data size fields with 2 byte data size fields in sequence headers in trap send, 5235 and SNMP message process functions, wherever there is a possibility the data may exceed 128 bytes 5236 (and thus require 2 bytes). 5237 Modified logic in data object get functions to determine the size of the data size field rather than 5238 assume 2 bytes (e.g. _nx_snmp_utility_community_get, _nx_snmp_utility_object_id_get, 5239 _nx_snmp_utility_object_data_get). 5240 Fixed a bug in _nx_snmp_agent_encrypt_pdu for not adjusting encrypted PDU length for non-zero padding. 5241 Added a null pointer check for the object list pointer in the trap functions when going through 5242 the PDU object list items. 5243 Added NX_SNMP_V3_DISABLE conditional compile directives around global PDU processing variables and in 5244 _nx_snmp_version_error_response relevant for V3 security specific processing. 5245 Fixed compiler warnings. 5246 Minor correction masking the length variable. 5247 nxd_snmp.h Renamed _nx_snmp_utility_request_type_set_A5 to _nx_snmp_utility_request_type_set_multibyte. 5248 Removed _nx_snmp_utility_request_type_set (use only _nx_snmp_utility_request_type_set_1byte). 5249 Changed the order of internal functions for more logical grouping. 5250 Unified ticks per second. 5251 Added #ifdef NX_SNMP_V3_DISABLE checks around #includes for authentication 5252 and encryption key processing, and around API fucntions that compute and activate keys. 5253 Removed unused extern nx_system_ticks_per_second. 5254 5255 demo_netxduo_sntp_client.c Unified ticks per second. 5256 Updated the demo for creating SNTP client packet pool. 5257 Fixed compiler warnings. 5258 nxd_sntp_client.c Modified nx_sntp_client_get_msecs_diff to simplify the logic 5259 Modified nx_sntp_client_server_clock_dispersion_check to simplify the logic 5260 Reworked the logic in nx_sntp_client_utility_get_msec_diff to add back in flag for postive or 5261 negative difference. Some use cases in NetX SNTP Client regard a negative difference as an error. 5262 Modified nx_sntp_client_utility_convert_secs_to_date to handle a date stamp in a year 5263 after NX_SNTP_CURRENT_YEAR. 5264 Created new API _nx_sntp_client_request_unicast_time to request unicast updates asynchronously of the 5265 SNTP Client thread task. 5266 Simplified the completion status logic for _nx_sntp_client_process_update_packet 5267 Removed unnecessary input for _nx_sntp_client_receive_time_update and _nx_sntp_client_apply_sanity_checks, 5268 Fixed the logic to check if the update time has expired without a response. 5269 Modified nx_sntp_client_initialize_broadcast to handle invalid parameter input. 5270 Created nx_sntp_client_set_time_update_notify to set a callback when the SNTP Client receives a valid 5271 SNTP update. 5272 Simplified logic for valid packet processing in _nx_sntp_client_process_broadcast. 5273 Simplified error code in _nx_sntp_client_apply_sanity_checks. 5274 Modifiied _nx_sntp_client_process_time_data to add status check for adding msec to ntp time. 5275 Unified ticks per second. 5276 Fixed a bug when multiple packets were received and the first one was invalid, 5277 other packets were not processed in time. 5278 Fixed compiler warnings. 5279 nxd_sntp_client.h Modified nx_sntp_client_server_clock_dispersion_check declaration for changes to input args 5280 Created new API nx_sntp_client_request_unicast_time() 5281 Removed unnecessary input for _nx_sntp_client_receive_time_update and _nx_sntp_client_apply_sanity_checks, 5282 Added support for nx_sntp_client_set_time_update_notify() callback. 5283 Unified ticks per second. 5284 Removed unused macros. 5285 Fixed compiler warnings. 5286 5287 demo_netxduo_telnet.c Unified ticks per second. 5288 Fixed compiler warnings. 5289 nxd_telnet_server.c Added support for external packet pool creation for use when NX_TELNET_SERVER_OPTION_DISABLE 5290 is not defined and the Telnet Server needs a packet pool to send Telnet options. 5291 Created _nx_telnet_server_packet_pool_set() API for applications to set the Telnet Server packet 5292 pool if NX_TELNET_SERVER_USER_CREATE_PACKET_POOL is defined. The default is the Telnet Server 5293 creates the packet pool. 5294 Cleared socket resource when telnet server is stopped. 5295 Modified nx_telnet_server_process_options to move the offset for all responses to the ECHO request. 5296 Fixed a bug when packet contains command and data, data are not processed. 5297 Fixed compiler warnings. 5298 nxd_telnet_server.h Added support for for external packet pool creation with configuration option 5299 NX_TELNET_SERVER_USER_CREATE_PACKET_POOL and API nx_telnet_server_packet_pool_set(). 5300 Unified ticks per second. 5301 Added event to stop telnet server. 5302 nxd_telnet_client.h Removed unused macro. 5303 5304 demo_netxduo_tftp.c Unified ticks per second. 5305 Fixed compiler warnings. 5306 nxd_tftp_server.c Added support for a retransmit feature where a packet is 5307 retransmitted if the correct data or ACK from the TFTP Client 5308 is not received within user specified timeout period. 5309 Added logic to handle duplicate WRITE or READ requests e.g. the 5310 TFTP server is delayed responding to the first request and while 5311 processing it receives one or more duplicate requests (which are dropped). 5312 Fixed packet leak. 5313 Fixed compiler warnings. 5314 nxd_tftp_server.h Added support for a retransmit feature. 5315 nxd_tftp_client.c Fixed compiler warnings. 5316 5317 5318Release 5.8 01-12-2015 5319 5320 nx_auto_ip.c Added NX_RAND to replace rand to get the random value. 5321 5322 nxd_bsd.c Added API functions: 5323 inet_pton - This function converts an IP address from presentation to numeric. 5324 inet_ntop - This function converts an IP address from numeric to presentation. 5325 getaddrinfo - This function returns one or more addrinfo structures according 5326 to the specified node and service. 5327 freeaddrinfo - This function releases the memory allocated by getaddrinfo. 5328 getnameinfo - This function converts a socket address to a corresponding host and service. 5329 Modified API functions: 5330 socket - Improved UDP and raw socket performance. 5331 connect - Fixed error status when connection fails in blocking mode. 5332 bind - Fixed a bug in local bound port, improved UDP socket performance. 5333 accept - Cleared the INPROGRESS flag when connection is established. 5334 getsockname - Fixed port value for UDP socket. 5335 recv - Fixed how socket timeout is handled. Socket doing blocked receive 5336 with timeout value would not wake up if there are other BSD sockets 5337 receiving data. Fixed return code. Supported flags MSG_PEEK and MSG_DONTWAIT. 5338 recvfrom - Supported flags MSG_PEEK and MSG_DONTWAIT. 5339 select - Fixed fd_set value when socket is not in use. 5340 Removed an obsolete for loop clearing blocked sockets for new connection requests. 5341 send - Supported raw PPPOE. Supported flags MSG_DONTWAIT. 5342 sendto - Supported raw PPPOE. Supported flags MSG_DONTWAIT. 5343 soc_close - Improved UDP and raw socket performance. 5344 Added support for NX_BSD_TCP_SOCKET_DISCONNECT_TIMEOUT in the nx_tcp_socket_disconnect call. 5345 Fixed a bug that secondary socket was not disconnected. 5346 ioctl - Added logic for applications to clear the non-blocking flag. 5347 Modified FIONREAD option to capture the correct number of bytes received on the UDP socket 5348 inet_ntoa - Move logic to internal function inet_ntoa_internal. 5349 inet_aton - Added an error return if an invalid character is received 5350 for base-16 address buffer. Fixed a bug of processing hex number. 5351 FD_SET - Fixed FD_SETSIZE check 5352 FD_CLR - Fixed FD_SETSIZE check 5353 FD_ISSET - Fixed FD_SETSIZE check 5354 FD_ZERO - Fixed FD_SETSIZE value 5355 Added internal functions: 5356 nx_bsd_pppoe_internal_sendto - This function sends raw PPPOE packet to driver directly. 5357 _nx_bsd_pppoe_packet_received - This function receives raw PPPOE packet from driver directly. 5358 inet_ntoa_internal - This function converts an IPv4 address to a string and 5359 returns the size of the string. 5360 bsd_string_to_number - This function converts string to number. 5361 nx_bsd_set_service_list - This function lets user set the service list used by getaddrinfo. 5362 _nx_bsd_string_length - This function returns the length of string. 5363 Modified internal functions: 5364 bsd_initialize - Supported getaddrinfo and getnameinfo APIs. 5365 nx_bsd_timeout_process - Corrected the logic and comment to skip client sockets. 5366 nx_bsd_send_internal - Remove unnecessary code. Supported flags MSG_DONTWAIT. 5367 bsd_number_convert - Added support for HEX number. Added argument to avoid overflow. 5368 nx_bsd_raw_socket_filter - Improved the raw socket search logic. 5369 nx_bsd_tcp_create_listen_socket - Fixed a bug to allow accept from remote end. 5370 nx_packet_data_extract_offset - Fixed a bug when offset and length of packet are both zero. 5371 nx_bsd_udp_packet_received - Improved the UDP socket search logic 5372 nx_bsd_tcp_syn_received_notify - Fixed connection status 5373 _nxd_bsd_ipv4_packet_send - Encapsulated all IGMP-related infomation. 5374 Removed internal functions: nx_bsd_isascii 5375 nxd_bsd.h Fixed FD_SETSIZE, added PPPOE and DNS support, 5376 added inet_pton, inet_ntop, getnameinfo, getaddrinfo, freeaddrinfo services, 5377 supported flags MSG_PEEK. 5378 New configuration option for TCP socket disconnect, NX_BSD_TCP_SOCKET_DISCONNECT_TIMEOUT. 5379 The default value is 1 (timer tick) 5380 5381 nxd_dhcp_client.c Removed MULTI_HOME_NETXDUO/MULTI_HOME_NETX macro definition. 5382 Fixed a bug in nx_dhcp_search_buffer() that could potentially casue buffer overflow 5383 Fixed a packet leak in nx_dhcp_process() in the REQUEST state. 5384 Replaced rand() with NetX Duo macro NX_RAND 5385 Updated nx_dhcp_process and nx_dhcp_send_request_internal for updating the 'secs' field 5386 in the DHCP client header for those DHCP servers that expect this field to be updated. 5387 Fixed a bug in nx_dhcp_add_randomize that could potentially cause a huge random delay factor 5388 Added nx_dhcp_clear_broadcast_flag service for cases where the DHCP server is behind 5389 a router and the server must be able to send unicast messages. 5390 Added nx_dhcp_seconds to the DHCP Client structure for filling in the 'secs' field in 5391 the DHCP header. 5392 Modified calls for allocating packets so that NetX Duo DHCP CLient will also compile and run 5393 in a NetX environment. 5394 Modified nx_dhcp_process for DHCP CLient to update the IP router and IP address from ACKs received 5395 from the server in the RENEW and REBIND state. 5396 Modified the clear gateway address call function to match NetX Duo 5.8 5397 Remove the nx_packet_data_extract_offset function since nx_packet_data_extract_offset function 5398 is defined in NetX/NetXDuo 5.8 5399 Fixed the bug of DHCPv4 Client option added operation: added Server identifier option in DHCP Decline and Release messages, 5400 removed Host name option in DHCP Decline and Release messages. 5401 Remove the internal function from nxd_dhcp_client.h into nxd_dhcp_client.c. 5402 _nx_dhcp_client_send_arp_probe modified to check if an arp entry with matching IP address 5403 does not have a non-zero MAC address. 5404 Modified the logic to get DHCP option value to avoid using the released packet in _nx_dhcp_user_option_retrieve. 5405 Processed the DNS and NTP server options in _nx_dhcp_extract_information. 5406 5407 nxd_dhcp_client.h Modified definition of NX_DHCP_PACKET_PAYLOAD so that NetX Duo DHCP CLient will also compile and run 5408 in a NetX environment. 5409 Added nx_dhcp_seconds to the DHCP CLIENT struct. 5410 Added nx_dhcp_clear_broadcast_flag service for cases where the DHCP server is behind 5411 a router and the server must be able to send unicast messages. 5412 Added variables to store DNS and NTP server addresses. 5413 nxd_dhcp_server.c Modified the process of DHCP Server response message, set the correct destination address 5414 and destination port according to the 'giaddr', 'ciaddr' and broadcast bit. 5415 Modified the logic in nx_dhcp_server_validate_client_message to delay 5416 NACKs to finish checking for invalid data which requires the Server 5417 to respond silently. 5418 Added logic in nx_dhcp_listen_for_messages to check for invalid DHCP packet length 5419 being less than NX_DHCP_HEADER_SIZE. 5420 Removed the MULTI_HOME_NETXDUO macro definition. 5421 Fixed a bug of DHCPv4 Server option added operation 5422 Removed the internal function from nxd_dhcp_server.h into nxd_dhcp_server.c. 5423 Used API to get the interface instead of directly getting the internal parameters. 5424 Corrected memset in nx_dhcp_server_create_ip_list() for the size input arguement. 5425 nxd_dhcp_server.h Created a new error status for malformed packets (0xA4). Added a new define for 5426 DHCP header size (no option bytes) NX_DHCP_HEADER_SIZE. 5427 Removed the MULTI_HOME_NETXDUO macro definition. 5428 Removed useless function declaration (nx_dhcp_create_server_ip_address_list_text). 5429 nxd_dhcpv6_client.c Created nx_dhcpv6_get_valid_ip_address_prefix service for obtaining the prefix of 5430 addresses assigned by DHCPv6 servers. 5431 Modified nx_dhcpv6_thread_entry to automatically restart the SOLICIT messages if the DHCPv6 Client 5432 IPv6 address expires. Previously it put the DHCPv6 Client in the INIT state, requiring the DHCPv6 5433 Client app to manually restart the SOLICIT messages. 5434 Created nx_dhcpv6_get_time_server_address service for obtaining the time server address assigned by DHCPv6 Servers. 5435 Added support for the FQDN option to the DHCPv6 Client, with new API nx_dhcpv6_request_option_FQDN 5436 Fixed the bug for NoAddrsAvail status in nx_dhcpv6_process() 5437 Modified the nx_dhcpv6_server_error_handler function; the message type should be the type of received message 5438 and defined status codes to reflect the error (see nxd_dhcpv6_client.h). 5439 Modified the nx_dhcpv6_resume function to support for DHCPv6 state restore feature. 5440 Added nx_dhcpv6_client_get_record and nx_dhcpv6_client_restore_record functions to realize the DHCPv6 Client restore feature. 5441 Added _nx_dhcpv6_flush_queue_packets function to flush the useless queue packets 5442 Loop to receive the queue packets until get the valid answer or timeout. 5443 nxd_dhcpv6_client.h Added support for the FQDN option, including defining FQDN settings and creating a new NX_DHCPV6_CLIENT_FQDN struct 5444 Added declaration of nx_dhcpv6_get_valid_ip_address_prefix service API service. 5445 Added declaration of nx_dhcpv6_get_time_server_address service API service. 5446 Added nx_dhcp_seconds to the DHCP CLIENT struct. 5447 Defined error status codes for server error handler op codes; NX_DHCPV6_ERROR_STATUS_CODE_IN_OPTION_FIELD, 5448 NX_DHCPV6_ERROR_STATUS_CODE_IN_IA_NA, and NX_DHCPV6_ERROR_STATUS_CODE_IN_IA_ADDRESS. 5449 Added nx_dhcpv6_client_get_record and nx_dhcpv6_client_restore_record functions to realize the DHCPv6 Client restore feature. 5450 Added _nx_dhcpv6_flush_queue_packets function to flush the useless queue packets. 5451 Optimized DHCPv6 struct, removed nx_dhcpv6_valid_advertise_or_reply_flag. 5452 nxd_dhcpv6_server.c Fixed the compiler warnings 5453 Removed MULTI_HOME macro definition. 5454 Used NetX Duo API to get the interface instead of directly getting the internal parameters. 5455 Fixed the bug for physical address check. 5456 5457 nxd_dns.c Added two new services, nx_dns_server_remove_all() which removes all DNS servers 5458 registered with the DNS Client, and nx_dns_info_by_name_get() which gets the 5459 Service record associated with the specified host name. These services sere 5460 previously only available in NetX DNS Client. 5461 Fixed a bug in nxd_dns_response_process() that return error code if the packet 5462 does not contain the RR the application expects. 5463 Fixed a bug in nx_dns_name_string_unencode() that return error code if the buffer 5464 size can not store the all name string. 5465 Change the internal nxd_* function and nxd_* variables to nx_* function and nx_* variables. 5466 Added DNS CACHE feature. 5467 nxd_dns.h Added two new services, nx_dns_server_remove_all() and nx_dns_info_by_name_get(). 5468 Added DNS CACHE feature. 5469 5470 nxd_ftp_client.c Added _nx_ftp_client_connect_internal function and modified the _nxd_ftp_client_connect function. 5471 Added '|' character as the delimiter type for EPRT. 5472 nxd_ftp_client.h Added declaration for _nx_ftp_client_connect_internal function. 5473 nxd_ftp_server.c Added support for packet chain 5474 Fixed complier warning 5475 Added _nx_ftp_server_create_internal function and modified the _nx_ftp_server_create function. 5476 nxd_ftp_server.h Added declaration for _nx_ftp_server_create_internal function. 5477 5478 nxd_http_client.c Fixed a bug that username and password might be NULL. 5479 Added size check for nxe_http_client_create. 5480 nxd_http_client.h Added size check for nxe_http_client_create. 5481 nxd_http_server.c Fixed the logic in _nx_http_server_get_client_request to handle 5482 multipacket Get requests. 5483 Added cache feature. 5484 Supported user defined MIME maps. 5485 Supported packet chain feature. 5486 Supported multipart upload feature. 5487 Unified response line. 5488 Fixed compiler warnings. 5489 Fixed memory leak when packet is chained. 5490 Supported escape character. 5491 Supported absolute URI. 5492 Added separate input pointer to authenticate function if authentication is required. 5493 Return on internal error code. 5494 Added size check for nxe_http_server_create. 5495 Added timeouts for receive, accept, send and disconnect. 5496 Defined values and structures for new features in nxd_http_server.c. 5497 Added new services for new features in nxd_http_server.c. 5498 Supported invalid user/password callback function. 5499 nxd_http_server.h Supported multipart upload feature. 5500 Unified response line. 5501 Supported to response date in header. 5502 Removed declarations for _nxe version. 5503 Added cache feature. 5504 Supported user defined MIME maps. 5505 Added new services for new features in nxd_http_server.c. 5506 Added size check for nxe_http_server_create. 5507 Added timeouts for receive, accept, send and disconnect. 5508 Modified NX_HTTP_MAX_STRING to ensure room for encoded string. 5509 5510 nx_ppp.c Modified logic in nx_ppp_packet_receive_get() to ensure that multipacket PPP messages cleave off 5511 packets with junk data from the datagram (e.g. ppp crc computation and the 0x7e marker). 5512 Modified logic in nx_ppp_lcp_configure_request() and nx_ppp_lcp_terminate_request_sent() to 5513 remove logic decementing the nx_ppp_protocol_retry_counter. The logic is that the counter is 5514 incremented up to NX_PPP_MAX_LCP_PROTOCOL_RETRIES, not down to zero. By decrementing the counter 5515 effectively there was no limit to the retries in the LCP stage. 5516 Removed unnecessary NX_PPP_IPCP_CONFIGURE_REQUEST case in the NX_PPP_IPCP_PEER_CONFIGURE_REQUEST_ACKED state 5517 Added support for DNS request option configuration option. 5518 Added support for LCP echo, both responding to echo requests and sending ping requests with the new service 5519 nx_ppp_ping_request. 5520 Modified the _nx_ppp_hash_generator, and all callers of this function to include a length arguement, 5521 rather than assume the rand_value is null terminated (0x0 is a valid random octet). 5522 Modified nx_ppp_delete to terminate the PPP thread before deleting it. 5523 Fixed nx_ppp_pap_authenticate_nak not to set the PPP authenticated status to TRUE. 5524 Fixed nx_ppp_pap_login to only return TRUE or FALSE, not status, so that mismatched user/passwords will be detected. 5525 Corrected the logic in nx_ppp_thread_entry() determining if the PPP should be set to authenticated. 5526 Modified _nx_ppp_lcp_state_machine_update() to accept LCP requests if already in the completed state (WIP). 5527 Corrected logic in _nx_ppp_pap_state_machine_update() setting the PPP PAP state if PAP authentication fails. 5528 nx_ppp.h Added DNS request option configuration option to disable the DNS request in IPCP messages. 5529 Added support for LCP echo, both responding to echo requests and sending ping requests with the new service 5530 nx_ppp_ping_request. 5531 Modified the _nx_ppp_hash_generator to include a length arguement, 5532 rather than assume the rand_value is null terminated (0x0 is a valid random octet). 5533 5534 nxd_smtp_client.c Fixed error in invalid pointer check in _nxe_smtp_mail_send. 5535 Fixed compiler error when IPv6 is disabled in _nxd_smtp_client_create. 5536 Fixed bug checking for invalid pointers. 5537 Fixed a typo in _nx_smtp_cmd_message. 5538 Fixed case insensitive compare for challenge word. 5539 Corrected 5.2 release date from 04-15-13 to 04-15-2013 5540 nxd_smtp_client.h Corrected 5.2 release date from 04-15-13 to 04-15-2013 5541 5542 nxd_snmp.c Renamed API to be consistent with Express Logic names: 5543 nx_snmp_agent_get_current_version to nx_snmp_agent_current_version_get 5544 nx_snmp_agent_set_current_version to nx_snmp_agent_current_version_set 5545 nx_snmp_agent_set_private_string to nx_snmp_agent_private_string_set 5546 nx_snmp_agent_set_public_string to nx_snmp_agent_public_string_set 5547 nx_snmp_agent_received_private_string to nx_snmp_agent_private_string_test 5548 Simplified the logic in _nx_snmp_agent_private_string_test. 5549 Used zero as terminal of string in _nx_snmp_agent_private_string_set 5550 and _nx_snmp_agent_public_string_set. 5551 Created nx_snmp_agent_public_string_set to set the SNMP Agent public string. 5552 Created nx_snmp_agent_get_type_test to determine if an SNMP message received 5553 is a GET or SET type. 5554 Modified nx_snmp_version_1_process, nx_snmp_version_2_process and nx_snmp_version_3_process 5555 to support the nx_snmp_agent_get_type_test service (save the request 5556 type of the current received message). 5557 Created nxd_snmp_agent_trapv2_oid_send and nxd_snmp_agent_trapv3_oid_send services. 5558 nxd_snmp.h Renamed API to be consistent with Express Logic names: 5559 nx_snmp_agent_get_current_version to nx_snmp_agent_current_version_get 5560 nx_snmp_agent_set_version to nx_snmp_agent_version_set 5561 nx_snmp_agent_set_private_string to nx_snmp_agent_private_string_set 5562 nx_snmp_agent_set_public_string to nx_snmp_agent_public_string_set 5563 nx_snmp_agent_received_private_string to nx_snmp_agent_private_string_test 5564 Added new API nx_snmp_agent_public_string_set and nx_snmp_agent_request_get_type_test 5565 Created nxd_snmp_agent_trapv2_oid_send and nxd_snmp_agent_trapv3_oid_send services. 5566 5567 nxd_sntp_client.c Fixed a bug in setting flags of request packet. 5568 Fixed a compiler error when IPv6 is disabled. 5569 Fixed compiler warnings. 5570 Fixed a bug that dispersion check is disabled, the return 5571 status should be success. 5572 nxd_sntp_client.h Fixed default value for packet size. 5573 Fixed predefined value of current year and NTP time at 1999-01-01. 5574 5575 nxd_telnet_server.c Added support for option negotiation. The supported options are "ECHO" and "Suppress Go Ahead". 5576 Fixed a bug that connection end callback function was not invoked. 5577 Added logic to handle a RST where the socket is already closed. 5578 Added a callback to set remote echo (used by the NetX Duo SHELL Telnet driver). 5579 nxd_telnet_server.h Added support for option negotiation. The supported options are "ECHO" and "Suppress Go Ahead". 5580 5581 nxd_tftp_server.c Remove the MULTI_HOME macro definition. 5582 Added support for packet chaining. 5583 nxd_tftp_server.h Remove the MULTI_HOME macro definition. 5584 nxd_tftp_client.c Fixed packet leaks in nx_tftp_client_file_read and nx_tftp_client_file_open. 5585 Remove the MULTI_HOME macro definition. 5586 Modified nx_tftp_client_file_write and nx_tftp_client_file_open (write request) to save server 5587 error type and message to TFTP Client if an ACK is not received after data is sent. 5588 Modified nx_tftp_client_file_read to fix bug parsing the server error type from the server 5589 if an error code is received. 5590 5591 5592Release 5.4 11-23-2009 5593 5594 nxd_dhcp_client.c Added logic to clear non specific DHCP broadcast packets from the DHCP Client 5595 receive queue in nx_dhcp_thread_entry() and nx_dhcp_get_response(). This is enabled by 5596 defining the NX_DHCP_CLIENT_CLEAR_QUEUE option in nx_dhcp.h. 5597 Made corrections to nx_dhcp_process for more accurate handling of retransmission 5598 intervals in both the process of reaching the BOUND state and in the RENEW and REBIND 5599 states. 5600 Simplified the logic for extracting network parameters from the Server DHCP messages 5601 between nx_dhcp_extract_information and nx_dhcp_process, in particular if the 5602 ARP probe is enabled. This also fixed a bug with using nx_dhcp_send_arp_probe of 5603 calling the state change notify function before the probe completed and the DHCP Client 5604 properly promoted to the BOUND state. 5605 Simplified the logic in nx_dhcp_start and nx_dhcp_request_client_ip for setting the DHCP 5606 Client state with respect to the Client requesting a particular IP address. 5607 Modified nx_dhcp_get_response() to prevent invalid packet releases. 5608 Removed the requirement for having the DHCP CLient to have a non zero interface IP address for using 5609 the option to skip the discovery step. 5610 Modified nx_dhcp_process, nx_dhcp_release, nx_dhcp_decline and nx_dhcp_reinitialize to clear the DHCP 5611 Client copy of network parameters (e.g. network mask, gateway) if the DHCP Client is clearing the 5612 interface IP address and gateway. 5613 Made a correction to nx_dhcp_send_response_internal to always send DISCOVERY messages 5614 as broadcast packets as per the RFC 2131. 5615 Made a correction to nx_dhcp_send_response_internal to always send REQUEST messages 5616 as broadcast packets if the DHCP Client is in the REBIND or REQUESTING state as per the RFC 2131. 5617 Made corrections for creating and sending the INFORM_REQUEST message. 5618 Created nx_dhcp_decline() to send DECLINE messages 5619 Modified nx_dhcp_send_request() to disallow RELEASE and DECLINE messages. 5620 Removed logic in nx_dhcp_client_arp_probe_send() setting IP network parameters. Modified to only 5621 return status if the IP address is not in use. 5622 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(). 5623 Modified nx_dhcp_delete() to unbind the socket before deleting. 5624 Modified nx_dhcp_delete() and nx_dhcp_create() to delete the DHCP Client packet pool only if the DHCP 5625 Client task created it. 5626 Modified nx_dhcp_option_retrieve() for an error in parsing the option buffer. 5627 Modified nx_dhcp_process() to sleep for the NX_DHCP_TIME_INTERVAL only if the 5628 DHCP client is at or beyond the bound state. 5629 Modified nx_dhcp_process() to set the IP network address to zero if the ARP probe 5630 fails. This ensures the DHCP Client sends the subsequent DHCP messages out as broadcast 5631 (not unicast). 5632 Modified nx_dhcp_process() to adjust the DHCP Client time remaining on its IP lease for 5633 the length of time of the ARP probe. 5634 nxd_dhcp_client.h Added nx_dhcp_decline to the list of DHCP Client API services 5635 Modified nx_dhcp_client_arp_probe_send definition 5636 Added internal flags to the DHCP CLient struct to simplify internal logic of the DHCP 5637 Client processing messages from the Server. 5638 nxd_dhcp_server.c Replaced an array of CHAR pointers with a single CHAR array for the DHCP 5639 Server dhcp_name field. Modified nx_dhcp_server_create() to copy the input 5640 name to the server dhcp_name field. 5641 5642 5643Release 5.3 08-03-2009 5644 nxd_bsd.c nx_bsd_raw_filter_set - sets a function pointer to the BSD function that filters packets when raw 5645 sockets are enabled in NetX Duo and NX_RAW_PACKET_FILTER_ENABLE is defined at NetX Duo 5646 library build time. Note that if there are multiple BSD raw sockets using the same protocol, 5647 the behavior in NetX Duo is undefined. BSD sockets should copy received packets to all raw sockets 5648 having the same protocol, but this is not implemented in BSD 5.3 5649 nx_bsd_packet_receive- Retrieves packets enqueued on the BSD raw socket queue. 5650 nx_bsd_raw_packet_info_extract - Extracts the raw packet sender and physical interface. 5651 nx_bsd_raw_receive_notify - This is the callback function NetX Duo uses when a raw packet has been received 5652 and raw sockets are enabled in NetX Duo. 5653 nx_bsd_raw_packet_filter - receives packets from NetX Duo if raw sockets are enabled and determines if 5654 BSD will consume the packet or let NetX Duo continue processing the packet e.g. hand off to TCP, 5655 UDP, ICMP and other protocol handlers. 5656 Modified functions 5657 sendto - modified to send raw packets out the BSD socket if raw sockets are enabled. 5658 recv - modified to receive raw packets if raw sockets enabled in NetX Duo 5659 select - modified to receive raw packets if raw sockets enabled in NetX Duo 5660 connect - modified to check for and disallow raw sockets to use this service 5661 send - modified to check for and disallow raw sockets to use this service 5662 soc_close - modified for closing BSD sockets enabled for raw socket handling, including 5663 manully clearing packet from the raw receive queue 5664 nxd_bsd.h Added the NX_BSD_PRINT_ERROR macro definition (disbaled by default0 for debug output 5665 5666 nxd_dhcp_client.c Added _nx_dhcp_server_address_get, for obtaining the DHCP server address and 5667 _nx_dhcp_packet_pool_set to allow the host application to create the packet pool instead 5668 of the default DHCP Client packet pool. 5669 Added critical section and mutex protection to the DHCPv6 Client 5670 Modified nx_dhcp_get_response to add missing nx_packet_release calls to prevent packet leaks. 5671 nxd_dhcp_client.h Corrected the definition for NX_PACKET_ALLOCATE_TIMEOUT 5672 Created a configuration option NX_DHCP_CLIENT_USER_CREATE_PACKET_POOL for the new feature for the 5673 host application to optionally create the DHCP Client packet pool 5674 nxd_dhcp_server.c Renamed internal functions, error constants and definitions to avoid conflicts with the 5675 DHCP client. 5676 nxd_dhcp_server.h Renamed internal functions, error constants and definitions to avoid conflicts with the 5677 DHCP client. 5678 nxd_dhcpv6_client.c Modified the DHCPv6 Client thread task to be stoppable at any time 5679 Added nx_dhcpv6_stop and nx_dhcpv6_reinitialize for stopping and restarting the Client 5680 Added nx_dhcpv6_register_IP_address for updating NetX Duo with the DHCPv6 Client assigned IP address 5681 Modified DHCPv6 Client to remove IP address from the IP instance address table if an IP address is not reassigned 5682 for example if rebind fails or host decides to release or decline an assigned address 5683 Added critical section and mutex protection to the DHCPv6 Client 5684 nxd_dhcpv6_client.h Corrected the timer interval for the accrued lifetime entry function to use seconds, not ticks 5685 Created a BOUND state and removed the FAILURE state (not useful); the BOUND state is a drop through 5686 state in the DHCPv6 Client processing thread (does nothing) 5687 5688 5689Release 5.2 12-30-2007 5690 5691 nx_auto_ip.c Fixed a bug causing an infinate loop 5692 Added support for NetX Duo (5.5 and later) to run over IPv4 when IPv6 is enabled. 5693 nx_auto_ip.h Added support for NetX Duo (5.5 and later) to run over IPv4 when IPv6 is enabled. 5694 5695 nxd_bsd.c Fixed compile error caused by NX_BSD_ADDRESS_FAMILY_ERROR and NX_BSD_ERROR(NX_BSD_ERROR, __LINE__). 5696 nxd_bsd.h NX_BSD_INHERIT_LISTENER_SOCKET_SETTINGS corrected to be enabled by default 5697 5698 nxd_dhcp_client.c First release of NetX Duo DHCP Client (branched from NetX DHCP Client) 5699 Renamed the NetX Duo Client source code file from nx_dhpc.c to nxd_dhcp_client.c to specify the 5700 DHCP Client and to indicate that the DHCP Client will work properly in an IPv6 enabled NetX Duo 5701 environment. 5702 nxd_dhcp_client.h Renamed the NetX Duo Client header file from nx_dhpc.h to nxd_dhcp_client.h 5703 nxd_dhcp_server.c First release of NetX Duo DHCP Server (branched from NetX DHCP Server) 5704 Renamed the NetX Duo Server source code file from nx_dhpc_server.c to nxd_dhcp_server.c to 5705 indicate that the DHCP Server will work properly in an IPv6 enabled NetX Duo 5706 environment. 5707 nxd_dhcp_server.h Renamed the NetX Duo Server header file from nx_dhpc_server.h to nxd_dhcp_server.h 5708 nxd_dhcpv6_client.c Fixed compile errors in the NetX duo 5.6 environment. 5709 v5.1 patches: 5710 Modified nx_dhcpv6_start() for DHCPv6 client hosts rebooting with a valid IP lease already assigned. 5711 Modified nx_dhcpv6_client_create_duid() not to set the link local address. The host application must do this 5712 Added support for multihoming and NetX Duo v5.5 and later. 5713 nxd_dhcpv6_client.h Fixed compile errors in the NetX duo 5.6 environment. 5714 5715 nxd_ftp_client.c Moved data socket disconnect ahead of releasing the 5716 port and removing from the listen queue, flush server 5717 FTP messages from previous open request before starting 5718 the current open file request, added an unnaccept call 5719 if the data socket accept call fails, disconnect data 5720 socket if an error occurs on the control socket ending 5721 the file open request, increment the data port in the 5722 event the FTP server puts the data socket in a timed wait, 5723 fixed the source of the IPv6 address in the number to 5724 ascii converstion routine, flush server FTP messages 5725 from previous open request before starting the current 5726 open file request, added an unnaccept call if the data 5727 socket accept call fails, disconnect data socket if an 5728 error occurs on the control socket ending the file open 5729 request, increment the data port in the event the FTP 5730 server puts the data socket in a timed wait. 5731 nxd_ftp_client.h Added client data socket port to increment data port 5732 binding on successive connections. 5733 nxd_ftp_server.c Added a cast to the FTP server pointer, added a check for 5734 whether or not IPv6 is enabled in NetX Duo. 5735 nxd_ftp_server.h Added conditional IPv6 check for IPv6 specific 5736 function declarations. 5737 5738 nxd_http_server.c Created _nx_http_server_content_length_get_extended and 5739 _nx_http_server_content_get_extended services which will accept 5740 empty (content-length = 0) PUT and POST requests. 5741 Corrected 411 error codes in HTTP server replies to 400 error codes 5742 since 411 error code is when the HTTP server refuses to accept a 5743 request without a defined content-length. HTTP 1.0 permits requests 5744 without Content-length but does not permit Content-length that does 5745 not match the message body. 5746 5747 nx_ppp.c Added logic in nx_ppp_ipcp_state_machine_update() to handle late configuration requests 5748 after the other side has completed the IPCP handshake. 5749 Corrected the processing of the CHAP challenge 'name' in nx_ppp_chap_challenge_respond(). 5750 Fixed a corner case if packet payload size falls on a certain boundary such that the 7E marker 5751 terminating PPP message overwrites the end of the packet payload boundary in nx_ppp_packet_receive_get(). 5752 Also fixed an error in checksum computation for the same packet payloads of the same size. 5753 Added packet chaining support 5754 Modified nx_ppp_receive_packet_process to only call link up callback if PPP has just transitioned to 5755 IPCP complete state, not if it was already in that state. 5756 5757 nxd_telnet_server.c Added support for activity timeout disconnect callback. When a connection times out 5758 NetX Duo Telnet Server calls the disconnect callback. Previously, it simply 5759 closed the connection silently. 5760 Added a current open connection counter and new API 5761 nx_telnet_server_get_open_connection_count for retrieving the open conneciton count. 5762 nxd_telnet_server.h Added support for the new API nx_telnet_server_get_open_connection_count 5763 5764 5765Release 5.1 01-12-2012 5766 5767 5768 nxd_dhcpv6_server.c Modified the nx_dhcpv6_server_create function to include a stack size. Defaulted the 5769 DHCPv6 server IP address index to 1 instead of requiring the host application to use 5770 the nx_dhcpv6_server_set_interface (only necessary if using the non primary interface 5771 or global address not at index 1 in the IP address table). 5772 Renamed internal functions and #defines to avoid compile erros in projects including the DHCPv6 Client 5773 nxd_dhcpv6_server.h Renamed internal functions and #defines to avoid compile erros in projects including the DHCPv6 Client 5774 5775 nxd_http_client.h Created a separate header file for HTTP Client and HTTP Server 5776 nxd_http_server.h Created a separate header file for HTTP Client and HTTP Server 5777 5778 nxd_snmp.c Added support for packet chaining 5779 Moved nx_udp_socket_bind call from nx_snmp_agent_create to nx_snmp_agent_start 5780 moved nx_udp_socket_unbind in nx_snmp_agent_stop. This prevent packets from 5781 piling up on the receive queue before the SNMP agent thread can start processing them. 5782 Corrected how SNMPv3 packets are encrypted by adding an extra sequence between the top level 5783 PDU sequence and the engine ID. nx_snmp_version_3_process, nx_snmp_version_3_report_send 5784 and nx_snmp_agent_encrypt_pdu modified accordingly. 5785 Added trap security to provide authentication and encryption for trap messages. The keys for trap message processing 5786 can take separate passwords than the keys for processing responses messages. 5787 Added logic to handle empty strings in _nx_snmp_object_id_get 5788 Modified nx_snmp_version_3_process and nx_snmp_version_3_discovery to fix bugs handling discovery requests. 5789 Modified nx_snmp_version_3_process to fix bugs when authentication enabled. 5790 Added support for negative INTEGER data types in _nx_snmp_utility_object_data_get 5791 Added _nx_snmp_agent_v3_context_boots_get() 5792 Added support for setting SNMP version at run time and creating private community strings: 5793 Created nx_snmp_agent_get_current_version to determine the SNMP version of the most recent 5794 SNMP manager packet sent to the agent. 5795 Created nx_snmp_agent_set_version to set the enable/disable the SNMP agent for SNMPV1, 5796 SNMPV2, and SNMPv3. These run time settings are overridden by the #defines 5797 (NX_SNMP_DISABLE_V1, NX_SNMP_DISABLE_V2, and NX_SNMP_DISABLE_V3 ). Enabling the SNMP 5798 agent for SNMPv1 at run time has no effect if NX_SNMP_DISABLE_V3 is defined. 5799 Created nx_snmp_agent_set_private_string to set the SNMP Agent private string. This enables 5800 the agent to have public and private data, and if it will accept the SNMP manager 5801 packet SET requests. 5802 Created nx_snmp_agent_set_public_string to set the SNMP Agent public string. The default value 5803 is "public". Previously the NetX Duo SNMP Agent did not evaluate the community string 5804 and as such allowed all SET requests and all data was considered public. 5805 Created nx_snmp_agent_received_private_string to compare the community string 5806 in the received SNMP packet with the Agent private string for a match. 5807 Modified nx_snmp_agent_version_1_process and nx_snmp_agent_version_2_process to 5808 send an error report if an unsupported object type is received. 5809 Modified key use services to accept a null key pointer in the error handler; this allows the caller 5810 to disable authentication or encryption at run time. 5811 nxd_snmp.h Added new API nx_snmp_agent_get_current_version, nx_snmp_agent_set_version, 5812 nx_snmp_agent_set_private_string, nx_snmp_agent_set_public_string, and 5813 nx_snmp_agent_received_private_string 5814 5815 Modified the NX_SNMP_AGENT control block to support the new API/features.