#
# 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 8
	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 and can be an IP address, etc...

config NET_MGMT_EVENT_INFO_SIZE
	int "Maximum size in bytes of event information"
	default 17
	depends on NET_MGMT_EVENT_INFO
	help
	Maximum size of the information - whatever it is - that can be passed
	along with an event. Note this will grow each entries in the event
	queue. Do not touch this unless you know what you are doing.

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
