NDK Change Log
Table of Contents
NDK 3.70
Bugs
NDK-451 |
DNSReadRecord silently drops records if there is not enough memory |
NDK-449 |
SlNetIfNDK_getSockName does not translate NDK error code upon failure |
NDK-447 |
shutdown() not implemented in SlNetIfNDK |
NDK-446 |
getpeername() not implemented in SlNetIfNDK |
NDK-435 |
F2838X driver should not filter IPv6 multicast packets |
NDK-421 |
Build failure when enabling _STRONG_CHECKING |
NDK-419 |
Add docs describing ipaddrhook timing when configured with static IP |
NDK-418 |
SlNetIfNDK_loadSecObj does not check for duplicate object names |
NDK-408 |
NDK build instructions are out-of-date |
NDK-393 |
Update Docs with user feedback |
NDK-89 |
UDP client socket doesn't “auto bind” its port |
Enhancements
NDK-439 |
C-ROV sockets view should show bound port numbers |
NDK-438 |
Move SysConfig generated NIMU table from drivers to NDK |
NDK-416 |
Add NIMU driver for F2838X |
NDK-412 |
F2838X driver should support HW checksum error drop IOCTL |
NDK-411 |
Add NIMU IOCTL command to control the checksum offload engine's packet drop policy |
NDK-402 |
Add M33 (TICLANG) library support |
NDK-400 |
Users Guide style improvements |
NDK-396 |
remove unneeded -D_INCLUDE_NIMU_CODE from package.bld scripts |
NDK-391 |
NDK C-ROV support files should be generated by SysConfig |
NDK-355 |
Refactor SysConfig service flags |
NDK-354 |
Enable NIMU drivers to offload IPv6 Checksums to hardware |
NDK 3.61
Bugs
NDK-392 |
General documentation updates |
NDK-390 |
TI toolchain versions in release notes are incorrect |
NDK-387 |
NDK's general syscfg module does not pass configuration to stack init hook |
NDK-382 |
NDK services create memory leak when exiting their tasks |
NDK-381 |
Broken link in ConfigDoc.html's DHCP.dhcpClientPcbServer description |
NDK-380 |
Users cannot rebuild A53 libraries |
Enhancements
NDK-353 |
Add M33F (TICLANG) library support |
NDK 3.60
Bugs
NDK-322 |
Rename NDK_RegisterHook and NDK_getsockctx to conform to naming conventions |
NDK-319 |
Possible double free if TLS handshake fails |
NDK-318 |
SlNetIfNDK should use POSIX sem's rather than pthread_mutexes |
NDK-316 |
Remove SysConfig-generated code's dependency on Display |
NDK-315 |
Sockets do not remove themselves from the fd table if not closed through slnetifndk |
NDK-314 |
Changing SysConfig IP addr config from static to dynamic causes build failure |
NDK-92 |
return value of NIMU registered init function not checked |
NDK-29 |
Remove the need for Telnet users to supply VerStr symbol |
Enhancements
NDK-309 |
Enable NIMU drivers to offload IPv4 Checksums to hardware |
NDK-297 |
Provide SysConfig support for configuring the NDK's DHCP Server Module |
NDK-296 |
Provide SysConfig support for configuring the NDK's NAT Module |
NDK-295 |
Provide SysConfig support for configuring the NDK's DNS Module |
NDK-294 |
Update docs with info on Selective Acknowledgement feature |
NDK-270 |
Extend C-ROV NDK socket support |
NDK-238 |
Provide SysConfig support for configuring the NDK's Telnet Module |
Compatibility Notes
NDK 3.60 is mostly compatible with 3.50, with the following exceptions:
- To address NDK-322, the following functions have been renamed:
NDK_getsockctx()
became NDK_getSockCtx()
, and NDK_RegisterHook()
became NDK_registerHook()
. We expect very few users will be impacted, as both of these functions were introduced in NDK 3.50.
- For SimpleLink devices, the SysConfig feature is still in ‘preview’ and the NDK is not yet ensuring compatibility from release to release. Some NDK configuration variables have changed, and as a result, existing .syscfg scripts that configure the NDK may not load, and users may have to restart from an existing example.
NDK 3.50
Bugs
NDK-290 |
Shallow copy of deep object in ti_ndk_config_ip_init() |
NDK-289 |
Fix return codes in slnetifndk sockopt translation |
NDK-284 |
Update ti.ndk.config package to load POSIX Settings module |
NDK-275 |
SlNetSock_getLocalName() broken when using NDK |
NDK-274 |
Broken links in API Guide's Table of Contents |
NDK-268 |
Access to ti_ndk_socket_fdtable must be atomic |
NDK-251 |
NDK_socket/accept needs to honor config parameter maxSockFileDesc |
NDK-228 |
Release notes link to benchmarks broken |
NDK-218 |
Update TcpPrSetOption() to allow SACK to be disabled |
Enhancements
NDK-283 |
Add NDK 2.x to 3.x Migration Guide |
NDK-276 |
SysConfig - Place NDK's Modules in their own category |
NDK-269 |
Update docs to improve IPv6 usability |
NDK-263 |
Minor documentation clarifications |
NDK 3.40
Bugs
NDK-262 |
Translate TCP options in SlNetIfNDK |
NDK-261 |
Add NDK prefix to TCP constants |
NDK-260 |
Error codes in serrno.h need to be prefixed with NDK_ |
NDK-259 |
Add support for ENETDOWN in SlNetIfNDK |
NDK-257 |
Remove documentation for APIs no longer present in NDK |
NDK-252 |
Add support for MSG_PEEK and other missing flags in SlNetIfNDK_recv |
NDK-240 |
Update DNS macros to have NDK_ prefix |
NDK-233 |
Add support into SlNetIfNDK for SO_BROADCAST option |
NDK-135 |
check for NULL pointer before deref in IPv6 route code |
Enhancements
NDK-242 |
Move inet_ntop and inet_pton functions from NDK and into NS |
NDK-199 |
Add C-ROV support into NDK |
NDK-121 |
Add A53F gcc support |
NDK-105 |
Remove support for several legacy targets (non-gcc A8, M3, non-TI M4) |
Compatibility Notes
This release contains several compatibility breaks, which may require users to update and rebuild their source code.
- To address NDK-261, the following TCP macro names were changed. If your code contains references to any previous macro name, it must be updated to prepend
NDK_
to the name:
TCP_NODELAY |
NDK_TCP_NODELAY |
TCP_MAXSEG |
NDK_TCP_MAXSEG |
TCP_NOPUSH |
NDK_TCP_NOPUSH |
TCP_NOOPT |
NDK_TCP_NOOPT |
TCP_SACKPERMITTED |
NDK_TCP_SACKPERMITTED |
TCP_MAXRTT |
NDK_TCP_MAXRTT |
- To address NDK-240, the following DNS macro names were changed. If your code contains references to any previous macro name, it must be updated to prepend
NDK_DNS_E
to the name, with the exception of NOERROR
. NOERROR
is prepended with NDK_DNS_
:
NOERROR |
NDK_DNS_NOERROR |
FORMERR |
NDK_DNS_EFORMERR |
SERVFAIL |
NDK_DNS_ESERVFAIL |
NXDOMAIN |
NDK_DNS_ENXDOMAIN |
NOTIMP |
NDK_DNS_ENOTIMP |
REFUSED |
NDK_DNS_EREFUSED |
OVERFLOW |
NDK_DNS_EOVERFLOW |
MEMERROR |
NDK_DNS_EMEMERROR |
SOCKETERROR |
NDK_DNS_ESOCKETERROR |
NODNSREPLY |
NDK_DNS_ENODNSREPLY |
- To address NDK-260, all of the error code macros found in ti/ndk/inc/serrno.h have been renamed to have
NDK_
prepended to them.
- For example,
EINVAL
has been renamed and is now NDK_EINVAL
.
- Similar for all other error macros found in serrno.h
- If your code contains references to any of these macros, you must update your code to use the new names and rebuild.
- Refer to ti/ndk/inc/serrno.h for further details.
- To address NDK-242, the following APIs were moved out of the NDK and into the Network Services product:
inet_pton
inet_ntop
- If your code contains references to these functions, you may not have to change the actual calls to these functions in your code (since these BSD/POSIX APIs are identically defined by the BSD/POSIX headers in Network Services). However, you may need to update include path and link libraries of your application build, so that Network Services header files and libraries are pulled in. Additionally (if not already being done), it may be necessary to add the appropriate Network Services runtime initialization calls into your application. Please refer to the Network Services documentation and examples for more details.
NDK 3.30
Bugs
NDK-244 |
Translate address family in SlNetIfNDK |
NDK-243 |
Allow servers to request client authentication |
NDK-237 |
TLS handshake fails when the server requests a local certificate but none is provided |
NDK-234 |
inet_ntop() does not null terminate strings correctly for IPv6 |
NDK-232 |
Call Sock6CleanPcb() when an IPv6 address is removed and/or IPv6 is deinitialized |
NDK-230 |
Potential crash if client on a closed, lingering socket sends TCP_RST |
NDK-225 |
Potential crash when sockets linger and the stack is shut down |
NDK-221 |
Broken links in Users and API Guides |
NDK-205 |
Add NDK_ prefix to BIGENDIAN macro |
NDK-200 |
Add NDK_ prefix to global stats variables |
NDK-36 |
add llEnter/llExit around calls to SockCleanPcb() |
Enhancements
NDK-206 |
Update preprocessor big endian detection for all supported compilers |
NDK-127 |
Move getaddrinfo and freeaddrinfo into NS |
Compatibility Notes
getaddrinfo()
and freeaddrinfo()
have been migrated to the Network Services Component (ti/net namespace).
- As part of this migration, the values of the associated error code macros have changed (e.g.
EAI_FAMILY
, EAI_NONAME
, etc.)
- Therefore, any user application code that’s referencing the
EAI_*
macros must be rebuilt.
- The signatures of these functions remain unchanged, so there is no break in compatibility regarding the APIs themselves.
- Some NDK global variables and macros have been renamed to have a namespace prefix
- Any code that’s referencing the NDK global statistics variables (e.g.
tcps
, udps
, etc.) will need to be updated ito add the NDK_
prefix to those macros (e.g. NDK_tcps
, NDK_udps
) and rebuilt.
- Similarly, any code that references the NDK macro
BIGENDIAN
will need to be updated to have the prefix (NDK_BIGENDIAN
) and rebuilt.
NDK 3.20
Bugs
NDK-208 |
Change incorrect use of pthread_self() API in example code of documentation |
NDK-71 |
NDK BSD fd_set type overridden by sys/types.h shipped with BIOS |
Enhancements
NDK-216 |
Handle big endian detection properly for new tool chains |
NDK-190 |
NDK documentation updates |
NDK-184 |
Support SlNetIfNDK_getConnectionStatus() |
NDK-175 |
Make NDK callable from any thread |
NDK-171 |
Update NIMU IOCTL to support query of driver/interface link status |
NDK-55 |
Convert NDK Users Guides from pdf to html (via markdown) |
Compatibility Notes
- NDK + SYS/BIOS applications must define a BIOS Task hook set and register function
- The NDK requires the following function to be registered in the SYS/BIOS *.cfg file:
This can be done using the following configuration code in the *.cfg file:
var Task = xdc.useModule('ti.sysbios.knl.Task');
var ndkHooks = new Task.HookSet();
ndkHooks.registerFxn = '&NDK_hookInit';
Task.addHookSet(ndkHooks);
This Task hook set and registration is handled automatically for application configurations that use the ti.ndk.config.Global module
- A special note to SimpleLink SDK users building non-NDK applications with SYS/BIOS:
- If your application is using the default kernel configuration file, it will already have the previously mentioned configuration code to register the
NDK_hookInit()
function. This will result in undefined symbol errors for non-NDK applications.
- There are three ways to work around this problem in a non-NDK SYS/BIOS application:
- Use a different SYS/BIOS kernel configuration (*.cfg) file
- By default, the kernel configuration used in the examples contains the above code. You can create a new kernel configuration file which does not register the
NDK_hookInit()
function (hence removing the unwanted dependency) and build your application against it.
- Link the appropriate NDK OSAL library (which contains the
NDK_hookInit()
function definition) into your application.
- Although your application doesn’t need the NDK, this will resolve the undefined symbol error.
Provide an empty NDK_hookInit()
stub. This could be done using a weak symbol as follows:
/*
* The following function is only used in applications that use the NDK TCP/IP
* stack
*/
#if defined(__IAR_SYSTEMS_ICC__)
__weak void NDK_hookInit(int32_t id) {}
#elif defined(__GNUC__) && !defined(__ti__)
void __attribute__((weak)) NDK_hookInit(int32_t id) {}
#else
#pragma WEAK (NDK_hookInit)
void NDK_hookInit(int32_t id) {}
#endif
NDK 3.10
Bugs
NDK-201 |
udpecho does not receive correct payload |
NDK-197 |
accept() must support NULL address and address_len params |
NDK-192 |
NDK_bind needs to check for NULL arguments passed |
NDK-183 |
Race condition in SlNetIfNDK_startSec |
Enhancements
NDK-198 |
SlNetIfNDK should return more specific error codes when possible |
NDK-196 |
Add NDK_ prefix to all network byte order macros |
NDK-189 |
SlNetSock-using apps shouldn't require mbedtls footprint if they don't use it |
Compatibility Notes
- To address NDK-196, any code intending to use the NDK-provided “network byte order macros” (e.g.
htonl()
) will need to add the NDK_
prefix to those macros (e.g. NDK_htonl()
). In most cases, users intend to use the BSD/POSIX-defined macros (rather than those in the NDK), and should 1) continue using the BSD/POSIX-defined macros (e.g. htonl()
), and obtain those definitions from the BSD/POSIX headers (e.g. #include <arpa/inet.h>
), found along the BSD/POSIX include path (i.e. source/ti/net/bsd).
NDK 3.00
Bugs
NDK-181 |
NDK timeval struct conflicts with definition in GCC 6.x tool chain |
NDK-167 |
Fix memory leak in socket clean up code |
NDK-130 |
Remove conflicting bzero and bcopy definitions from the NDK |
NDK-120 |
NDK should support/use actual integer file descriptors for socket APIs |
NDK-119 |
Freeing invalid sockets causes crash |
NDK-67 |
Various NDK definitions (pipe and fd macros) conflict with the same ones that are shipped in the compiler |
NDK-61 |
possible race condition in TcpPrDetach causes NULL ptr dereference |
NDK-41 |
NDK interrupt module creates a 256 byte array to store a single interrupt |
NDK-17 |
Must update NDK list_* APIs to have a function pre-fix |
Enhancements
NDK-169 |
Remove NDK's (light) ROV support |
NDK-168 |
Remove C66 big endian libraries |
NDK-155 |
Enable FreeRTOS support in NDK |
NDK-151 |
Add mbedtls support to NDK |
NDK-142 |
Add MSP432E support to NDK |
NDK-140 |
Add support for 32-bit and 64-bit Linux targets in NDK |
NDK-138 |
Remove SNTP from NDK (as it is moving to Network Services) |
NDK-128 |
mmBulkAlloc should call malloc() NOT Memory_alloc() |
NDK-126 |
Remove NDK local typedefs (e.g. UINT32) and use C99 standard types |
NDK-124 |
NDK should use system wide errno |
NDK-115 |
MSG_NOSIGNAL is undefined |
NDK-103 |
Update OS layer to use POSIX APIs |
NDK-73 |
use GNUC preprocessor constant, not default #else, for GNU compiler specific code |
NDK-70 |
ARP table behavior implemented by SDOCM00107816 should be default behavior in NDK |
NDK-20 |
remove Interrupt_add() and related APIs |
Compatibility Notes
NDK 3.x has undergone significant changes from NDK 2.x, and as such, anyone upgrading from a previous NDK 2.x release will require user changes. A brief summary of these changes include:
- Restructuring of the OSAL to support FreeRTOS as well as SYS/BIOS
- Alignment on common C99 data types
- Gradual migration of BSD support from stack-specific NDK (ti/ndk namespace) into stack-agnostic Network Services (ti/net namespace).