#
# Copyright (c) 2016 Intel Corporation.
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig NET_MGMT
	bool "Network Management API"
	help
	  Add support for NM API that enables managing different aspects
	  of the network stack as well as receiving notification on network
	  events (ip address change, iface up and running ...).

if NET_MGMT

config NET_MGMT_EVENT
	bool "Add support for runtime network event notifications"
	help
	  This adds support for the stack to notify events towards any
	  relevant listener. This can be necessary when application
	  (or else) needs to be notified on a specific network event
	  (ip address change for instance) to trigger some related work.

if NET_MGMT_EVENT

config NET_MGMT_EVENT_STACK_SIZE
	int "Stack size for the inner thread handling event callbacks"
	default 768
	help
	  Set the internal stack size for NM to run registered callbacks
	  on events.

config NET_MGMT_EVENT_THREAD_PRIO
	int "Inner thread priority (use with care)"
	default 7
	help
	  Set the network management event core's inner thread priority.
	  Do not change this unless you know what you are doing.

config NET_MGMT_EVENT_QUEUE_SIZE
	int "Size of event queue"
	default 2
	range 1 1024
	help
	  Numbers of events which can be queued at same time. Note that if a
	  3rd event comes in, the first will be removed without generating any
	  notification. Thus the size of this queue has to be tweaked depending
	  on the load of the system, planned for the usage.

config NET_MGMT_EVENT_INFO
	bool "Enable passing information along with an event"
	help
	  Event notifier will be able to provide information to an event,
	  and listeners will then be able to get it. Such information depends
	  on the type of event.

module = NET_MGMT_EVENT
module-dep = NET_LOG
module-str = Log level for network management event core
module-help = Enable debug messages output for network management events.
source "subsys/net/Kconfig.template.log_config.net"

config NET_DEBUG_MGMT_EVENT_STACK
	bool "Enable stack analysis output on Net MGMT event core"
	select INIT_STACKS
	help
	  Add debug messages output on how much Net MGMT event stack is used.

endif # NET_MGMT_EVENT
endif # NET_MGMT
