config KERNEL_NET_IP_TUNNEL
	bool

config KERNEL_NET_UDP_TUNNEL
	bool

config KERNEL_VXLAN
	bool
	select KERNEL_NET_IP_TUNNEL
	select KERNEL_NET_UDP_TUNNEL

config KERNEL_VETH
	bool


# for fastd

config KERNEL_TUN
	bool


# for tunneldigger

config KERNEL_L2TP_V3
	bool

config KERNEL_L2TP_IP
	bool

config KERNEL_L2TP_ETH
	bool

config KERNEL_L2TP
	bool
	select KERNEL_L2TP_V3
	select KERNEL_L2TP_IP
	select KERNEL_L2TP_ETH


# for simple-tc

config KERNEL_NET_SCHED
	bool

config KERNEL_NET_CLS
	bool
	select KERNEL_NET_SCHED

config KERNEL_NET_CLS_ACT
	bool
	select KERNEL_NET_CLS

config KERNEL_NET_ACT_POLICE
	bool
	select KERNEL_NET_CLS_ACT

config KERNEL_NET_CLS_BASIC
	bool
	select KERNEL_NET_CLS

config KERNEL_NET_SCH_TBF
	bool
	select KERNEL_NET_SCHED

config KERNEL_NET_SCH_INGRESS
	bool
	select KERNEL_NET_CLS_ACT


# for batman-adv

config KERNEL_DUMMY
	bool

config KERNEL_CRC16
	bool

config KERNEL_LIBCRC32C
	bool


# Netfilter modules used by ebtables and fw3

config KERNEL_NETFILTER
	bool

config KERNEL_NETFILTER_ADVANCED
	bool
	select KERNEL_NETFILTER

config KERNEL_NETFILTER_XTABLES
	bool
	select KERNEL_NETFILTER_ADVANCED

config KERNEL_BRIDGE_NF_EBTABLES
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_BRIDGE_EBT_T_FILTER
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

config KERNEL_BRIDGE_EBT_T_NAT
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

config KERNEL_BRIDGE_EBT_ARP
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

config KERNEL_BRIDGE_EBT_DNAT
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

config KERNEL_BRIDGE_EBT_IP
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

config KERNEL_BRIDGE_EBT_IP6
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

config KERNEL_BRIDGE_EBT_LIMIT
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

config KERNEL_BRIDGE_EBT_MARK
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

config KERNEL_BRIDGE_EBT_MARK_T
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

config KERNEL_BRIDGE_EBT_REDIRECT
	bool
	select KERNEL_BRIDGE_NF_EBTABLES

# Not all of the following modules are really required for Gluon, but fw3 pulls
# them in, so we add them to the kernel config to reduce the number of loaded
# modules

# kmod-nf-conntrack

config KERNEL_NF_CONNTRACK
	bool
	select KERNEL_NETFILTER_ADVANCED

config KERNEL_NF_CONNTRACK_RTCACHE
	bool
	select KERNEL_NF_CONNTRACK

config KERNEL_NF_CONNTRACK_IPV4
	bool
	select KERNEL_NF_CONNTRACK


# kmod-nf-conntrack6

config KERNEL_NF_CONNTRACK_IPV6
	bool
	select KERNEL_NF_CONNTRACK


# kmod-nf-ipt

config KERNEL_NF_REJECT_IPV4
	bool
	select KERNEL_NETFILTER_ADVANCED

config KERNEL_IP_NF_IPTABLES
	bool
	select KERNEL_NETFILTER_XTABLES
	select KERNEL_NF_REJECT_IPV4


# kmod-nf-ipt6

config KERNEL_NF_REJECT_IPV6
	bool
	select KERNEL_NETFILTER_ADVANCED

config KERNEL_IP6_NF_IPTABLES
	bool
	select KERNEL_NETFILTER_XTABLES
	select KERNEL_NF_REJECT_IPV6


# kmod-nf-nat

config KERNEL_NF_NAT
	bool
	select KERNEL_NF_CONNTRACK

config KERNEL_NF_NAT_REDIRECT
	bool
	select KERNEL_NF_NAT

config KERNEL_NF_NAT_IPV4
	bool
	select KERNEL_NETFILTER_ADVANCED
	select KERNEL_NF_NAT

config KERNEL_NF_NAT_MASQUERADE_IPV4
	bool
	select KERNEL_NF_NAT_IPV4


# kmod-ipt-core

config KERNEL_IP_NF_FILTER
	bool
	select KERNEL_IP_NF_IPTABLES

config KERNEL_IP_NF_MANGLE
	bool
	select KERNEL_IP_NF_IPTABLES

config KERNEL_IP_NF_TARGET_REJECT
	bool
	select KERNEL_IP_NF_FILTER

config KERNEL_NETFILTER_XT_MATCH_LIMIT
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_MATCH_MAC
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_MATCH_MULTIPORT
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_MATCH_COMMENT
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_MATCH_TIME
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_MARK
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_TARGET_LOG
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_TARGET_TCPMSS
	bool
	select KERNEL_NETFILTER_XTABLES

# kmod-ip6tables

config KERNEL_IP6_NF_FILTER
	bool
	select KERNEL_IP6_NF_IPTABLES

config KERNEL_IP6_NF_MANGLE
	bool
	select KERNEL_IP6_NF_IPTABLES

config KERNEL_IP6_NF_TARGET_REJECT
	bool
	select KERNEL_IP6_NF_IPTABLES


# kmod-ipt-conntrack

config KERNEL_NETFILTER_XT_MATCH_STATE
	bool
	select KERNEL_NETFILTER_XTABLES
	select KERNEL_NF_CONNTRACK

config KERNEL_NETFILTER_XT_MATCH_CONNTRACK
	bool
	select KERNEL_NETFILTER_XTABLES
	select KERNEL_NF_CONNTRACK


# kmod-ipt-nat

config KERNEL_IP_NF_NAT
	bool
	select KERNEL_NF_NAT
	select KERNEL_IP_NF_IPTABLES

config KERNEL_IP_NF_TARGET_MASQUERADE
	bool
	select KERNEL_NF_NAT_MASQUERADE_IPV4
	select KERNEL_IP_NF_NAT

config KERNEL_IP_NF_TARGET_REDIRECT
	bool
	select KERNEL_NF_NAT
	select KERNEL_IP_NF_NAT


# kmod-ipt-extra

config KERNEL_NETFILTER_XT_MATCH_ADDRTYPE
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_MATCH_OWNER
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_MATCH_PKTTYPE
	bool
	select KERNEL_NETFILTER_XTABLES

config KERNEL_NETFILTER_XT_MATCH_QUOTA
	bool
	select KERNEL_NETFILTER_XTABLES


config GLUON_SPECIALIZE_KERNEL
	bool "Specialize kernel for Gluon"
	select KERNEL_VXLAN
	select KERNEL_NF_CONNTRACK_RTCACHE
	select KERNEL_NF_CONNTRACK_IPV4
	select KERNEL_NF_CONNTRACK_IPV6
	select KERNEL_IP_NF_IPTABLES
	select KERNEL_IP6_NF_IPTABLES
	select KERNEL_NF_NAT_REDIRECT
	select KERNEL_NF_NAT_IPV4
	select KERNEL_NF_NAT_MASQUERADE_IPV4
	select KERNEL_IP_NF_FILTER
	select KERNEL_IP_NF_MANGLE
	select KERNEL_IP_NF_TARGET_REJECT
	select KERNEL_IP6_NF_FILTER
	select KERNEL_IP6_NF_MANGLE
	select KERNEL_IP6_NF_TARGET_REJECT
	select KERNEL_NETFILTER_XT_MATCH_LIMIT
	select KERNEL_NETFILTER_XT_MATCH_MAC
	select KERNEL_NETFILTER_XT_MATCH_MULTIPORT
	select KERNEL_NETFILTER_XT_MATCH_COMMENT
	select KERNEL_NETFILTER_XT_MATCH_TIME
	select KERNEL_NETFILTER_XT_MARK
	select KERNEL_NETFILTER_XT_TARGET_LOG
	select KERNEL_NETFILTER_XT_TARGET_TCPMSS
	select KERNEL_NETFILTER_XT_MATCH_STATE
	select KERNEL_NETFILTER_XT_MATCH_CONNTRACK
	select KERNEL_IP_NF_NAT
	select KERNEL_IP_NF_TARGET_MASQUERADE
	select KERNEL_IP_NF_TARGET_REDIRECT
