# Kconfig.debug - Debug Options

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

menuconfig NET_LOG
	bool "Enable network stack logging and debugging"
	select LOG
	help
	  Enable logging in various parts of the network stack.
	  Specific debugging options to other sub-menus will be unlocked
	  as well (IPv6, IPv4, ...).

module = NET_PKT
module-dep = NET_LOG
module-str = Log level for network packet and buffer allocation
module-help = Enables debug of network packet and buffer allocations and frees.
source "subsys/net/Kconfig.template.log_config.net"

config NET_DEBUG_NET_PKT_ALLOC
	bool "Debug network packet and buffer individual allocation"
	default y if NET_PKT_LOG_LEVEL_DBG
	help
	  Enables printing of network packet and buffer allocations and frees for
	  each allocation. This can produce lot of output so it is disabled by
	  default.

config NET_DEBUG_NET_PKT_EXTERNALS
	int "How many external network packet allocations"
	default 0
	help
	  How many external net_pkt objects are there in user specific pools.
	  This value is used when allocating space for tracking the
	  memory allocations.

config NET_DEBUG_NET_PKT_NON_FRAGILE_ACCESS
	bool "Reduce r/w fragility by resetting the packet cursor when freed"
	select NET_DEBUG_NET_PKT_ALLOC
	help
	  This MUST not be used unless you have an hard to catch bug. This will
	  reset the pkt cursor when it's freed, so any subsequent r/w operations
	  will not segfault, but just bail out and hopefully it will enable you
	  to know who/where the packet was freed already. Do not set this, by
	  any means, unless you are actively debugging.

if !NET_RAW_MODE

module = NET_CORE
module-dep = NET_LOG
module-str = Log level for core IP stack
module-help = Enables core network stack code to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"

module = NET_IF
module-dep = NET_LOG
module-str = Log level for network interface code
module-help = Enables network interface code to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"

module = NET_TC
module-dep = NET_LOG
module-str = Log level for network traffic class code
module-help = Enables network traffic class code to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"

module = NET_UTILS
module-dep = NET_LOG
module-str = Log level for utility functions in IP stack
module-help = Enables utility functions to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"

module = NET_CONTEXT
module-dep = NET_LOG
module-str = Log level for network context allocation
module-help = Enables printing of network context allocations and frees.
source "subsys/net/Kconfig.template.log_config.net"

module = NET_CONN
module-dep = NET_LOG
module-str = Log level for UDP/TCP connection handling
module-help = Enables UDP/TCP connection debug messages.
source "subsys/net/Kconfig.template.log_config.net"

module = NET_ROUTE
module-dep = NET_LOG
module-str = Log level for route management
module-help = Enables routing engine debug messages.
source "subsys/net/Kconfig.template.log_config.net"

endif # NET_RAW_MODE
