NDK Change Log
Table of Contents
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-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).