# Copyright (c) 2016 Intel Corporation.
# Copyright (c) 2021 Nordic Semiconductor
# Copyright (c) 2023 Arm Limited (or its affiliates). All rights reserved.
# SPDX-License-Identifier: Apache-2.0

menuconfig NET_SHELL
	bool "Network shell utilities"
	select SHELL
	select NET_IPV4_IGMP if NET_NATIVE_IPV4
	select REQUIRES_FLOAT_PRINTF
	help
	  Activate shell module that provides network commands like
	  ping to the console.

if NET_SHELL

config NET_SHELL_SHOW_DISABLED_COMMANDS
	bool "Show disabled command information"
	default y
	help
	  By default all the network shell commands are there and the
	  command itself will print out that it is disabled and how to
	  enable it. If you do not need this and only want to see the
	  commands that you can actively use, then you can save a little
	  bit of flash by not showing commands that cannot be used with
	  current configuration.

config NET_SHELL_ETHERNET_SUPPORTED
	bool "Ethernet related configuration"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_L2_ETHERNET

config NET_SHELL_CAPTURE_SUPPORTED
	bool "Packet capture configuration"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_CAPTURE

config NET_SHELL_DHCPV4_SUPPORTED
	bool "DHCPv4 start / stop"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_DHCPV4_SERVER || NET_DHCPV4

config NET_SHELL_DHCPV6_SUPPORTED
	bool "DHCPv6 start / stop"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_DHCPV6

config NET_SHELL_DNS_RESOLVER_SUPPORTED
	bool "DNS resolver"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || DNS_RESOLVER

config NET_SHELL_EVENT_MONITOR_SUPPORTED
	bool "Network management event monitoring configuration"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_MGMT_EVENT_MONITOR

config NET_SHELL_GPTP_SUPPORTED
	bool "gPTP monitoring"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_GPTP

config NET_SHELL_HTTP_SERVER_SUPPORTED
	bool "HTTP server status"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || HTTP_SERVER

config NET_SHELL_CONNECTION_MANAGER_SUPPORTED
	bool "Connection manager status"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_CONNECTION_MANAGER

config NET_SHELL_IPV4_SUPPORTED
	bool "IPv4 config"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || (NET_NATIVE_IPV4 && NET_IPV4)

config NET_SHELL_IPV6_SUPPORTED
	bool "IPv6 config"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || (NET_NATIVE_IPV6 && NET_IPV6)

config NET_SHELL_IP_SUPPORTED
	bool "Generic IP utilities"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_IP

config NET_SHELL_PKT_ALLOC_SUPPORTED
	bool "Packet allocation monitoring"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_DEBUG_NET_PKT_ALLOC

config NET_SHELL_PKT_FILTER_SUPPORTED
	bool "Network packet filter related configuration"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_PKT_FILTER

config NET_SHELL_PMTU_SUPPORTED
	bool "PMTU config"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_PMTU

config NET_SHELL_PPP_SUPPORTED
	bool "PPP config"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_L2_PPP

config NET_SHELL_POWER_MANAGEMENT_SUPPORTED
	bool "Network power management resume / suspend"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_POWER_MANAGEMENT

config NET_SHELL_ROUTE_SUPPORTED
	bool "IP routing config"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || (NET_ROUTE && NET_NATIVE)

config NET_SHELL_SOCKETS_SERVICE_SUPPORTED
	bool "Socket service status"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_SOCKETS_SERVICE

config NET_SHELL_STATISTICS_SUPPORTED
	bool "Network statistics monitoring"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_STATISTICS

config NET_SHELL_TCP_SUPPORTED
	bool "Send / receive TCP data"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || (NET_NATIVE_TCP && NET_TCP)

config NET_SHELL_UDP_SUPPORTED
	bool "Send / receive UDP data"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || (NET_NATIVE_UDP && NET_UDP)

config NET_SHELL_VIRTUAL_SUPPORTED
	bool "Virtual network interface management"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_L2_VIRTUAL

config NET_SHELL_VLAN_SUPPORTED
	bool "Virtual LAN config"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || NET_VLAN

config NET_SHELL_WEBSOCKET_SUPPORTED
	bool "Websocket client status"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || WEBSOCKET_CLIENT

config NET_SHELL_QBV_SUPPORTED
	bool "Qbv Shell"
	default y
	depends on NET_SHELL_SHOW_DISABLED_COMMANDS || (NET_QBV && NET_L2_ETHERNET_MGMT)
	help
	  Enable Qbv Shell.
	  The Qbv shell currently supports set/enable operations.

config NET_SHELL_DYN_CMD_COMPLETION
	bool "Network shell dynamic command completion"
	default y
	help
	  Enable various net-shell command to support dynamic command
	  completion. This means that for example the nbr command can
	  automatically complete the neighboring IPv6 address and user
	  does not need to type it manually.
	  Please note that this uses more memory in order to save the
	  dynamic command strings. For example for nbr command the
	  increase is 320 bytes (8 neighbors * 40 bytes for IPv6 address
	  length) by default. Other dynamic completion commands in
	  net-shell require also some smaller amount of memory.

config NET_SHELL_REQUIRE_TX_THREAD
	bool
	depends on SHELL_BACKEND_TELNET || SHELL_BACKEND_MQTT
	default y if NET_ARP
	help
	  Hidden symbol indicating that network shell requires separate TX
	  thread due to possible deadlocks during shell/net stack operations.

endif # NET_SHELL
