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).