# Kconfig.debug - IP stack debugging configuration options

#
# Copyright (c) 2016 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

menuconfig NETWORKING_WITH_LOGGING
	bool "Enable network stack logging"
	select STDOUT_CONSOLE
	default n
	help
	  Enable logging in various parts of the network stack.

choice
	prompt "General debug level"
	default NETWORK_IP_STACK_DEBUG_PRINT
	depends on NETWORKING_WITH_LOGGING
	help
	  Set the level of debugging you want. This will be generalized,
	  whatever the part you will be debugging.
config NETWORK_IP_STACK_DEBUG_PRINT
       bool "Print only debug messages"
config NETWORK_IP_STACK_DEBUG_ANNOTATE
       bool "Print only annotations"
config NETWORK_IP_STACK_DEBUG_FULL
       bool "Print both messages and annotations"
endchoice

if NETWORKING_WITH_LOGGING || NET_LOG

config NETWORK_IP_STACK_DEBUG_CONTEXT
	bool "Debug network context allocation"
	default n
	help
	  Enables printing of network context allocations and frees.

config NETWORK_IP_STACK_DEBUG_NET_BUF
	bool "Debug network buffer allocation"
	default n
	help
	  Enables printing of network buffer allocations and frees.

config NETWORK_IP_STACK_DEBUG_RECV_SEND
	bool "Debug network generic receive and send functions"
	default n
	help
	  Enables generic debug printing when receiving and sending data.

config NETWORK_IP_STACK_DEBUG_TCP_PSOCK
	bool "Debug network TCP protosockets"
	depends on NETWORKING_WITH_TCP && NET_UIP
	default n
	help
	  Enables debugging the protosockets used in TCP engine.

config NETWORK_IP_STACK_DEBUG_IPV6
	bool "Debug core IPv6"
	depends on NETWORKING_WITH_IPV6 || NET_IPV6
	default n
	help
	  Enables core IPv6 code part to output debug messages

config NETWORK_IP_STACK_DEBUG_SIMPLE_UDP
	bool "Debug simple udp"
	default n
	depends on NET_UIP
	help
	  Enables network simple udp debug messages

config NETWORK_IP_STACK_DEBUG_UDP_PACKET
	bool "Debug udp packet"
	default n
	help
	  Enables network uip udp packet debug messages

config NETWORK_IP_STACK_DEBUG_IPV6_DS
	bool "Debug IPv6 Data Structures"
	depends on NETWORKING_WITH_IPV6 && NET_UIP
	default n
	help
	  Enables IPv6 Data Structures code part to output debug messages

config NETWORK_IP_STACK_DEBUG_IPV6_ICMPV6
	bool "Debug ICMPv6"
	depends on NETWORKING_WITH_IPV6
	default n
	help
	  Enables ICMPv6 code part to output debug messages

config NETWORK_IP_STACK_DEBUG_ICMPV6
	bool "Debug ICMPv6"
	depends on NET_IPV6
	default n
	help
	  Enables ICMPv6 code part to output debug messages

config NETWORK_IP_STACK_DEBUG_ICMPV4
	bool "Debug ICMPv4"
	depends on NET_IPV4
	default n
	help
	  Enables ICMPv4 code part to output debug messages

config NETWORK_IP_STACK_DEBUG_IPV6_ND
	bool "Debug IPv6 Neighbour Discovery"
	depends on NETWORKING_WITH_IPV6 || NET_IPV6
	default n
	help
	  Enables IPv6 Neighbour Discovery code part to output debug messages

config NETWORK_IP_STACK_DEBUG_IPV6_NBR_CACHE
	bool "Debug IPv6 neighbour cache"
	depends on NETWORKING_WITH_IPV6 || NET_IPV6
	default n
	help
	  Enables Neighbour Cache code part to output debug messages

config NETWORK_IP_STACK_DEBUG_IPV6_ROUTE
	bool "Debug IPv6 route"
	depends on NETWORKING_WITH_IPV6 || NET_IPV6
	default n
	help
	  Enables IPv6 route code part to output debug messages

config NETWORK_IP_STACK_DEBUG_15_4_NET_DRIVER
	bool "Debug 802.15.4 network driver"
	depends on NETWORKING_WITH_15_4
	default n
	help
	  Enables 802.15.4 network driver output debug messages

config NETWORK_IP_STACK_DEBUG_15_4_MAC
	bool "Debug 802.15.4 MAC layer"
	depends on NETWORKING_WITH_15_4
	default n
	help
	  Enables 802.15.4 MAC layer to output debug messages

config NETWORK_IP_STACK_DEBUG_15_4_FRAMING
	bool "Debug 802.15.4 packet framing"
	depends on NETWORKING_WITH_15_4
	default n
	help
	  Enables 802.15.4 packet framing to output debug messages

config NETWORK_IP_STACK_DEBUG_15_4_6LOWPAN_FRAG
	bool "Debug 802.15.4 6LoWPAN fragmentation"
	depends on NETWORKING_WITH_15_4
	default n
	help
	  Enables 802.15.4 6LoWPAN fragmentation to output debug messages

config NETWORK_IP_STACK_DEBUG_6LOWPAN_COMPRESSION
	bool "Debug generic 6LoWPAN compression"
	depends on NETWORKING_WITH_IPV6
	default n
	help
	  Enables generic (802.15.4 or Bluetooth) 6LoWPAN compression
	  to output debug messages

config NETWORK_IP_STACK_DEBUG_PACKET_QUEUE
	bool "Debug uip packet queue"
	depends on NETWORKING_WITH_IPV6 && NET_UIP
	default n
	help
	  Enables uip packet queue output debug messages

config NETWORK_IP_STACK_DEBUG_RPL
	bool "Debug RPL messages"
	depends on NETWORKING_WITH_RPL
	default n
	help
	  Enables RPL debug messages

config NETWORK_IP_STACK_DEBUG_RPL_ICMPV6
	bool "Debug RPL ICMPv6 messages"
	depends on NETWORKING_WITH_RPL
	default n
	help
	  Enables RPL ICMPv6 debug messages

config NETWORK_IP_STACK_DEBUG_RPL_OF
	bool "Debug RPL objective function messages"
	depends on NETWORKING_WITH_RPL
	default n
	help
	  Enables RPL Objective Function related debug messages

config NETWORK_IP_STACK_DEBUG_RPL_TIMERS
	bool "Debug RPL timer functionality"
	depends on NETWORKING_WITH_RPL
	default n
	help
	  Enables RPL timers related debug messages

config NETWORK_IP_STACK_DEBUG_IPV4
	bool "Debug core IPv4"
	depends on NETWORKING_WITH_IPV4 || NET_IPV4
	default n
	help
	  Enables core IPv4 code part to output debug messages

config NETWORK_IP_STACK_DEBUG_IPV4_ARP
	bool "Debug IPv4 ARP"
	depends on NETWORKING_WITH_IPV4 || NET_IPV4
	default n
	help
	  Enables core ARP code part to output debug messages

config NETWORK_IP_STACK_DEBUG_COAP_CONTEXT
	bool "Debug CoAP context"
	depends on ER_COAP
	default n
	help
	  Enables CoAP context output debug messages

config NETWORK_IP_STACK_DEBUG_COAP_ENGINE
	bool "Debug CoAP engine"
	depends on ER_COAP
	default n
	help
	  Enables CoAP engine output debug messages

config NETWORK_IP_STACK_DEBUG_COAP_TRANSACTION
	bool "Debug CoAP transaction"
	depends on ER_COAP
	default n
	help
	  Enables CoAP transaction output debug messages

config NETWORK_IP_STACK_DEBUG_COAP_INTERNAL
	bool "Debug CoAP internals"
	depends on ER_COAP
	default n
	help
	  Enables CoAP internals output debug messages

config NETWORK_IP_STACK_DEBUG_COAP_OBSERVE
	bool "Debug CoAP observe"
	depends on ER_COAP
	default n
	help
	  Enables CoAP observe output debug messages

config NETWORK_IP_STACK_DEBUG_COAP_WELL_KNOWN
	bool "Debug CoAP well known core"
	depends on ER_COAP
	default n
	help
	  Enables CoAP resource well known core ouput debug messages

config NETWORK_IP_STACK_DEBUG_REST_ENGINE
	bool "Debug REST engine"
	depends on ER_COAP
	default n
	help
	  Enables REST engine output debug messages

config NETWORK_IP_STACK_DEBUG_DHCP
	bool "Debug DHCP"
	depends on DHCP
	default n
	help
	  Enables DHCP output debug messages

endif
