#
# 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.

if NET_MGMT_EVENT

config NET_MGMT_EVENT_STACK_SIZE
	int "Stack size for the inner thread handling event callbacks"
	default 512
	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"
	default n
	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.

config NET_DEBUG_MGMT_EVENT
	bool "Enable debug output on Net MGMT event core"
	default n
	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
	help
	  Add debug messages output on how much Net MGMT event stack is used.

endif # NET_MGMT_EVENT
endif # NET_MGMT
