.. _net_config_interface:

Network Configuration Library
#############################

.. contents::
    :local:
    :depth: 2

Overview
********

The network configuration library sets up networking devices in a
semi-automatic way during the system boot, based on user-supplied
Kconfig options.

The following Kconfig options affect how configuration library will
setup the system:

.. csv-table:: Kconfig options for network configuration library
   :header: "Option name", "Description"
   :widths: auto

   ":option:`CONFIG_NET_CONFIG_SETTINGS`", "This option controls whether the
   network system is configured or initialized at all. If not set, then the
   config library is not used for initialization and the application needs to
   do all the network related configuration itself. If this option is set,
   then the user can optionally configure static IP addresses to be set to the
   first network interface in the system. Typically setting static IP addresses
   is only usable in testing and should not be used in production code. See
   the config library Kconfig file :zephyr_file:`subsys/net/lib/config/Kconfig`
   for specific options to set the static IP addresses."
   ":option:`CONFIG_NET_CONFIG_AUTO_INIT`", "The networking system is
   automatically configured when the device is started."
   ":option:`CONFIG_NET_CONFIG_INIT_TIMEOUT`", "This tells how long to wait for
   the networking to be ready and available. If for example IPv4 address from
   DHCPv4 is not received within this limit, then a call to
   ``net_config_init()`` will return error during the device startup."
   ":option:`CONFIG_NET_CONFIG_NEED_IPV4`", "The network application needs IPv4
   support to function properly. This option makes sure the network application
   is initialized properly in order to use IPv4.
   If :option:`CONFIG_NET_IPV4` is not enabled, then setting this option will
   automatically enable IPv4."
   ":option:`CONFIG_NET_CONFIG_NEED_IPV6`", "The network application needs IPv6
   support to function properly. This option makes sure the network application
   is initialized properly in order to use IPv6.
   If :option:`CONFIG_NET_IPV6` is not enabled, then setting this option will
   automatically enable IPv6."
   ":option:`CONFIG_NET_CONFIG_NEED_IPV6_ROUTER`", "If IPv6 is enabled, then
   this option tells that the network application needs IPv6 router to exists
   before continuing. This means in practice that the application wants to wait
   until it receives IPv6 router advertisement message before continuing."
   ":option:`CONFIG_NET_CONFIG_BT_NODE`", "Enables application to operate in
   Bluetooth node mode which requires GATT service to be registered and start
   advertising as peripheral."

Sample usage
************

If :option:`CONFIG_NET_CONFIG_AUTO_INIT` is set, then the configuration library
is automatically enabled and run during the device boot. In this case,
the library will call ``net_config_init()`` automatically and the application
does not need to do any network configuration.

If you want to use the network configuration library but without automatic
initialization, you can call ``net_config_init()`` manually. The ``flags``
parameter can be used to give hints to the library about what kind of
functionality the application wishes to have before the actual application
starts.

API Reference
*************

.. doxygengroup:: net_config
