# Hostname config

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

config NET_HOSTNAME_ENABLE
	bool "Add hostname to the device"
	help
	  This is used for example in mDNS to respond to <hostname>.local
	  mDNS queries.

if NET_HOSTNAME_ENABLE

config NET_HOSTNAME
	string "The hostname of this device"
	default "zephyr"
	help
	  The string should be a valid hostname.

config NET_HOSTNAME_DYNAMIC
	bool "Allow the hostname to be set by the application"
	depends on !NET_HOSTNAME_UNIQUE_UPDATE
	help
	  This will enable the net_hostname_set() function. NET_HOSTNAME
	  will be used as default hostname.

config NET_HOSTNAME_MAX_LEN
	int "The maximum allowed hostname length"
	depends on NET_HOSTNAME_DYNAMIC
	range 1 63
	default 63
	help
	  This will set the number of bytes allocateed for the hostname.

config NET_HOSTNAME_UNIQUE
	bool "Make hostname unique"
	help
	  This will append link address to NET_HOSTNAME to create a unique
	  hostname. For example, zephyr00005e005357 could be the hostname
	  if this setting is enabled.

config NET_HOSTNAME_UNIQUE_UPDATE
	bool "Update unique hostname"
	depends on NET_HOSTNAME_UNIQUE
	help
	  This will update the unique hostname on link address changes. By
	  default, this option is disabled, which means the unique hostname
	  is set once at start-up and is not updated afterwards.

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

endif
