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

menu "Link Layer Discovery Protocol (LLDP) options"

config NET_LLDP
	bool "Enable LLDP"
	depends on NET_L2_ETHERNET
	select NET_MGMT
	select NET_MGMT_EVENT
	help
	  Enable Link Layer Discovery Protocol (LLDP) Transmit support.
	  Please refer to IEEE Std 802.1AB for more information.

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

#
# LLDP Tx state machine config
#
config NET_LLDP_TX_INTERVAL
	int "Time between transmissions in seconds (msgTxInterval)"
	default 30
	range 1 3600
	depends on NET_LLDP
	help
	  Interval between transmissions of LLDPDUs during normal
	  (non-fast mode) transmission periods. For further information
	  please refer to section 9.2.5.7 of the LLDP spec.

config NET_LLDP_TX_HOLD
	int "Multiplier of Tx Interval to result on Time to Live value"
	default 4
	range 1 100
	depends on NET_LLDP
	help
	  This value (msgTxHold) is used as a multiplier of
	  CONFIG_NET_LLDP_TX_INTERVAL, to determine the value to be used
	  as Time to Live in LLDP frames. For further information please
	  refer to section 9.2.5.6 of the LLDP spec.

#
# End of LLDPDU TLV CONFIG
#
config NET_LLDP_END_LLDPDU_TLV_ENABLED
	bool "Enable End of LLDPDU TLV"
	default y
	depends on NET_LLDP
	help
	  Tells whether LLDPDU packet will have marker at the end of the packet.

#
# CHASSIS ID TLV CONFIG
#
config NET_LLDP_CHASSIS_ID_SUBTYPE
	int "Chassis ID TLV subtype"
	default 4
	range 1 7
	depends on NET_LLDP
	help
	  Chassis ID subtype options are defined below.
	  Please refer to section 8.5.2.2 of the 802.1AB for more info.
	  Subtype 1 = Chassis component
	  Subtype 2 = Interface alias
	  Subtype 3 = Port component
	  Subtype 4 = MAC address
	  Subtype 5 = Network address
	  Subtype 6 = Interface name
	  Subtype 7 = Locally assigned
	  If subtype 4 is selected, MAC address, then configs
	  NET_LLDP_CHASSIS_ID_MAC0 through NET_LLDP_CHASSIS_ID_MAC5 must
	  be defined, otherwise you must use NET_LLDP_CHASSIS_ID instead.

if NET_LLDP_CHASSIS_ID_SUBTYPE = 4
config NET_LLDP_CHASSIS_ID_MAC0
	hex "Chassis ID MAC Address Byte 0"
	default 0x00
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 0 of the MAC address.

config NET_LLDP_CHASSIS_ID_MAC1
	hex "Chassis ID MAC Address Byte 1"
	default 0x00
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 1 of the MAC address.

config NET_LLDP_CHASSIS_ID_MAC2
	hex "Chassis ID MAC Address Byte 2"
	default 0x5e
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 2 of the MAC address.

config NET_LLDP_CHASSIS_ID_MAC3
	hex "Chassis ID MAC Address Byte 3"
	default 0x00
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 3 of the MAC address.

config NET_LLDP_CHASSIS_ID_MAC4
	hex "Chassis ID MAC Address Byte 4"
	default 0x53
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 4 of the MAC address.

config NET_LLDP_CHASSIS_ID_MAC5
	hex "Chassis ID MAC Address Byte 5"
	default 0x8d
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 5 of the MAC address.
endif

if NET_LLDP_CHASSIS_ID_SUBTYPE != 4
config NET_LLDP_CHASSIS_ID
	string "Chassis ID value"
	default "CHASSIS_ID_PLACEHOLDER"
endif

#
# PORT ID TLV CONFIG
#
config NET_LLDP_PORT_ID_SUBTYPE
	int "Port ID TLV subtype"
	default 5
	range 1 7
	depends on NET_LLDP
	help
	  Port ID subtype options are defined below.
	  Please refer to section 8.5.3.2 of the 802.1AB for more info.
	  Subtype 1 = Interface alias
	  Subtype 2 = Port component
	  Subtype 3 = MAC address
	  Subtype 4 = Network address
	  Subtype 5 = Interface name
	  Subtype 6 = Agent circuit ID
	  Subtype 7 = Locally assigned
	  If subtype 3 is selected (MAC address) then configs
	  NET_LLDP_PORT_ID_MAC0 through NET_LLDP_PORT_ID_MAC5 must
	  be defined, otherwise you must use NET_LLDP_PORT_ID instead.

if NET_LLDP_PORT_ID_SUBTYPE = 3
config NET_LLDP_PORT_ID_MAC0
	hex "Chassis ID MAC Address Byte 0"
	default 0x00
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 0 of the MAC address.

config NET_LLDP_PORT_ID_MAC1
	hex "Chassis ID MAC Address Byte 1"
	default 0x00
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 1 of the MAC address.

config NET_LLDP_PORT_ID_MAC2
	hex "Chassis ID MAC Address Byte 2"
	default 0x5e
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 2 of the MAC address.

config NET_LLDP_PORT_ID_MAC3
	hex "Chassis ID MAC Address Byte 3"
	default 0x00
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 3 of the MAC address.

config NET_LLDP_PORT_ID_MAC4
	hex "Chassis ID MAC Address Byte 4"
	default 0x53
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 4 of the MAC address.

config NET_LLDP_PORT_ID_MAC5
	hex "Chassis ID MAC Address Byte 5"
	default 0x8d
	range 0 0xff
	depends on NET_LLDP
	help
	  Byte 5 of the MAC address.
endif

if NET_LLDP_PORT_ID_SUBTYPE != 3
config NET_LLDP_PORT_ID
	string "Port ID value"
	default "PORT_ID_PLACEHOLDER"
endif

endmenu
