NDK Change Log
Table of Contents
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_
to the name:
NOERROR |
NDK_NOERROR |
FORMERR |
NDK_FORMERR |
SERVFAIL |
NDK_SERVFAIL |
NXDOMAIN |
NDK_NXDOMAIN |
NOTIMP |
NDK_NOTIMP |
REFUSED |
NDK_REFUSED |
OVERFLOW |
NDK_OVERFLOW |
MEMERROR |
NDK_MEMERROR |
SOCKETERROR |
NDK_SOCKETERROR |
NODNSREPLY |
NDK_NODNSREPLY |
- 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-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).