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

menuconfig NET_MGMT
	bool "Network Management API"
	default n
	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"
	default n
	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.

config NET_MGMT_EVENT_STACK_SIZE
	int "Stack size for the inner thread handling event callbacks"
	default 512
	depends on NET_MGMT_EVENT
	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
	depends on NET_MGMT_EVENT
	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 8
	depends on NET_MGMT_EVENT
	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_DEBUG_MGMT_EVENT
	bool "Enable debug output on Net MGMT event core"
	default n
	depends on NET_MGMT_EVENT
	help
	Add debug messages output on how Net MGMT events are handled.

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

endif
