# Kconfig - Native posix ethernet driver configuration options

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

menuconfig ETH_NATIVE_POSIX
	bool "Native Posix Ethernet driver"
	depends on ARCH_POSIX && NET_L2_ETHERNET
	default n
	help
	  Enable native posix ethernet driver. Note, this driver is run inside
	  a process in your host system.

if ETH_NATIVE_POSIX
config ETH_NATIVE_POSIX_SETUP_SCRIPT
	string "Host setup script"
	default "${ZEPHYR_BASE}/samples/net/eth_native_posix/net_setup_host"
	help
	  This option sets the name of the script that is run when the host TAP
	  network interface is created. The script should setup IP addresses
	  etc. for the host TAP network interface.
	  The default script accepts following options:
	  -i|--interface <network interface name>, default is zeth
	  -f|--file <config file name>, default is net_setup_host.conf
	  If needed, you can add these options to this script name option.
	  Note that the driver will add -i option with the value of
	  CONFIG_ETH_NATIVE_POSIX_DRV_NAME option to the end of the options
	  list when calling the host setup script.

config ETH_NATIVE_POSIX_DRV_NAME
	string "Ethernet driver name"
	default "zeth"
	help
	  This option sets the driver name and name of the network interface
	  in your host system.

config ETH_NATIVE_POSIX_DEV_NAME
	string "Host ethernet TUN/TAP device name"
	default "/dev/net/tun"
	help
	  This option sets the TUN/TAP device name in your host system.

config ETH_NATIVE_POSIX_RANDOM_MAC
	bool "Random MAC address"
	depends on ENTROPY_GENERATOR
	default y
	help
	  Generate a random MAC address dynamically.

if ! ETH_NATIVE_POSIX_RANDOM_MAC

config	ETH_NATIVE_POSIX_MAC_ADDR
	string "MAC address for the interface"
	default ""
	help
	  Specify a MAC address for the ethernet interface in the form of
	  six hex 8-bit chars separated by colons (e.g.:
	  aa:33:cc:22:e2:c0).  The default is an empty string, which
	  means the code will make 00:00:5E:00:53:XX, where XX will be
	  random.

endif

endif
