.. _ip_stack_migrate:

Migrating from Zephyr v1.6 IP Stack to v1.7
###########################################

Zephyr v1.6 and earlier is using network IP stack that has its origin in uIP.
The uIP stack was modified heavily to use it in Zephyr. The uIP stack had
limitations described below that required new and native IP stack to be
developed.

This document is a high level description of the changes between these two
major Zephyr releases. For individual changes, the application developer can
find more details in the network header file documentation in include/net/.

Because of this new native IP stack, the following changes are required to
migrate applications using the older v1.6 IP stack to the new v1.7 IP stack:

Dual IPv6 and IPv4 stack support.
  In Zephyr v1.6, applications could not
  use both IPv6 and IPv4 simultaneously. This is changed in Zephyr v1.7 and the
  IP stack supports both IPv6 and IPv4 at the same time. In practice this means
  that applications should be prepared to support both IPv6 and IPv4 in the
  code.

Multiple simultaneous network technologies support.
  In Zephyr v1.7 it is possible to have multiple network technologies enabled
  at the same time. This means that applications can utilize concurrently e.g.,
  IEEE 802.15.4 and Bluetooth IP networking. The different network technologies
  are abstracted to network interfaces and there can be multiple network
  interfaces in the system depending on configuration.

Network Kconfig options are changed.
  Most of the networking configuration
  options are renamed. Please check the :ref:`networking` documentation for the
  new names.

All uIP based APIs are gone.
  Those APIs were not public in v1.6 but
  applications could call them anyway. These uIP APIs were mainly used to set
  IP address etc. management style operations. The new management APIs can be
  found in net_if.h and net_mgmt.h in Zephyr v1.7.

Network buffer management is changed.
  In earlier Zephyr versions, there
  were big 1280 byte long buffers that applications could utilize. In Zephyr
  v1.7 this is changed so that device memory is utilized more efficiently.
  Now small buffer fragments are allocated to store the data, and these
  fragments can then be chained together to store larger amount of data. For
  applications this means that the memory received from network or sent to
  network is not contiguous and application should use the helper functions
  found in nbuf.h when reading and writing the network data.

Network context/socket API is changed.
  The new API found in net_context.h
  is more BSD-socket-like than the earlier API. The new context API is not
  fully BSD socket compatible as it needs to support both synchronous and
  asynchronous operations. Porting BSD socket application to use the
  net_context_* API is easier than in Zephyr v1.6.

CoAP library API is changed.
  The Zephyr v1.6 CoAP API is removed.
  The new Zephyr v1.7 API is called ZoAP and it can be found in zoap.h header
  file.

The TinyDTLS library is removed.
  The tinydtls crypto library was used
  only by CoAP in Zephyr v1.6 and it is removed in Zephyr v1.7. It is replaced
  by mbedtls library.
