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.