# Activate all network Kconfig options in order to test that the result
# target compiles ok. Note that the different values in this file are
# just randomly selected, do not use the values in your real life
# applications.

# Generic options that are useful to be active
CONFIG_SYS_LOG_SHOW_COLOR=y
CONFIG_RANDOM_GENERATOR=y
CONFIG_TEST_RANDOM_GENERATOR=y
CONFIG_ZTEST=y

# net_buf options
CONFIG_NET_BUF=y
CONFIG_NET_BUF_LOG=y
CONFIG_SYS_LOG_NET_BUF_LEVEL=4
CONFIG_NET_BUF_WARN_ALLOC_INTERVAL=2
CONFIG_NET_BUF_SIMPLE_LOG=y
CONFIG_NET_BUF_POOL_USAGE=y

# Core IP options
CONFIG_NETWORKING=y
CONFIG_NET_INIT_PRIO=98
CONFIG_NET_SHELL=y
CONFIG_NET_IP_ADDR_CHECK=y

# Statistics
CONFIG_NET_STATISTICS=y
CONFIG_NET_STATISTICS_USER_API=y
CONFIG_NET_STATISTICS_PERIODIC_OUTPUT=y
CONFIG_NET_STATISTICS_IPV4=y
CONFIG_NET_STATISTICS_IPV6=y
CONFIG_NET_STATISTICS_IPV6_ND=y
CONFIG_NET_STATISTICS_ICMP=y
CONFIG_NET_STATISTICS_UDP=y
CONFIG_NET_STATISTICS_TCP=y
CONFIG_NET_STATISTICS_RPL=y
CONFIG_NET_STATISTICS_MLD=y

# L2 drivers
CONFIG_NET_L2_IEEE802154_RADIO_TX_RETRIES=2
CONFIG_NET_L2_IEEE802154_RADIO_CSMA_CA=y
CONFIG_NET_L2_IEEE802154_RADIO_ALOHA=n
CONFIG_NET_L2_IEEE802154_RADIO_CSMA_CA_MAX_BO=4
CONFIG_NET_L2_IEEE802154_RADIO_CSMA_CA_MIN_BE=3
CONFIG_NET_L2_IEEE802154_RADIO_CSMA_CA_MAX_BE=5
CONFIG_NET_L2_IEEE802154=y
CONFIG_NET_L2_IEEE802154_MGMT=y
CONFIG_NET_L2_IEEE802154_ACK_REPLY=y
CONFIG_NET_L2_IEEE802154_RFD=y
CONFIG_NET_L2_IEEE802154_SHELL=y
CONFIG_NET_L2_IEEE802154_FRAGMENT=y
CONFIG_NET_L2_IEEE802154_FRAGMENT_REASS_CACHE_SIZE=2
CONFIG_NET_L2_IEEE802154_REASSEMBLY_TIMEOUT=10
CONFIG_NET_L2_IEEE802154_SECURITY=y
CONFIG_NET_L2_IEEE802154_SECURITY_CRYPTO_DEV_NAME="CRYPTO-DEV"
CONFIG_NET_L2_DUMMY=y
CONFIG_NET_L2_ETHERNET=y
CONFIG_NET_L2_BT=y
CONFIG_NET_L2_BT_ZEP1656=y
CONFIG_NET_L2_BT_SEC_LEVEL=4
CONFIG_NET_L2_BT_MGMT=y
CONFIG_NET_L2_BT_SHELL=y
CONFIG_NET_L2_RAW_CHANNEL=y
CONFIG_NET_DEBUG_L2_IEEE802154=y
CONFIG_NET_DEBUG_L2_IEEE802154_FRAGMENT=y
CONFIG_NET_DEBUG_L2_ETHERNET=y
CONFIG_NET_DEBUG_L2_BT=y

# IP offload support
CONFIG_NET_OFFLOAD=y
CONFIG_NET_DEBUG_NET_OFFLOAD=y

# RPL
CONFIG_NET_RPL=y
CONFIG_NET_RPL_MRHOF=y
CONFIG_NET_RPL_OF0=n
CONFIG_NET_RPL_MC_NONE=n
CONFIG_NET_RPL_MC_EXT=n
CONFIG_NET_RPL_MC_ENERGY=y
CONFIG_NET_RPL_MOP2=n
CONFIG_NET_RPL_MOP3=y
CONFIG_NET_RPL_DAO_MAX_RETRANSMISSIONS=2
CONFIG_NET_DEBUG_RPL=y

# Routing table
CONFIG_NET_MAX_ROUTERS=3
CONFIG_NET_ROUTE=y
CONFIG_NET_ROUTE_MCAST=y

# TCP
CONFIG_NET_TCP=y
CONFIG_NET_DEBUG_TCP=y
CONFIG_NET_TCP_TIME_WAIT=y
CONFIG_NET_TCP_2MSL_TIME=20

# UDP
CONFIG_NET_UDP=y
CONFIG_NET_DEBUG_UDP=y

# Network context
CONFIG_NET_MAX_CONN=10
CONFIG_NET_CONN_CACHE=y
CONFIG_NET_MAX_CONTEXTS=4
CONFIG_NET_CONTEXT_NBUF_POOL=y
CONFIG_NET_CONTEXT_SYNC_RECV=y
CONFIG_NET_CONTEXT_CHECK=y

# SLIP

# Trickle algo
CONFIG_NET_TRICKLE=y
CONFIG_NET_DEBUG_TRICKLE=y

# Network buffer
CONFIG_NET_NBUF_RX_COUNT=10
CONFIG_NET_NBUF_TX_COUNT=10
CONFIG_NET_NBUF_RX_DATA_COUNT=15
CONFIG_NET_NBUF_TX_DATA_COUNT=15
CONFIG_NET_NBUF_DATA_SIZE=128
CONFIG_NET_NBUF_USER_DATA_SIZE=10

# IPv6
CONFIG_NET_IPV6=y
CONFIG_NET_IF_UNICAST_IPV6_ADDR_COUNT=3
CONFIG_NET_IF_MCAST_IPV6_ADDR_COUNT=3
CONFIG_NET_IF_IPV6_PREFIX_COUNT=3
CONFIG_NET_INITIAL_HOP_LIMIT=64
CONFIG_NET_IPV6_MAX_NEIGHBORS=5
CONFIG_NET_IPV6_FRAGMENT=y
CONFIG_NET_IPV6_FRAGMENT_MAX_COUNT=2
CONFIG_NET_IPV6_FRAGMENT_TIMEOUT=23
CONFIG_NET_IPV6_MLD=y
CONFIG_NET_IPV6_NBR_CACHE=y
CONFIG_NET_IPV6_ND=y
CONFIG_NET_IPV6_DAD=y
CONFIG_NET_IPV6_RA_RDNSS=y
CONFIG_NET_DEBUG_IPV6=y
CONFIG_NET_DEBUG_ICMPV6=y
CONFIG_NET_DEBUG_IPV6_NBR_CACHE=y

# 6lo
CONFIG_NET_6LO=y
CONFIG_NET_6LO_CONTEXT=y
CONFIG_NET_MAX_6LO_CONTEXTS=2
CONFIG_NET_DEBUG_6LO=y

# Sample application generic options
CONFIG_NET_APP_SETTINGS=y
CONFIG_NET_APP_MY_IPV6_ADDR="2001:db8::1"
CONFIG_NET_APP_PEER_IPV6_ADDR="2001:db8::2"
CONFIG_NET_APP_MY_IPV4_ADDR="192.0.2.1"
CONFIG_NET_APP_PEER_IPV4_ADDR="192.0.2.2"
CONFIG_NET_APP_IEEE802154_DEV_NAME="FOO-BAR"
CONFIG_NET_APP_IEEE802154_PAN_ID=0x1234
CONFIG_NET_APP_IEEE802154_CHANNEL=15
CONFIG_NET_APP_IEEE802154_SECURITY_KEY="key"
CONFIG_NET_APP_IEEE802154_SECURITY_KEY_MODE=0
CONFIG_NET_APP_IEEE802154_SECURITY_LEVEL=0
CONFIG_NET_APP_BT_NODE=y

# Network management
CONFIG_NET_MGMT=y
CONFIG_NET_MGMT_EVENT=y
CONFIG_NET_MGMT_EVENT_STACK_SIZE=800
CONFIG_NET_MGMT_EVENT_THREAD_PRIO=66
CONFIG_NET_MGMT_EVENT_QUEUE_SIZE=2
CONFIG_NET_DEBUG_MGMT_EVENT=y
CONFIG_NET_DEBUG_MGMT_EVENT_STACK=y

# IPv4
CONFIG_NET_IPV4=y
CONFIG_NET_INITIAL_TTL=42
CONFIG_NET_IF_UNICAST_IPV4_ADDR_COUNT=2
CONFIG_NET_IF_MCAST_IPV4_ADDR_COUNT=2
CONFIG_NET_DHCPV4=y
CONFIG_NET_DEBUG_IPV4=y
CONFIG_NET_DEBUG_ICMPV4=y
CONFIG_NET_DEBUG_DHCPV4=y

# ARP
CONFIG_NET_ARP=y
CONFIG_NET_ARP_TABLE_SIZE=3
CONFIG_NET_DEBUG_ARP=y

# Logging
CONFIG_NET_LOG=y
CONFIG_SYS_LOG_NET_LEVEL=4
CONFIG_NET_LOG_GLOBAL=y
CONFIG_NET_DEBUG_CORE=y
CONFIG_NET_DEBUG_IF=y
CONFIG_NET_DEBUG_UTILS=y
CONFIG_NET_DEBUG_CONTEXT=y
CONFIG_NET_DEBUG_NET_BUF=y
CONFIG_NET_DEBUG_NET_BUF_EXTERNALS=4
CONFIG_NET_DEBUG_CONN=y
CONFIG_NET_DEBUG_ROUTE=y

# IP threads stack size
CONFIG_NET_TX_STACK_SIZE=1024
CONFIG_NET_RX_STACK_SIZE=1024
CONFIG_NET_RX_STACK_RPL=300

# DNS
CONFIG_DNS_RESOLVER=y
CONFIG_DNS_RESOLVER_ADDITIONAL_BUF_CTR=1
CONFIG_DNS_RESOLVER_ADDITIONAL_QUERIES=2
CONFIG_DNS_RESOLVER_MAX_SERVERS=5
CONFIG_DNS_SERVER_IP_ADDRESSES=y
CONFIG_DNS_SERVER1="2001:db8::33:fe:2c:53"
CONFIG_DNS_SERVER2="[2001:db8::42]:5353"
CONFIG_DNS_SERVER3="192.0.2.42"
CONFIG_DNS_SERVER4="2001:db8::2"
CONFIG_DNS_SERVER5="192.0.2.11:1000"
CONFIG_DNS_NUM_CONCUR_QUERIES=2
CONFIG_NET_DEBUG_DNS_RESOLVE=y

# CoAP
CONFIG_ZOAP=y

# MQTT
CONFIG_MQTT_LIB=y
CONFIG_MQTT_MSG_MAX_SIZE=128
CONFIG_MQTT_ADDITIONAL_BUFFER_CTR=1
CONFIG_MQTT_SUBSCRIBE_MAX_TOPICS=2

# HTTP
CONFIG_HTTP=y
CONFIG_HTTP_SERVER=y
CONFIG_HTTP_HEADER_FIELD_ITEMS=2
CONFIG_HTTP_CLIENT=y
CONFIG_HTTP_PARSER=y
CONFIG_HTTP_PARSER_STRICT=y
