diff --git a/src/bases/linux-udr-2.2.12.tar.gz b/src/bases/linux-udr-2.2.12.tar.gz deleted file mode 100644 index 0bf9c0e..0000000 --- a/src/bases/linux-udr-2.2.12.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d232dec7c148a44b74e1ddfd6d336a32d4a228ee70b3dba586c3a7e43d9f31b7 -size 178055834 diff --git a/src/bases/linux-udr-3.0.13.tar.gz b/src/bases/linux-udr-3.0.13.tar.gz new file mode 100644 index 0000000..a1cc926 --- /dev/null +++ b/src/bases/linux-udr-3.0.13.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b28c3737306ae0172d2b99fd5c9af881f0c14367e453481aaa0129a7883301fc +size 468511673 diff --git a/src/bases/udm-1.11.0/buildroot-config.txt b/src/bases/udm-1.11.0/buildroot-config.txt index dbe0eea..26f62b1 100644 --- a/src/bases/udm-1.11.0/buildroot-config.txt +++ b/src/bases/udm-1.11.0/buildroot-config.txt @@ -118,7 +118,7 @@ BR2_STATIC_LIBS=y # BR2_SHARED_LIBS is not set # BR2_SHARED_STATIC_LIBS is not set BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" -BR2_GLOBAL_PATCH_DIR="" +BR2_GLOBAL_PATCH_DIR="patches" # # Advanced diff --git a/src/bases/udm-1.11.0/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch new file mode 100644 index 0000000..dcce17f --- /dev/null +++ b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch @@ -0,0 +1,14 @@ +--- a/src/compat/compat.h ++++ b/src/compat/compat.h +@@ -664,7 +664,8 @@ struct __compat_dummy_container { char dev; }; + #define genl_dump_check_consistent(a, b) genl_dump_check_consistent(a, b, &genl_family) + #endif + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) && \ ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) + static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) + { + void *tmp = skb_put(skb, len); + + diff --git a/src/bases/udm-1.11.0/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch new file mode 100644 index 0000000..6115f8d --- /dev/null +++ b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch @@ -0,0 +1,14 @@ +diff --git a/src/compat/compat.h b/src/compat/compat.h +index 7acbfc6..845238c 100644 +--- a/src/compat/compat.h ++++ b/src/compat/compat.h +@@ -665,7 +665,8 @@ struct __compat_dummy_container { char dev; }; + #endif + + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) && \ +- LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) && \ ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 60) + static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) + { + void *tmp = skb_put(skb, len); diff --git a/src/bases/udm-1.11.0/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch new file mode 100644 index 0000000..ac823bf --- /dev/null +++ b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch @@ -0,0 +1,73 @@ +diff --git a/src/compat/udp_tunnel/udp_tunnel_partial_compat.h b/src/compat/udp_tunnel/udp_tunnel_partial_compat.h +index 0605896..ca810fd 100644 +--- a/src/compat/udp_tunnel/udp_tunnel_partial_compat.h ++++ b/src/compat/udp_tunnel/udp_tunnel_partial_compat.h +@@ -168,15 +168,15 @@ struct __compat_udp_port_cfg { + struct in_addr peer_ip; + #if IS_ENABLED(CONFIG_IPV6) + struct in6_addr peer_ip6; + #endif + }; + __be16 local_udp_port; + __be16 peer_udp_port; +- unsigned int use_udp_checksums:1, use_udp6_tx_checksums:1, use_udp6_rx_checksums:1, ipv6_v6only:1; ++ unsigned int use_udp_checksums:1, use_udp6_tx_checksums:1, use_udp6_rx_checksums:1, reuse_addr:1, reuse_port:1, ipv6_v6only:1; + }; + static inline int __maybe_unused __compat_udp_sock_create(struct net *net, struct __compat_udp_port_cfg *cfg, struct socket **sockp) + { + struct udp_port_cfg old_cfg = { + .family = cfg->family, + .local_ip = cfg->local_ip, + #if IS_ENABLED(CONFIG_IPV6) +@@ -186,15 +186,17 @@ static inline int __maybe_unused __compat_udp_sock_create(struct net *net, struc + #if IS_ENABLED(CONFIG_IPV6) + .peer_ip6 = cfg->peer_ip6, + #endif + .local_udp_port = cfg->local_udp_port, + .peer_udp_port = cfg->peer_udp_port, + .use_udp_checksums = cfg->use_udp_checksums, + .use_udp6_tx_checksums = cfg->use_udp6_tx_checksums, +- .use_udp6_rx_checksums = cfg->use_udp6_rx_checksums ++ .use_udp6_rx_checksums = cfg->use_udp6_rx_checksums, ++ .reuse_addr = cfg->reuse_addr, ++ .reuse_port = cfg->reuse_port + }; + if (cfg->family == AF_INET) + return udp_sock_create4(net, &old_cfg, sockp); + + #if IS_ENABLED(CONFIG_IPV6) + if (cfg->family == AF_INET6) { + int ret; +diff --git a/src/socket.c b/src/socket.c +index e8eceeb..dcc4088 100644 +--- a/src/socket.c ++++ b/src/socket.c +@@ -355,23 +355,27 @@ int wg_socket_init(struct wg_device *wg, u16 port) + .encap_rcv = wg_receive + }; + struct socket *new4 = NULL, *new6 = NULL; + struct udp_port_cfg port4 = { + .family = AF_INET, + .local_ip.s_addr = htonl(INADDR_ANY), + .local_udp_port = htons(port), +- .use_udp_checksums = true ++ .use_udp_checksums = true, ++ .reuse_addr = true, ++ .reuse_port = true + }; + #if IS_ENABLED(CONFIG_IPV6) + int retries = 0; + struct udp_port_cfg port6 = { + .family = AF_INET6, + .local_ip6 = IN6ADDR_ANY_INIT, + .use_udp6_tx_checksums = true, + .use_udp6_rx_checksums = true, ++ .reuse_addr = true, ++ .reuse_port = true, + .ipv6_v6only = true + }; + #endif + + rcu_read_lock(); + net = rcu_dereference(wg->creating_net); + net = net ? maybe_get_net(net) : NULL; diff --git a/src/bases/udm-1.11.0/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch new file mode 100644 index 0000000..12b5891 --- /dev/null +++ b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch @@ -0,0 +1,31 @@ +diff --git a/src/device.c b/src/device.c +index c673446..25aac06 100644 +--- a/src/device.c ++++ b/src/device.c +@@ -127,14 +127,26 @@ static netdev_tx_t wg_xmit(struct sk_buff *skb, struct net_device *dev) + struct sk_buff_head packets; + struct wg_peer *peer; + struct sk_buff *next; + sa_family_t family; + u32 mtu; + int ret; + ++ if (unlikely(skb->mark & wg->fwmark)) { ++ ret = -ENETDOWN; ++ net_crit_ratelimited("%s: loop detected, dropping skb of length %u\n", dev->name, skb->len); ++ goto err; ++ } ++ ++ if (unlikely(skb_end_offset(skb) > 33000)) { ++ ret = -ENETDOWN; ++ net_crit_ratelimited("%s: possible loop detected, dropping skb of size %u\n", dev->name, skb_end_offset(skb)); ++ goto err; ++ } ++ + if (unlikely(!wg_check_packet_protocol(skb))) { + ret = -EPROTONOSUPPORT; + net_dbg_ratelimited("%s: Invalid IP packet\n", dev->name); + goto err; + } + + peer = wg_allowedips_lookup_dst(&wg->peer_allowedips, skb); diff --git a/src/bases/udm-1.11.0/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch new file mode 100644 index 0000000..8e4cb75 --- /dev/null +++ b/src/bases/udm-1.11.0/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch @@ -0,0 +1,233 @@ +--- a/src/netlink.c ++++ b/src/netlink.c +@@ -34,15 +34,17 @@ static const struct nla_policy peer_poli + [WGPEER_A_FLAGS] = { .type = NLA_U32 }, + [WGPEER_A_ENDPOINT] = NLA_POLICY_MIN_LEN(sizeof(struct sockaddr)), + [WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL] = { .type = NLA_U16 }, + [WGPEER_A_LAST_HANDSHAKE_TIME] = NLA_POLICY_EXACT_LEN(sizeof(struct __kernel_timespec)), + [WGPEER_A_RX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_TX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_ALLOWEDIPS] = { .type = NLA_NESTED }, +- [WGPEER_A_PROTOCOL_VERSION] = { .type = NLA_U32 } ++ [WGPEER_A_PROTOCOL_VERSION] = { .type = NLA_U32 }, ++ [WGPEER_A_FORCED_HANDSHAKE_INTERVAL] = { .type = NLA_U16 }, ++ [WGPEER_A_LAST_RECEIVE_TIME] = NLA_POLICY_EXACT_LEN(sizeof(struct __kernel_timespec)), + }; + + static const struct nla_policy allowedip_policy[WGALLOWEDIP_A_MAX + 1] = { + [WGALLOWEDIP_A_FAMILY] = { .type = NLA_U16 }, + [WGALLOWEDIP_A_IPADDR] = NLA_POLICY_MIN_LEN(sizeof(struct in_addr)), + [WGALLOWEDIP_A_CIDR_MASK] = { .type = NLA_U8 } + }; +@@ -119,31 +121,39 @@ get_peer(struct wg_peer *peer, struct sk + goto err; + + if (!allowedips_node) { + const struct __kernel_timespec last_handshake = { + .tv_sec = peer->walltime_last_handshake.tv_sec, + .tv_nsec = peer->walltime_last_handshake.tv_nsec + }; ++ const struct __kernel_timespec last_receive = { ++ .tv_sec = peer->walltime_last_receive.tv_sec, ++ .tv_nsec = peer->walltime_last_receive.tv_nsec ++ }; + + down_read(&peer->handshake.lock); + fail = nla_put(skb, WGPEER_A_PRESHARED_KEY, + NOISE_SYMMETRIC_KEY_LEN, + peer->handshake.preshared_key); + up_read(&peer->handshake.lock); + if (fail) + goto err; + + if (nla_put(skb, WGPEER_A_LAST_HANDSHAKE_TIME, + sizeof(last_handshake), &last_handshake) || ++ nla_put(skb, WGPEER_A_LAST_RECEIVE_TIME, ++ sizeof(last_receive), &last_receive) || + nla_put_u16(skb, WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL, + peer->persistent_keepalive_interval) || + nla_put_u64_64bit(skb, WGPEER_A_TX_BYTES, peer->tx_bytes, + WGPEER_A_UNSPEC) || + nla_put_u64_64bit(skb, WGPEER_A_RX_BYTES, peer->rx_bytes, + WGPEER_A_UNSPEC) || ++ nla_put_u16(skb, WGPEER_A_FORCED_HANDSHAKE_INTERVAL, ++ peer->forced_handshake_interval) || + nla_put_u32(skb, WGPEER_A_PROTOCOL_VERSION, 1)) + goto err; + + read_lock_bh(&peer->endpoint_lock); + if (peer->endpoint.addr.sa_family == AF_INET) + fail = nla_put(skb, WGPEER_A_ENDPOINT, + sizeof(peer->endpoint.addr4), +@@ -474,14 +484,19 @@ static int set_peer(struct wg_device *wg + netif_running(wg->dev); + + peer->persistent_keepalive_interval = persistent_keepalive_interval; + if (send_keepalive) + wg_packet_send_keepalive(peer); + } + ++ if (attrs[WGPEER_A_FORCED_HANDSHAKE_INTERVAL]) { ++ peer->forced_handshake_interval = nla_get_u16( ++ attrs[WGPEER_A_FORCED_HANDSHAKE_INTERVAL]); ++ } ++ + if (netif_running(wg->dev)) + wg_packet_send_staged_packets(peer); + + out: + wg_peer_put(peer); + if (attrs[WGPEER_A_PRESHARED_KEY]) + memzero_explicit(nla_data(attrs[WGPEER_A_PRESHARED_KEY]), +--- a/src/peer.h ++++ b/src/peer.h +@@ -60,14 +60,17 @@ struct wg_peer { + struct timespec64 walltime_last_handshake; + struct kref refcount; + struct rcu_head rcu; + struct list_head peer_list; + struct list_head allowedips_list; + struct napi_struct napi; + u64 internal_id; ++ u16 forced_handshake_interval; ++ struct timer_list timer_forced_handshake; ++ struct timespec64 walltime_last_receive; + }; + + struct wg_peer *wg_peer_create(struct wg_device *wg, + const u8 public_key[NOISE_PUBLIC_KEY_LEN], + const u8 preshared_key[NOISE_SYMMETRIC_KEY_LEN]); + + struct wg_peer *__must_check wg_peer_get_maybe_zero(struct wg_peer *peer); +--- a/src/timers.c ++++ b/src/timers.c +@@ -137,14 +137,31 @@ static void wg_expired_send_persistent_k + struct wg_peer *peer = from_timer(peer, timer, + timer_persistent_keepalive); + + if (likely(peer->persistent_keepalive_interval)) + wg_packet_send_keepalive(peer); + } + ++static void wg_expired_forced_handshake(struct timer_list *timer) ++{ ++ struct wg_peer *peer = from_timer(peer, timer, timer_forced_handshake); ++ ++ if (!likely(peer->forced_handshake_interval)) ++ return; ++ ++ pr_debug("%s: Retrying handshake with peer %llu (%pISpfsc) because we stopped hearing back after forced handshake timeout %d seconds\n", ++ peer->device->dev->name, peer->internal_id, ++ &peer->endpoint.addr, peer->forced_handshake_interval); ++ /* We clear the endpoint address src address, in case this is the cause ++ * of trouble. ++ */ ++ wg_socket_clear_peer_endpoint_src(peer); ++ wg_packet_send_queued_handshake_initiation(peer, false); ++} ++ + /* Should be called after an authenticated data packet is sent. */ + void wg_timers_data_sent(struct wg_peer *peer) + { + if (!timer_pending(&peer->timer_new_handshake)) + mod_peer_timer(peer, &peer->timer_new_handshake, + jiffies + (KEEPALIVE_TIMEOUT + REKEY_TIMEOUT) * HZ + + prandom_u32_max(REKEY_TIMEOUT_JITTER_MAX_JIFFIES)); +@@ -172,14 +189,19 @@ void wg_timers_any_authenticated_packet_ + + /* Should be called after any type of authenticated packet is received, whether + * keepalive, data, or handshake. + */ + void wg_timers_any_authenticated_packet_received(struct wg_peer *peer) + { + del_timer(&peer->timer_new_handshake); ++ ktime_get_real_ts64(&peer->walltime_last_receive); ++ if (likely(peer->forced_handshake_interval)) { ++ mod_peer_timer(peer, &peer->timer_forced_handshake, ++ jiffies + peer->forced_handshake_interval * HZ); ++ } + } + + /* Should be called after a handshake initiation message is sent. */ + void wg_timers_handshake_initiated(struct wg_peer *peer) + { + mod_peer_timer(peer, &peer->timer_retransmit_handshake, + jiffies + REKEY_TIMEOUT * HZ + +@@ -222,22 +244,25 @@ void wg_timers_init(struct wg_peer *peer + wg_expired_retransmit_handshake, 0); + timer_setup(&peer->timer_send_keepalive, wg_expired_send_keepalive, 0); + timer_setup(&peer->timer_new_handshake, wg_expired_new_handshake, 0); + timer_setup(&peer->timer_zero_key_material, + wg_expired_zero_key_material, 0); + timer_setup(&peer->timer_persistent_keepalive, + wg_expired_send_persistent_keepalive, 0); ++ timer_setup(&peer->timer_forced_handshake, ++ wg_expired_forced_handshake, 0); + INIT_WORK(&peer->clear_peer_work, wg_queued_expired_zero_key_material); + peer->timer_handshake_attempts = 0; + peer->sent_lastminute_handshake = false; + peer->timer_need_another_keepalive = false; + } + + void wg_timers_stop(struct wg_peer *peer) + { + del_timer_sync(&peer->timer_retransmit_handshake); + del_timer_sync(&peer->timer_send_keepalive); + del_timer_sync(&peer->timer_new_handshake); ++ del_timer_sync(&peer->timer_forced_handshake); + del_timer_sync(&peer->timer_zero_key_material); + del_timer_sync(&peer->timer_persistent_keepalive); + flush_work(&peer->clear_peer_work); + } +--- a/src/uapi/wireguard.h ++++ b/src/uapi/wireguard.h +@@ -45,14 +45,16 @@ + * WGALLOWEDIP_A_CIDR_MASK: NLA_U8 + * 0: NLA_NESTED + * ... + * 0: NLA_NESTED + * ... + * ... + * WGPEER_A_PROTOCOL_VERSION: NLA_U32 ++ * WGPEER_A_FORCED_HANDSHAKE_INTERVAL: NLA_U16 ++ * WGPEER_A_LAST_RECEIVE_TIME: NLA_EXACT_LEN, struct __kernel_timespec + * 0: NLA_NESTED + * ... + * ... + * + * It is possible that all of the allowed IPs of a single peer will not + * fit within a single netlink message. In that case, the same peer will + * be written in the following message, except it will only contain +@@ -107,14 +109,15 @@ + * ... + * ... + * WGPEER_A_PROTOCOL_VERSION: NLA_U32, should not be set or used at + * all by most users of this API, as the + * most recent protocol will be used when + * this is unset. Otherwise, must be set + * to 1. ++ * WGPEER_A_FORCED_HANDSHAKE_INTERVAL: NLA_U16, 0 to disable + * 0: NLA_NESTED + * ... + * ... + * + * It is possible that the amount of configuration data exceeds that of + * the maximum message length accepted by the kernel. In that case, several + * messages should be sent one after another, with each successive one +@@ -176,14 +179,16 @@ enum wgpeer_attribute { + WGPEER_A_ENDPOINT, + WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL, + WGPEER_A_LAST_HANDSHAKE_TIME, + WGPEER_A_RX_BYTES, + WGPEER_A_TX_BYTES, + WGPEER_A_ALLOWEDIPS, + WGPEER_A_PROTOCOL_VERSION, ++ WGPEER_A_FORCED_HANDSHAKE_INTERVAL, ++ WGPEER_A_LAST_RECEIVE_TIME, + __WGPEER_A_LAST + }; + #define WGPEER_A_MAX (__WGPEER_A_LAST - 1) + + enum wgallowedip_attribute { + WGALLOWEDIP_A_UNSPEC, + WGALLOWEDIP_A_FAMILY, diff --git a/src/bases/udm-2.4/buildroot-config.txt b/src/bases/udm-2.4/buildroot-config.txt index 886f3d2..727aa1c 100644 --- a/src/bases/udm-2.4/buildroot-config.txt +++ b/src/bases/udm-2.4/buildroot-config.txt @@ -118,7 +118,7 @@ BR2_STATIC_LIBS=y # BR2_SHARED_LIBS is not set # BR2_SHARED_STATIC_LIBS is not set BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" -BR2_GLOBAL_PATCH_DIR="" +BR2_GLOBAL_PATCH_DIR="patches" # # Advanced diff --git a/src/bases/udm-2.4/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch b/src/bases/udm-2.4/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch new file mode 100644 index 0000000..dcce17f --- /dev/null +++ b/src/bases/udm-2.4/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch @@ -0,0 +1,14 @@ +--- a/src/compat/compat.h ++++ b/src/compat/compat.h +@@ -664,7 +664,8 @@ struct __compat_dummy_container { char dev; }; + #define genl_dump_check_consistent(a, b) genl_dump_check_consistent(a, b, &genl_family) + #endif + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) && \ ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) + static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) + { + void *tmp = skb_put(skb, len); + + diff --git a/src/bases/udm-2.4/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch b/src/bases/udm-2.4/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch new file mode 100644 index 0000000..6115f8d --- /dev/null +++ b/src/bases/udm-2.4/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch @@ -0,0 +1,14 @@ +diff --git a/src/compat/compat.h b/src/compat/compat.h +index 7acbfc6..845238c 100644 +--- a/src/compat/compat.h ++++ b/src/compat/compat.h +@@ -665,7 +665,8 @@ struct __compat_dummy_container { char dev; }; + #endif + + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) && \ +- LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) && \ ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 60) + static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) + { + void *tmp = skb_put(skb, len); diff --git a/src/bases/udm-2.4/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch b/src/bases/udm-2.4/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch new file mode 100644 index 0000000..ac823bf --- /dev/null +++ b/src/bases/udm-2.4/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch @@ -0,0 +1,73 @@ +diff --git a/src/compat/udp_tunnel/udp_tunnel_partial_compat.h b/src/compat/udp_tunnel/udp_tunnel_partial_compat.h +index 0605896..ca810fd 100644 +--- a/src/compat/udp_tunnel/udp_tunnel_partial_compat.h ++++ b/src/compat/udp_tunnel/udp_tunnel_partial_compat.h +@@ -168,15 +168,15 @@ struct __compat_udp_port_cfg { + struct in_addr peer_ip; + #if IS_ENABLED(CONFIG_IPV6) + struct in6_addr peer_ip6; + #endif + }; + __be16 local_udp_port; + __be16 peer_udp_port; +- unsigned int use_udp_checksums:1, use_udp6_tx_checksums:1, use_udp6_rx_checksums:1, ipv6_v6only:1; ++ unsigned int use_udp_checksums:1, use_udp6_tx_checksums:1, use_udp6_rx_checksums:1, reuse_addr:1, reuse_port:1, ipv6_v6only:1; + }; + static inline int __maybe_unused __compat_udp_sock_create(struct net *net, struct __compat_udp_port_cfg *cfg, struct socket **sockp) + { + struct udp_port_cfg old_cfg = { + .family = cfg->family, + .local_ip = cfg->local_ip, + #if IS_ENABLED(CONFIG_IPV6) +@@ -186,15 +186,17 @@ static inline int __maybe_unused __compat_udp_sock_create(struct net *net, struc + #if IS_ENABLED(CONFIG_IPV6) + .peer_ip6 = cfg->peer_ip6, + #endif + .local_udp_port = cfg->local_udp_port, + .peer_udp_port = cfg->peer_udp_port, + .use_udp_checksums = cfg->use_udp_checksums, + .use_udp6_tx_checksums = cfg->use_udp6_tx_checksums, +- .use_udp6_rx_checksums = cfg->use_udp6_rx_checksums ++ .use_udp6_rx_checksums = cfg->use_udp6_rx_checksums, ++ .reuse_addr = cfg->reuse_addr, ++ .reuse_port = cfg->reuse_port + }; + if (cfg->family == AF_INET) + return udp_sock_create4(net, &old_cfg, sockp); + + #if IS_ENABLED(CONFIG_IPV6) + if (cfg->family == AF_INET6) { + int ret; +diff --git a/src/socket.c b/src/socket.c +index e8eceeb..dcc4088 100644 +--- a/src/socket.c ++++ b/src/socket.c +@@ -355,23 +355,27 @@ int wg_socket_init(struct wg_device *wg, u16 port) + .encap_rcv = wg_receive + }; + struct socket *new4 = NULL, *new6 = NULL; + struct udp_port_cfg port4 = { + .family = AF_INET, + .local_ip.s_addr = htonl(INADDR_ANY), + .local_udp_port = htons(port), +- .use_udp_checksums = true ++ .use_udp_checksums = true, ++ .reuse_addr = true, ++ .reuse_port = true + }; + #if IS_ENABLED(CONFIG_IPV6) + int retries = 0; + struct udp_port_cfg port6 = { + .family = AF_INET6, + .local_ip6 = IN6ADDR_ANY_INIT, + .use_udp6_tx_checksums = true, + .use_udp6_rx_checksums = true, ++ .reuse_addr = true, ++ .reuse_port = true, + .ipv6_v6only = true + }; + #endif + + rcu_read_lock(); + net = rcu_dereference(wg->creating_net); + net = net ? maybe_get_net(net) : NULL; diff --git a/src/bases/udm-2.4/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch b/src/bases/udm-2.4/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch new file mode 100644 index 0000000..12b5891 --- /dev/null +++ b/src/bases/udm-2.4/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch @@ -0,0 +1,31 @@ +diff --git a/src/device.c b/src/device.c +index c673446..25aac06 100644 +--- a/src/device.c ++++ b/src/device.c +@@ -127,14 +127,26 @@ static netdev_tx_t wg_xmit(struct sk_buff *skb, struct net_device *dev) + struct sk_buff_head packets; + struct wg_peer *peer; + struct sk_buff *next; + sa_family_t family; + u32 mtu; + int ret; + ++ if (unlikely(skb->mark & wg->fwmark)) { ++ ret = -ENETDOWN; ++ net_crit_ratelimited("%s: loop detected, dropping skb of length %u\n", dev->name, skb->len); ++ goto err; ++ } ++ ++ if (unlikely(skb_end_offset(skb) > 33000)) { ++ ret = -ENETDOWN; ++ net_crit_ratelimited("%s: possible loop detected, dropping skb of size %u\n", dev->name, skb_end_offset(skb)); ++ goto err; ++ } ++ + if (unlikely(!wg_check_packet_protocol(skb))) { + ret = -EPROTONOSUPPORT; + net_dbg_ratelimited("%s: Invalid IP packet\n", dev->name); + goto err; + } + + peer = wg_allowedips_lookup_dst(&wg->peer_allowedips, skb); diff --git a/src/bases/udm-2.4/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch b/src/bases/udm-2.4/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch new file mode 100644 index 0000000..8e4cb75 --- /dev/null +++ b/src/bases/udm-2.4/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch @@ -0,0 +1,233 @@ +--- a/src/netlink.c ++++ b/src/netlink.c +@@ -34,15 +34,17 @@ static const struct nla_policy peer_poli + [WGPEER_A_FLAGS] = { .type = NLA_U32 }, + [WGPEER_A_ENDPOINT] = NLA_POLICY_MIN_LEN(sizeof(struct sockaddr)), + [WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL] = { .type = NLA_U16 }, + [WGPEER_A_LAST_HANDSHAKE_TIME] = NLA_POLICY_EXACT_LEN(sizeof(struct __kernel_timespec)), + [WGPEER_A_RX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_TX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_ALLOWEDIPS] = { .type = NLA_NESTED }, +- [WGPEER_A_PROTOCOL_VERSION] = { .type = NLA_U32 } ++ [WGPEER_A_PROTOCOL_VERSION] = { .type = NLA_U32 }, ++ [WGPEER_A_FORCED_HANDSHAKE_INTERVAL] = { .type = NLA_U16 }, ++ [WGPEER_A_LAST_RECEIVE_TIME] = NLA_POLICY_EXACT_LEN(sizeof(struct __kernel_timespec)), + }; + + static const struct nla_policy allowedip_policy[WGALLOWEDIP_A_MAX + 1] = { + [WGALLOWEDIP_A_FAMILY] = { .type = NLA_U16 }, + [WGALLOWEDIP_A_IPADDR] = NLA_POLICY_MIN_LEN(sizeof(struct in_addr)), + [WGALLOWEDIP_A_CIDR_MASK] = { .type = NLA_U8 } + }; +@@ -119,31 +121,39 @@ get_peer(struct wg_peer *peer, struct sk + goto err; + + if (!allowedips_node) { + const struct __kernel_timespec last_handshake = { + .tv_sec = peer->walltime_last_handshake.tv_sec, + .tv_nsec = peer->walltime_last_handshake.tv_nsec + }; ++ const struct __kernel_timespec last_receive = { ++ .tv_sec = peer->walltime_last_receive.tv_sec, ++ .tv_nsec = peer->walltime_last_receive.tv_nsec ++ }; + + down_read(&peer->handshake.lock); + fail = nla_put(skb, WGPEER_A_PRESHARED_KEY, + NOISE_SYMMETRIC_KEY_LEN, + peer->handshake.preshared_key); + up_read(&peer->handshake.lock); + if (fail) + goto err; + + if (nla_put(skb, WGPEER_A_LAST_HANDSHAKE_TIME, + sizeof(last_handshake), &last_handshake) || ++ nla_put(skb, WGPEER_A_LAST_RECEIVE_TIME, ++ sizeof(last_receive), &last_receive) || + nla_put_u16(skb, WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL, + peer->persistent_keepalive_interval) || + nla_put_u64_64bit(skb, WGPEER_A_TX_BYTES, peer->tx_bytes, + WGPEER_A_UNSPEC) || + nla_put_u64_64bit(skb, WGPEER_A_RX_BYTES, peer->rx_bytes, + WGPEER_A_UNSPEC) || ++ nla_put_u16(skb, WGPEER_A_FORCED_HANDSHAKE_INTERVAL, ++ peer->forced_handshake_interval) || + nla_put_u32(skb, WGPEER_A_PROTOCOL_VERSION, 1)) + goto err; + + read_lock_bh(&peer->endpoint_lock); + if (peer->endpoint.addr.sa_family == AF_INET) + fail = nla_put(skb, WGPEER_A_ENDPOINT, + sizeof(peer->endpoint.addr4), +@@ -474,14 +484,19 @@ static int set_peer(struct wg_device *wg + netif_running(wg->dev); + + peer->persistent_keepalive_interval = persistent_keepalive_interval; + if (send_keepalive) + wg_packet_send_keepalive(peer); + } + ++ if (attrs[WGPEER_A_FORCED_HANDSHAKE_INTERVAL]) { ++ peer->forced_handshake_interval = nla_get_u16( ++ attrs[WGPEER_A_FORCED_HANDSHAKE_INTERVAL]); ++ } ++ + if (netif_running(wg->dev)) + wg_packet_send_staged_packets(peer); + + out: + wg_peer_put(peer); + if (attrs[WGPEER_A_PRESHARED_KEY]) + memzero_explicit(nla_data(attrs[WGPEER_A_PRESHARED_KEY]), +--- a/src/peer.h ++++ b/src/peer.h +@@ -60,14 +60,17 @@ struct wg_peer { + struct timespec64 walltime_last_handshake; + struct kref refcount; + struct rcu_head rcu; + struct list_head peer_list; + struct list_head allowedips_list; + struct napi_struct napi; + u64 internal_id; ++ u16 forced_handshake_interval; ++ struct timer_list timer_forced_handshake; ++ struct timespec64 walltime_last_receive; + }; + + struct wg_peer *wg_peer_create(struct wg_device *wg, + const u8 public_key[NOISE_PUBLIC_KEY_LEN], + const u8 preshared_key[NOISE_SYMMETRIC_KEY_LEN]); + + struct wg_peer *__must_check wg_peer_get_maybe_zero(struct wg_peer *peer); +--- a/src/timers.c ++++ b/src/timers.c +@@ -137,14 +137,31 @@ static void wg_expired_send_persistent_k + struct wg_peer *peer = from_timer(peer, timer, + timer_persistent_keepalive); + + if (likely(peer->persistent_keepalive_interval)) + wg_packet_send_keepalive(peer); + } + ++static void wg_expired_forced_handshake(struct timer_list *timer) ++{ ++ struct wg_peer *peer = from_timer(peer, timer, timer_forced_handshake); ++ ++ if (!likely(peer->forced_handshake_interval)) ++ return; ++ ++ pr_debug("%s: Retrying handshake with peer %llu (%pISpfsc) because we stopped hearing back after forced handshake timeout %d seconds\n", ++ peer->device->dev->name, peer->internal_id, ++ &peer->endpoint.addr, peer->forced_handshake_interval); ++ /* We clear the endpoint address src address, in case this is the cause ++ * of trouble. ++ */ ++ wg_socket_clear_peer_endpoint_src(peer); ++ wg_packet_send_queued_handshake_initiation(peer, false); ++} ++ + /* Should be called after an authenticated data packet is sent. */ + void wg_timers_data_sent(struct wg_peer *peer) + { + if (!timer_pending(&peer->timer_new_handshake)) + mod_peer_timer(peer, &peer->timer_new_handshake, + jiffies + (KEEPALIVE_TIMEOUT + REKEY_TIMEOUT) * HZ + + prandom_u32_max(REKEY_TIMEOUT_JITTER_MAX_JIFFIES)); +@@ -172,14 +189,19 @@ void wg_timers_any_authenticated_packet_ + + /* Should be called after any type of authenticated packet is received, whether + * keepalive, data, or handshake. + */ + void wg_timers_any_authenticated_packet_received(struct wg_peer *peer) + { + del_timer(&peer->timer_new_handshake); ++ ktime_get_real_ts64(&peer->walltime_last_receive); ++ if (likely(peer->forced_handshake_interval)) { ++ mod_peer_timer(peer, &peer->timer_forced_handshake, ++ jiffies + peer->forced_handshake_interval * HZ); ++ } + } + + /* Should be called after a handshake initiation message is sent. */ + void wg_timers_handshake_initiated(struct wg_peer *peer) + { + mod_peer_timer(peer, &peer->timer_retransmit_handshake, + jiffies + REKEY_TIMEOUT * HZ + +@@ -222,22 +244,25 @@ void wg_timers_init(struct wg_peer *peer + wg_expired_retransmit_handshake, 0); + timer_setup(&peer->timer_send_keepalive, wg_expired_send_keepalive, 0); + timer_setup(&peer->timer_new_handshake, wg_expired_new_handshake, 0); + timer_setup(&peer->timer_zero_key_material, + wg_expired_zero_key_material, 0); + timer_setup(&peer->timer_persistent_keepalive, + wg_expired_send_persistent_keepalive, 0); ++ timer_setup(&peer->timer_forced_handshake, ++ wg_expired_forced_handshake, 0); + INIT_WORK(&peer->clear_peer_work, wg_queued_expired_zero_key_material); + peer->timer_handshake_attempts = 0; + peer->sent_lastminute_handshake = false; + peer->timer_need_another_keepalive = false; + } + + void wg_timers_stop(struct wg_peer *peer) + { + del_timer_sync(&peer->timer_retransmit_handshake); + del_timer_sync(&peer->timer_send_keepalive); + del_timer_sync(&peer->timer_new_handshake); ++ del_timer_sync(&peer->timer_forced_handshake); + del_timer_sync(&peer->timer_zero_key_material); + del_timer_sync(&peer->timer_persistent_keepalive); + flush_work(&peer->clear_peer_work); + } +--- a/src/uapi/wireguard.h ++++ b/src/uapi/wireguard.h +@@ -45,14 +45,16 @@ + * WGALLOWEDIP_A_CIDR_MASK: NLA_U8 + * 0: NLA_NESTED + * ... + * 0: NLA_NESTED + * ... + * ... + * WGPEER_A_PROTOCOL_VERSION: NLA_U32 ++ * WGPEER_A_FORCED_HANDSHAKE_INTERVAL: NLA_U16 ++ * WGPEER_A_LAST_RECEIVE_TIME: NLA_EXACT_LEN, struct __kernel_timespec + * 0: NLA_NESTED + * ... + * ... + * + * It is possible that all of the allowed IPs of a single peer will not + * fit within a single netlink message. In that case, the same peer will + * be written in the following message, except it will only contain +@@ -107,14 +109,15 @@ + * ... + * ... + * WGPEER_A_PROTOCOL_VERSION: NLA_U32, should not be set or used at + * all by most users of this API, as the + * most recent protocol will be used when + * this is unset. Otherwise, must be set + * to 1. ++ * WGPEER_A_FORCED_HANDSHAKE_INTERVAL: NLA_U16, 0 to disable + * 0: NLA_NESTED + * ... + * ... + * + * It is possible that the amount of configuration data exceeds that of + * the maximum message length accepted by the kernel. In that case, several + * messages should be sent one after another, with each successive one +@@ -176,14 +179,16 @@ enum wgpeer_attribute { + WGPEER_A_ENDPOINT, + WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL, + WGPEER_A_LAST_HANDSHAKE_TIME, + WGPEER_A_RX_BYTES, + WGPEER_A_TX_BYTES, + WGPEER_A_ALLOWEDIPS, + WGPEER_A_PROTOCOL_VERSION, ++ WGPEER_A_FORCED_HANDSHAKE_INTERVAL, ++ WGPEER_A_LAST_RECEIVE_TIME, + __WGPEER_A_LAST + }; + #define WGPEER_A_MAX (__WGPEER_A_LAST - 1) + + enum wgallowedip_attribute { + WGALLOWEDIP_A_UNSPEC, + WGALLOWEDIP_A_FAMILY, diff --git a/src/bases/udm-base-2.4/buildroot-config.txt b/src/bases/udm-base-2.4/buildroot-config.txt new file mode 100644 index 0000000..727aa1c --- /dev/null +++ b/src/bases/udm-base-2.4/buildroot-config.txt @@ -0,0 +1,3557 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2017.11.1-g01608d3-dirty Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_ARCH_IS_64=y +BR2_ARCH_HAS_MMU_MANDATORY=y +BR2_ARCH_HAS_MMU_OPTIONAL=y +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +BR2_aarch64=y +# BR2_aarch64_be is not set +# BR2_bfin is not set +# BR2_csky is not set +# BR2_i386 is not set +# BR2_m68k is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_or1k is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sparc is not set +# BR2_sparc64 is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT=y +BR2_ARCH="aarch64" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ABI="lp64" +BR2_GCC_TARGET_CPU="cortex-a57" +BR2_BINFMT_SUPPORTS_SHARED=y +BR2_READELF_ARCH_NAME="AArch64" +BR2_BINFMT_ELF=y +BR2_ARM_CPU_HAS_VFPV2=y +BR2_ARM_CPU_HAS_VFPV3=y +BR2_ARM_CPU_HAS_VFPV4=y +BR2_ARM_CPU_HAS_FP_ARMV8=y +BR2_ARM_CPU_ARMV8=y +# BR2_cortex_a53 is not set +BR2_cortex_a57=y +# BR2_cortex_a57_a53 is not set +# BR2_cortex_a72 is not set +# BR2_cortex_a72_a53 is not set +# BR2_ARM_FPU_VFPV2 is not set +# BR2_ARM_FPU_VFPV3 is not set +# BR2_ARM_FPU_VFPV3D16 is not set +# BR2_ARM_FPU_VFPV4 is not set +# BR2_ARM_FPU_VFPV4D16 is not set +BR2_ARM_FPU_FP_ARMV8=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn --non-interactive" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_LZCAT="lzip -d -c" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="https://cdn.kernel.org/pub" +BR2_GNU_MIRROR="http://ftpmirror.gnu.org" +BR2_LUAROCKS_MIRROR="http://rocks.moonscript.org" +BR2_CPAN_MIRROR="http://cpan.metacpan.org" +BR2_JLEVEL=0 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="--max-size 7G" +# BR2_CCACHE_USE_BASEDIR is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +# BR2_OPTIMIZE_G is not set +BR2_OPTIMIZE_S=y +# BR2_SSP_NONE is not set +# BR2_SSP_REGULAR is not set +# BR2_SSP_STRONG is not set +BR2_SSP_ALL=y +BR2_STATIC_LIBS=y +# BR2_SHARED_LIBS is not set +# BR2_SHARED_STATIC_LIBS is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="patches" + +# +# Advanced +# +BR2_COMPILER_PARANOID_UNSAFE_PATH=y +# BR2_REPRODUCIBLE is not set + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set + +# +# Toolchain Buildroot Options +# +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set + +# +# glibc needs a toolchain w/ dynamic library, kernel headers >= 3.2 +# +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Kernel Header Options +# +BR2_KERNEL_HEADERS_AS_KERNEL=y +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_4_1 is not set +# BR2_KERNEL_HEADERS_4_4 is not set +# BR2_KERNEL_HEADERS_4_9 is not set +# BR2_KERNEL_HEADERS_4_10 is not set +# BR2_KERNEL_HEADERS_4_11 is not set +# BR2_KERNEL_HEADERS_4_12 is not set +# BR2_KERNEL_HEADERS_4_13 is not set +# BR2_KERNEL_HEADERS_4_19 is not set +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_10 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_5 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_3 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_2 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_0 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_19 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_17 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_16 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_15 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_13 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_12 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_11 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_9 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_8 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_7 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_6 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_5 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_4 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_3 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_2 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_1 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0 is not set +# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_REALLY_OLD is not set +BR2_PACKAGE_LINUX_HEADERS=y +BR2_PACKAGE_MUSL=y + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_27_X is not set +# BR2_BINUTILS_VERSION_2_28_X is not set +BR2_BINUTILS_VERSION_2_29_X=y +BR2_BINUTILS_VERSION="2.29.1" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +# BR2_GCC_VERSION_4_9_X is not set +# BR2_GCC_VERSION_5_X is not set +BR2_GCC_VERSION_6_X=y +# BR2_GCC_VERSION_7_X is not set +BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="6.4.0" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +# BR2_TOOLCHAIN_BUILDROOT_FORTRAN is not set +# BR2_GCC_ENABLE_LTO is not set +# BR2_GCC_ENABLE_OPENMP is not set +# BR2_GCC_ENABLE_GRAPHITE is not set +BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS=y + +# +# Host GDB Options +# +# BR2_PACKAGE_HOST_GDB is not set + +# +# Toolchain Generic Options +# +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="4.19" +BR2_TOOLCHAIN_GCC_AT_LEAST_4_3=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_4=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_7=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_8=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_9=y +BR2_TOOLCHAIN_GCC_AT_LEAST_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST="6" +BR2_TOOLCHAIN_HAS_MNAN_OPTION=y +BR2_TOOLCHAIN_HAS_MFPXX_OPTION=y +BR2_TOOLCHAIN_HAS_SYNC_1=y +BR2_TOOLCHAIN_HAS_SYNC_2=y +BR2_TOOLCHAIN_HAS_SYNC_4=y +BR2_TOOLCHAIN_HAS_SYNC_8=y +BR2_TOOLCHAIN_HAS_LIBATOMIC=y +BR2_TOOLCHAIN_HAS_ATOMIC=y + +# +# System configuration +# +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +# BR2_ROOTFS_MERGED_USR is not set +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs a glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +# BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is not set +BR2_TARGET_ENABLE_ROOT_LOGIN=y +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_SYSTEM_BIN_SH_BUSYBOX=y +# BR2_SYSTEM_BIN_SH_BASH is not set +# BR2_SYSTEM_BIN_SH_DASH is not set +# BR2_SYSTEM_BIN_SH_MKSH is not set +# BR2_SYSTEM_BIN_SH_ZSH is not set +# BR2_SYSTEM_BIN_SH_NONE is not set +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="console" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP=y +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE="0" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_SYSTEM_DHCP="" +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US" + +# +# NLS support needs a toolchain w/ wchar, dynamic library +# +BR2_TARGET_TZ_INFO=y +BR2_TARGET_TZ_ZONELIST="default" +BR2_TARGET_LOCALTIME="Etc/UTC" +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_FAKEROOT_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +BR2_LINUX_KERNEL=y +# BR2_LINUX_KERNEL_LATEST_VERSION is not set +# BR2_LINUX_KERNEL_LATEST_CIP_VERSION is not set +# BR2_LINUX_KERNEL_CUSTOM_VERSION is not set +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# BR2_LINUX_KERNEL_CUSTOM_GIT is not set +# BR2_LINUX_KERNEL_CUSTOM_HG is not set +# BR2_LINUX_KERNEL_CUSTOM_SVN is not set +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file://$(TOPDIR)/../bases/linux-2.4.tar.gz" +BR2_LINUX_KERNEL_VERSION="custom" +BR2_LINUX_KERNEL_PATCH="linux-patches" +# BR2_LINUX_KERNEL_USE_DEFCONFIG is not set +# BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG is not set +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="kernel-config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="" +BR2_LINUX_KERNEL_IMAGE=y +# BR2_LINUX_KERNEL_VMLINUX is not set +# BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM is not set +BR2_LINUX_KERNEL_GZIP=y +# BR2_LINUX_KERNEL_LZ4 is not set +# BR2_LINUX_KERNEL_LZMA is not set +# BR2_LINUX_KERNEL_LZO is not set +# BR2_LINUX_KERNEL_XZ is not set +# BR2_LINUX_KERNEL_DTS_SUPPORT is not set +# BR2_LINUX_KERNEL_INSTALL_TARGET is not set + +# +# Linux Kernel Extensions +# +# BR2_LINUX_KERNEL_EXT_RTAI is not set +# BR2_LINUX_KERNEL_EXT_EV3DEV_LINUX_DRIVERS is not set +# BR2_LINUX_KERNEL_EXT_FBTFT is not set +# BR2_LINUX_KERNEL_EXT_AUFS is not set + +# +# Linux Kernel Tools +# +# BR2_PACKAGE_LINUX_TOOLS_CPUPOWER is not set +# BR2_PACKAGE_LINUX_TOOLS_GPIO is not set +# BR2_PACKAGE_LINUX_TOOLS_IIO is not set +# BR2_PACKAGE_LINUX_TOOLS_PERF is not set +# BR2_PACKAGE_LINUX_TOOLS_SELFTESTS is not set +# BR2_PACKAGE_LINUX_TOOLS_TMON is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="" +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + +# +# Busybox individual binaries need a toolchain w/ dynamic library +# +BR2_PACKAGE_BUSYBOX_WATCHDOG=y +BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD="2" +BR2_PACKAGE_SKELETON=y +BR2_PACKAGE_HAS_SKELETON=y +BR2_PACKAGE_PROVIDES_SKELETON="skeleton-init-sysv" +BR2_PACKAGE_SKELETON_INIT_COMMON=y +BR2_PACKAGE_SKELETON_INIT_SYSV=y + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_ATEST is not set +# BR2_PACKAGE_AUMIX is not set + +# +# bellagio needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_DVBLAST is not set +# BR2_PACKAGE_DVDAUTHOR is not set +# BR2_PACKAGE_DVDRW_TOOLS is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_FAAD2 is not set +BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS=y +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GMRENDER_RESURRECT is not set + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_GSTREAMER1 is not set + +# +# jack2 needs a toolchain w/ threads, C++, dynamic library +# +BR2_PACKAGE_KODI_ARCH_SUPPORTS=y + +# +# kodi needs python w/ .py modules, a uClibc or glibc toolchain w/ C++, locale, threads, wchar, dynamic library, gcc >= 4.8, host gcc >= 4.6 +# + +# +# kodi needs an OpenGL EGL with either an openGL or an OpenGL ES backend +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MIMIC is not set + +# +# miraclecast needs systemd and a glibc toolchain w/ threads and wchar +# +# BR2_PACKAGE_MJPEGTOOLS is not set +# BR2_PACKAGE_MODPLUGTOOLS is not set +# BR2_PACKAGE_MOTION is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPD_MPC is not set +# BR2_PACKAGE_MPG123 is not set +BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS=y +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MPV is not set +# BR2_PACKAGE_MULTICAT is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC=y + +# +# pulseaudio needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOX is not set + +# +# squeezelite needs a toolchain w/ wchar, NPTL, dynamic library +# + +# +# tovid depends on python or python3 +# + +# +# tstools needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UDPXY is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# v4l2grab needs a toolchain w/ threads, dynamic library, C++ and headers >= 3.0 +# +# BR2_PACKAGE_V4L2LOOPBACK is not set + +# +# vlc needs a toolchain w/ C++, dynamic library, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# ympd needs a toolchain w/ threads, dynamic library +# + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_GZIP is not set +BR2_PACKAGE_LZ4=y +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_P7ZIP is not set +# BR2_PACKAGE_PIXZ is not set +# BR2_PACKAGE_UNRAR is not set +# BR2_PACKAGE_UNZIP is not set +# BR2_PACKAGE_XZ is not set +# BR2_PACKAGE_ZIP is not set +# BR2_PACKAGE_ZSTD is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BLKTRACE is not set +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DIEHARDER is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar, threads, dynamic library +# + +# +# dt needs a glibc or uClibc toolchain w/ threads +# + +# +# duma needs a toolchain w/ C++, threads, dynamic library +# + +# +# fio needs a toolchain w/ dynamic library, threads +# + +# +# fwts needs a glibc toolchain w/ wchar, threads +# +BR2_PACKAGE_GDB_ARCH_SUPPORTS=y +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires a glibc or uClibc toolchain w/ wchar, thread, C++, gcc >= 4.8 +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KTAP is not set +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LSOF is not set +BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS=y + +# +# ltp-testsuite needs a glibc or uClibc toolchain w/ NPTL +# + +# +# ltrace needs a uClibc or glibc toolchain w/ wchar, dynamic library +# +# BR2_PACKAGE_LTTNG_BABELTRACE is not set +# BR2_PACKAGE_LTTNG_MODULES is not set + +# +# lttng-tools needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_NETSNIFF_NG is not set + +# +# nmon needs a glibc toolchain +# +BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set + +# +# rt-tests needs a uClibc or glibc toolchain w/ NPTL, headers >= 3.14, dynamic library +# +# BR2_PACKAGE_SPIDEV_TEST is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set + +# +# stress-ng needs a glibc toolchain w/ dynamic library, headers >= 3.3 +# +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ threads, dynamic library +# +BR2_PACKAGE_TRINITY_ARCH_SUPPORTS=y + +# +# trinity needs a uClibc or glibc toolchain w/ headers >= 3.4 +# +# BR2_PACKAGE_UCLIBC_NG_TEST is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_BUSTLE is not set +# BR2_PACKAGE_CHECK is not set +BR2_PACKAGE_CMAKE_ARCH_SUPPORTS=y + +# +# ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.7, NPTL +# + +# +# cppunit needs a toolchain w/ C++, dynamic library +# +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_CXXTEST is not set +# BR2_PACKAGE_DIFFUTILS is not set +# BR2_PACKAGE_DOS2UNIX is not set +# BR2_PACKAGE_FINDUTILS is not set +BR2_PACKAGE_FLEX=y + +# +# gawk needs a toolchain w/ wchar, dynamic library +# +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GIT_CRYPT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_GREP is not set +# BR2_PACKAGE_JO is not set +BR2_PACKAGE_JQ=y +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PATCH is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SED is not set + +# +# subversion needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_AUFS_UTIL is not set + +# +# autofs needs a toolchain w/ NPTL, RPC, dynamic library +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CPIO is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_DOSFSTOOLS is not set +BR2_PACKAGE_E2FSPROGS=y +# BR2_PACKAGE_E2FSPROGS_DEBUGFS is not set +# BR2_PACKAGE_E2FSPROGS_E2IMAGE is not set +# BR2_PACKAGE_E2FSPROGS_E4DEFRAG is not set +BR2_PACKAGE_E2FSPROGS_FSCK=y + +# +# fuse2fs needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_E2FSPROGS_RESIZE2FS is not set +# BR2_PACKAGE_E2TOOLS is not set + +# +# ecryptfs-utils needs a toolchain w/ threads, wchar, dynami library +# + +# +# exfat needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_FSCRYPTCTL is not set +# BR2_PACKAGE_FWUP is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MMC_UTILS is not set +BR2_PACKAGE_MTD=y + +# +# MTD tools selection +# +# BR2_PACKAGE_MTD_DOCFDISK is not set +# BR2_PACKAGE_MTD_DOC_LOADBIOS is not set +BR2_PACKAGE_MTD_FLASHCP=y +BR2_PACKAGE_MTD_FLASH_ERASE=y +BR2_PACKAGE_MTD_FLASH_LOCK=y +# BR2_PACKAGE_MTD_FLASH_OTP_DUMP is not set +# BR2_PACKAGE_MTD_FLASH_OTP_INFO is not set +# BR2_PACKAGE_MTD_FLASH_OTP_LOCK is not set +# BR2_PACKAGE_MTD_FLASH_OTP_WRITE is not set +BR2_PACKAGE_MTD_FLASH_UNLOCK=y +# BR2_PACKAGE_MTD_FTL_CHECK is not set +# BR2_PACKAGE_MTD_FTL_FORMAT is not set +# BR2_PACKAGE_MTD_JFFS2DUMP is not set +# BR2_PACKAGE_MTD_MKFSJFFS2 is not set +# BR2_PACKAGE_MTD_MKFSUBIFS is not set +# BR2_PACKAGE_MTD_MTD_DEBUG is not set +# BR2_PACKAGE_MTD_MTDPART is not set +# BR2_PACKAGE_MTD_NANDDUMP is not set +# BR2_PACKAGE_MTD_NANDTEST is not set +# BR2_PACKAGE_MTD_NANDWRITE is not set +# BR2_PACKAGE_MTD_NFTLDUMP is not set +# BR2_PACKAGE_MTD_NFTL_FORMAT is not set +# BR2_PACKAGE_MTD_RECV_IMAGE is not set +# BR2_PACKAGE_MTD_RFDDUMP is not set +# BR2_PACKAGE_MTD_RFDFORMAT is not set +# BR2_PACKAGE_MTD_SERVE_IMAGE is not set +# BR2_PACKAGE_MTD_SUMTOOL is not set +BR2_PACKAGE_MTD_MTDINFO=y +# BR2_PACKAGE_MTD_UBIATTACH is not set +# BR2_PACKAGE_MTD_UBICRC32 is not set +# BR2_PACKAGE_MTD_UBIDETACH is not set +# BR2_PACKAGE_MTD_UBIFORMAT is not set +# BR2_PACKAGE_MTD_UBIMKVOL is not set +# BR2_PACKAGE_MTD_UBINFO is not set +# BR2_PACKAGE_MTD_UBINIZE is not set +# BR2_PACKAGE_MTD_UBIRENAME is not set +# BR2_PACKAGE_MTD_UBIRMVOL is not set +# BR2_PACKAGE_MTD_UBIRSVOL is not set +# BR2_PACKAGE_MTD_UBIUPDATEVOL is not set +# BR2_PACKAGE_MTD_UBIBLOCK is not set +# BR2_PACKAGE_MTD_TESTS is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set + +# +# ntfs-3g needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SP_OOPS_EXTRACT is not set +# BR2_PACKAGE_SQUASHFS is not set + +# +# sshfs needs a toolchain w/ wchar, threads, dynamic library +# + +# +# unionfs needs a toolchain w/ threads, dynamic library +# + +# +# xfsprogs needs a glibc or uClibc toolchain w/ threads +# + +# +# Fonts, cursors, icons, sounds and themes +# + +# +# Cursors +# +# BR2_PACKAGE_COMIX_CURSORS is not set +# BR2_PACKAGE_OBSIDIAN_CURSORS is not set + +# +# Fonts +# +# BR2_PACKAGE_BITSTREAM_VERA is not set +# BR2_PACKAGE_CANTARELL is not set +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_FONT_AWESOME is not set +# BR2_PACKAGE_GHOSTSCRIPT_FONTS is not set +# BR2_PACKAGE_INCONSOLATA is not set +# BR2_PACKAGE_LIBERATION is not set + +# +# Icons +# +# BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS is not set +# BR2_PACKAGE_HICOLOR_ICON_THEME is not set + +# +# Sounds +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Themes +# + +# +# Games +# +# BR2_PACKAGE_CHOCOLATE_DOOM is not set +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set +# BR2_PACKAGE_SL is not set + +# +# stella needs a toolchain w/ dynamic library, C++, threads, gcc >= 4.9 +# + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# + +# +# fswebcam needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_GHOSTSCRIPT is not set + +# +# glmark2 needs an OpenGL or an openGL ES and EGL backend provided by mesa3d +# +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set + +# +# libva-utils needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_PNGQUANT is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# tesseract-ocr needs a toolchain w/ threads, C++, gcc >= 4.8, dynamic library, wchar +# + +# +# Graphic libraries +# + +# +# cegui06 needs a toolchain w/ C++, threads, dynamic library +# + +# +# directfb needs a glibc or uClibc toolchain w/ C++, NPTL, gcc >= 4.5, dynamic library +# +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FBSET is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set + +# +# freerdp needs a toolchain w/ wchar, dynamic library, threads, C++ +# +# BR2_PACKAGE_IMAGEMAGICK is not set +# BR2_PACKAGE_LINUX_FUSION is not set + +# +# mesa3d needs a toolchain w/ C++, NPTL, dynamic library +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# sdl2 needs a toolchain w/ dynamic library +# + +# +# Other GUIs +# +# BR2_PACKAGE_QT is not set + +# +# Qt5 needs a toolchain w/ wchar, NPTL, C++, dynamic library +# + +# +# tekui needs a Lua interpreter and a toolchain w/ threads, dynamic library +# + +# +# weston needs udev and a toolchain w/ locale, threads, dynamic library, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_BT_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_RPI_WIFI_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_WILC1000_FIRMWARE is not set +# BR2_PACKAGE_WILINK_BT_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_ACPICA is not set + +# +# acpitool needs a toolchain w/ threads, C++, dynamic library +# +# BR2_PACKAGE_AER_INJECT is not set + +# +# avrdude needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library +# + +# +# bcache-tools needs udev /dev management +# +# BR2_PACKAGE_CC_TOOL is not set +# BR2_PACKAGE_CDRKIT is not set + +# +# cryptsetup needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_DAHDI_LINUX is not set +# BR2_PACKAGE_DAHDI_TOOLS is not set +BR2_PACKAGE_DBUS=y + +# +# dbus-c++ needs a uClibc or glibc toolchain w/ C++, threads +# +BR2_PACKAGE_DBUS_GLIB=y +# BR2_PACKAGE_DBUS_TRIGGERD is not set +# BR2_PACKAGE_DEVMEM2 is not set +BR2_PACKAGE_DFU_UTIL=y + +# +# dmraid needs a toolchain w/ threads, dynamic library +# + +# +# dt-utils needs udev /dev management +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_DUMP1090 is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_EDID_DECODE is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set + +# +# gpm mouse server needs a toolchain w/ dynamic library +# + +# +# gpsd needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HDPARM is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_HWLOC is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +BR2_PACKAGE_IOSTAT=y +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IQVLINUX is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set + +# +# lcdproc needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBUIO is not set +# BR2_PACKAGE_LINUXCONSOLETOOLS is not set +# BR2_PACKAGE_LINUX_BACKPORTS is not set + +# +# lirc-tools needs a toolchain w/ threads, dynamic library, C++ +# +BR2_PACKAGE_LM_SENSORS=y + +# +# lm-sensors tools +# +BR2_PACKAGE_LM_SENSORS_SENSORS=y +# BR2_PACKAGE_LM_SENSORS_FANCONTROL is not set +# BR2_PACKAGE_LM_SENSORS_ISADUMP is not set +# BR2_PACKAGE_LM_SENSORS_ISASET is not set +# BR2_PACKAGE_LM_SENSORS_PWMCONFIG is not set + +# +# sensors-detect needs perl +# +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSSCSI is not set +# BR2_PACKAGE_LSUIO is not set + +# +# luksmeta needs a glibc or uClibc toolchain w/ threads, dynamic library +# + +# +# lvm2 needs a toolchain w/ threads, dynamic library +# + +# +# mdadm needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MEMTOOL is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_NVME is not set + +# +# odroid-mali needs a glibc toolchain +# +# BR2_PACKAGE_ODROID_SCRIPTS is not set + +# +# ofono needs a toolchain w/ dynamic library, wchar, threads +# +# BR2_PACKAGE_OPEN2300 is not set + +# +# openipmi needs a toolchain w/ dynamic library, NPTL +# +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PDBG is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_POWERTOP is not set +# BR2_PACKAGE_PPS_TOOLS is not set +# BR2_PACKAGE_READ_EDID is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RS485CONF is not set +# BR2_PACKAGE_RTL8188EU is not set +# BR2_PACKAGE_RTL8723BS is not set +# BR2_PACKAGE_RTL8821AU is not set + +# +# sane-backends needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set + +# +# sigrok-cli needs a toolchain w/ wchar, threads, dynamic library, gcc >= 4.7 +# +# BR2_PACKAGE_SISPMCTL is not set +BR2_PACKAGE_SMARTMONTOOLS=y +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SPI_TOOLS is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_STM32FLASH is not set +BR2_PACKAGE_SYSSTAT=y + +# +# targetcli-fb depends on Python +# + +# +# ti-sgx-um needs the ti-sgx-km driver +# + +# +# ti-sgx-um needs a glibc toolchain w/ threads +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_TRIGGERHAPPY is not set +BR2_PACKAGE_UBOOT_TOOLS=y + +# +# u-boot tools FIT support needs a toolchain w/ dynamic library +# +BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE=y +# BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE is not set +BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV=y +# BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE is not set + +# +# ubus needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_UCCP420WLAN is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a glibc or uClibc toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_UHUBCTL is not set + +# +# upower needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# + +# +# usbutils needs udev /dev management and toolchain w/ threads +# +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set +# BR2_PACKAGE_XORRISO is not set +# BR2_PACKAGE_XR819_XRADIO is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_4TH is not set +# BR2_PACKAGE_ENSCRIPT is not set +BR2_PACKAGE_ERLANG_ARCH_SUPPORTS=y + +# +# erlang needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_EXECLINE is not set +# BR2_PACKAGE_FICL is not set + +# +# guile needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library +# +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set + +# +# luajit needs a toolchain w/ dynamic library +# + +# +# micropython needs a toolchain w/ threads, dynamic library +# + +# +# moarvm needs a toolchain w/ NPTL, dynamic library +# +BR2_PACKAGE_NODEJS_ARCH_SUPPORTS=y + +# +# nodejs needs a toolchain w/ C++, dynamic library, NPTL, gcc >= 4.8, wchar +# +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads, dynamic library +# + +# +# python3 needs a toolchain w/ wchar, threads, dynamic library +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# + +# +# tcl needs a toolchain w/ threads, dynamic library +# + +# +# Libraries +# + +# +# Audio/Sound +# +BR2_PACKAGE_ALSA_LIB=y +BR2_PACKAGE_ALSA_LIB_DEVDIR="/dev/snd" +BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS="all" +BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS="all" +BR2_PACKAGE_ALSA_LIB_ALOAD=y +BR2_PACKAGE_ALSA_LIB_MIXER=y +BR2_PACKAGE_ALSA_LIB_PCM=y +BR2_PACKAGE_ALSA_LIB_RAWMIDI=y +BR2_PACKAGE_ALSA_LIB_HWDEP=y +BR2_PACKAGE_ALSA_LIB_SEQ=y +BR2_PACKAGE_ALSA_LIB_ALISP=y +BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS=y + +# +# aubio needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_BCG729 is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBASPLIB is not set +# BR2_PACKAGE_LIBBROADVOICE is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDDB is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCODEC2 is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set + +# +# libebur128 needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBG7221 is not set + +# +# libgsm needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBILBC is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSIDPLAY2 is not set +# BR2_PACKAGE_LIBSILK is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOUNDTOUCH is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_MP4V2 is not set +BR2_PACKAGE_OPENAL_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPENAL is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_OPUSFILE is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SBC is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set + +# +# tinyalsa needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set + +# +# libsquish needs a toolchain w/ C++, dynamic library +# + +# +# libzip needs a toolchain w/ dynamic library +# +BR2_PACKAGE_LZO=y +# BR2_PACKAGE_MINIZIP is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_SZIP is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +BR2_PACKAGE_CA_CERTIFICATES=y +# BR2_PACKAGE_CRYPTODEV is not set + +# +# gcr needs a toolchain w/ wchar, threads, dynamic library +# + +# +# gnutls needs a toolchain w/ wchar, dynamic library +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBGPG_ERROR is not set +BR2_PACKAGE_LIBGPG_ERROR_SYSCFG="aarch64-unknown-linux-gnu" +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKCAPI is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ threads, dynamic library +# + +# +# libscrypt needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +BR2_PACKAGE_LIBSODIUM=y + +# +# libssh needs a toolchain w/ dynamic library, threads +# +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_LIBTOMCRYPT is not set + +# +# libuecc needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_MBEDTLS is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +BR2_PACKAGE_LIBOPENSSL=y +BR2_PACKAGE_LIBOPENSSL_BIN=y +# BR2_PACKAGE_LIBOPENSSL_ENGINES is not set +# BR2_PACKAGE_LIBRESSL is not set +BR2_PACKAGE_HAS_OPENSSL=y +BR2_PACKAGE_PROVIDES_OPENSSL="libopenssl" +BR2_PACKAGE_PROVIDES_HOST_OPENSSL="host-libopenssl" +# BR2_PACKAGE_RHASH is not set +# BR2_PACKAGE_TINYDTLS is not set + +# +# trousers needs a toolchain w/ threads, dynamic library +# + +# +# ustream-ssl needs a toolchain w/ dynamic library +# + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_HIREDIS is not set + +# +# kompexsqlite needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LEVELDB is not set +BR2_PACKAGE_MONGODB_ARCH_SUPPORTS=y + +# +# mongodb needs a glibc toolchain w/ wchar, threads, C++, gcc >= 4.8 +# +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set +# BR2_PACKAGE_UNIXODBC is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +BR2_PACKAGE_LIBCONFUSE=y + +# +# libfuse needs a toolchain w/ threads, dynamic library +# +BR2_PACKAGE_LIBLOCKFILE=y +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set +# BR2_PACKAGE_PHYSFS is not set + +# +# Graphics +# +# BR2_PACKAGE_ASSIMP is not set +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_ATKMM is not set +# BR2_PACKAGE_BULLET is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_CAIROMM is not set + +# +# exiv2 needs a uClibc or glibc toolchain w/ C++, wchar, dynamic library, threads +# +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set + +# +# giblib support needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_GIFLIB is not set + +# +# granite needs libgtk3 and a toolchain w/ wchar, threads +# + +# +# graphite2 needs a toolchain w/ C++, dynamic library +# + +# +# gtkmm3 needs libgtk3 and a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IJS is not set + +# +# imlib2 needs a toolchain w/ dynamic library +# + +# +# irrlicht needs X11 and an OpenGL provider +# +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +BR2_PACKAGE_JPEG_SIMD_SUPPORT=y +# BR2_PACKAGE_KMSXX is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LENSFUN is not set +# BR2_PACKAGE_LEPTONICA is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set + +# +# libepoxy needs an OpenGL and/or OpenGL EGL backend +# +# BR2_PACKAGE_LIBEXIF is not set + +# +# libfm needs X.org and a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBFM_EXTRA is not set + +# +# libfreeglut depends on X.org and needs an OpenGL backend +# + +# +# libfreeimage needs a toolchain w/ C++, dynamic library, wchar +# +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglfw depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# + +# +# libgtk3 needs an OpenGL or an OpenGL-EGL/wayland backend +# +# BR2_PACKAGE_LIBMEDIAART is not set +# BR2_PACKAGE_LIBMNG is not set +BR2_PACKAGE_LIBPNG=y +BR2_PACKAGE_LIBQRENCODE=y +BR2_PACKAGE_LIBQRENCODE_TOOLS=y +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set + +# +# libsoil needs an OpenGL backend and a toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set + +# +# libva needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_LIBVIPS is not set +# BR2_PACKAGE_MENU_CACHE is not set +# BR2_PACKAGE_OPENCV is not set + +# +# opencv3 needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_OPENJPEG is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PANGOMM is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set + +# +# wayland needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_WEBP is not set + +# +# zbar needs a toolchain w/ threads, dynamic library, C++ and headers >= 3.0 +# + +# +# zxing-cpp needs a toolchain w/ C++, dynamic library +# + +# +# Hardware handling +# + +# +# acsccid needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_C_PERIPHERY is not set + +# +# ccid needs a toolchain w/ threads, dynamic library +# + +# +# dtc needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_GNU_EFI is not set + +# +# hidapi needs udev /dev management and a toolchain w/ NPTL threads +# +# BR2_PACKAGE_LCDAPI is not set + +# +# let-me-create needs a toolchain w/ C++, threads, dynamic library +# +BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.7 +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBFTDI1 is not set +# BR2_PACKAGE_LIBGPHOTO2 is not set +# BR2_PACKAGE_LIBGPIOD is not set + +# +# libgudev needs udev /dev handling and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBHID is not set +# BR2_PACKAGE_LIBIIO is not set + +# +# libinput needs udev /dev management and a toolchain w/ locale +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set +# BR2_PACKAGE_LIBMBIM is not set +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPCIACCESS is not set +# BR2_PACKAGE_LIBPRI is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSERIALPORT is not set + +# +# libsigrok needs a toolchain w/ wchar, threads, dynamic library, gcc >= 4.7 +# + +# +# libsigrokdecode needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBSS7 is not set +BR2_PACKAGE_LIBUSB=y +# BR2_PACKAGE_LIBUSB_COMPAT is not set +# BR2_PACKAGE_LIBUSBGX is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_OWFS is not set + +# +# pcsc-lite needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set +# BR2_PACKAGE_WIRINGPI is not set + +# +# Javascript +# +# BR2_PACKAGE_ANGULARJS is not set +# BR2_PACKAGE_BOOTSTRAP is not set +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_BENEJSON is not set +# BR2_PACKAGE_CJSON is not set +BR2_PACKAGE_EXPAT=y +# BR2_PACKAGE_EZXML is not set +BR2_PACKAGE_JANSSON=y +# BR2_PACKAGE_JOSE is not set +# BR2_PACKAGE_JSMN is not set +BR2_PACKAGE_JSON_C=y +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_JSONCPP is not set +# BR2_PACKAGE_LIBBSON is not set +# BR2_PACKAGE_LIBFASTJSON is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBUCL is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +BR2_PACKAGE_LIBYAML=y +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_PUGIXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_RAPIDXML is not set +# BR2_PACKAGE_RAPTOR is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_TINYXML2 is not set +# BR2_PACKAGE_VALIJSON is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set +# BR2_PACKAGE_YAML_CPP is not set + +# +# Logging +# +# BR2_PACKAGE_EVENTLOG is not set + +# +# glog needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CPP is not set + +# +# log4cxx needs a toolchain w/ C++, threads, dynamic library +# + +# +# zlog needs a toolchain w/ threads, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_BITSTREAM is not set +# BR2_PACKAGE_KVAZAAR is not set + +# +# libaacs needs a toolchain w/ dynamic library +# + +# +# libamcodec needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_LIBASS is not set + +# +# libbdplus needs a toolchain w/ threads, dynamic library +# + +# +# libbluray needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_LIBDCADEC is not set +# BR2_PACKAGE_LIBDVBCSA is not set +# BR2_PACKAGE_LIBDVBPSI is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDCSS is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set + +# +# libhdhomerun needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS=y + +# +# libopenh264 needs a toolchain w/ C++, dynamic library, threads +# +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIBVPX is not set + +# +# libyuv needs a toolchain w/ C++, dynamic library +# +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set +# BR2_PACKAGE_X264 is not set + +# +# x265 needs a toolchain w/ C++, threads, dynamic library +# + +# +# Networking +# + +# +# agent++ needs a toolchain w/ threads, C++, dynamic library +# + +# +# alljoyn needs a toolchain w/ C++, threads, wchar and dynamic library +# + +# +# alljoyn-base needs a toolchain w/ C++, threads, wchar, dynamic library +# + +# +# alljoyn-tcl needs a toolchain w/ threads and dynamic library +# + +# +# alljoyn-tcl-base needs a toolchain w/ threads and dynamic library +# +# BR2_PACKAGE_AZMQ is not set +# BR2_PACKAGE_AZURE_IOT_SDK_C is not set +# BR2_PACKAGE_BATMAN_ADV is not set +BR2_PACKAGE_C_ARES=y +# BR2_PACKAGE_CGIC is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +BR2_PACKAGE_FREERADIUS_CLIENT=y +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_GSSDP is not set +# BR2_PACKAGE_GUPNP is not set +# BR2_PACKAGE_GUPNP_AV is not set +# BR2_PACKAGE_GUPNP_DLNA is not set +# BR2_PACKAGE_IBRCOMMON is not set +# BR2_PACKAGE_IBRDTN is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCOAP is not set +BR2_PACKAGE_LIBCURL=y +BR2_PACKAGE_CURL=y +# BR2_PACKAGE_LIBCURL_VERBOSE is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set + +# +# libhttpparser needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBLDNS is not set +# BR2_PACKAGE_LIBMAXMINDDB is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libminiupnpc needs a toolchain w/ dynamic library +# +BR2_PACKAGE_LIBMNL=y +# BR2_PACKAGE_LIBMODBUS is not set + +# +# libnatpmp needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBNDP is not set +BR2_PACKAGE_LIBNET=y +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +BR2_PACKAGE_LIBNETFILTER_CONNTRACK=y +BR2_PACKAGE_LIBNETFILTER_CTHELPER=y +BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT=y +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +BR2_PACKAGE_LIBNETFILTER_QUEUE=y +BR2_PACKAGE_LIBNFNETLINK=y +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNICE is not set +BR2_PACKAGE_LIBNL=y + +# +# libnl tools needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +BR2_PACKAGE_LIBPCAP=y +# BR2_PACKAGE_LIBPJSIP is not set + +# +# librsync needs a toolchain w/ dynamic library support +# + +# +# libshairplay needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_LIBSHOUT is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSRTP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBUPNPP is not set +# BR2_PACKAGE_LIBURIPARSER is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCK is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set + +# +# lksctp-tools needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_NANOMSG is not set +# BR2_PACKAGE_NEON is not set + +# +# norm needs a toolchain w/ C++, threads, dynamic library +# + +# +# nss-pam-ldapd needs a glibc toolchain +# +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENLDAP is not set + +# +# openmpi needs a toolchain w/ dynamic library, NPTL, wchar, C++ +# +# BR2_PACKAGE_OPENPGM is not set + +# +# openzwave needs udev and a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_ORTP is not set + +# +# paho-mqtt-c needs a toolchain w/ threads and dynamic library support +# + +# +# qpid-proton needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_RABBITMQ_C is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set + +# +# snmp++ needs a toolchain w/ threads, C++, dynamic library +# +# BR2_PACKAGE_SOFIA_SIP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# + +# +# apr needs a toolchain w/ dynamic library +# + +# +# apr-util needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_ATF is not set +# BR2_PACKAGE_BCTOOLBOX is not set +# BR2_PACKAGE_BDWGC is not set +BR2_PACKAGE_BOOST=y +BR2_PACKAGE_BOOST_LAYOUT_SYSTEM=y +# BR2_PACKAGE_BOOST_LAYOUT_TAGGED is not set +# BR2_PACKAGE_BOOST_LAYOUT_VERSIONED is not set +BR2_PACKAGE_BOOST_LAYOUT="system" +# BR2_PACKAGE_BOOST_ATOMIC is not set +# BR2_PACKAGE_BOOST_CHRONO is not set +# BR2_PACKAGE_BOOST_CONTAINER is not set +# BR2_PACKAGE_BOOST_DATE_TIME is not set +# BR2_PACKAGE_BOOST_EXCEPTION is not set +# BR2_PACKAGE_BOOST_FIBER is not set +BR2_PACKAGE_BOOST_FILESYSTEM=y +# BR2_PACKAGE_BOOST_GRAPH is not set +# BR2_PACKAGE_BOOST_GRAPH_PARALLEL is not set +# BR2_PACKAGE_BOOST_IOSTREAMS is not set +# BR2_PACKAGE_BOOST_LOCALE is not set +# BR2_PACKAGE_BOOST_LOG is not set +# BR2_PACKAGE_BOOST_MATH is not set +# BR2_PACKAGE_BOOST_METAPARSE is not set +# BR2_PACKAGE_BOOST_MPI is not set +# BR2_PACKAGE_BOOST_PROGRAM_OPTIONS is not set +# BR2_PACKAGE_BOOST_RANDOM is not set +# BR2_PACKAGE_BOOST_REGEX is not set +# BR2_PACKAGE_BOOST_SERIALIZATION is not set +# BR2_PACKAGE_BOOST_SIGNALS is not set + +# +# boost-stacktrace needs a toolchain w/ dynamic library +# +BR2_PACKAGE_BOOST_SYSTEM=y +# BR2_PACKAGE_BOOST_TEST is not set +# BR2_PACKAGE_BOOST_THREAD is not set +# BR2_PACKAGE_BOOST_TIMER is not set +# BR2_PACKAGE_BOOST_TYPE_ERASURE is not set +# BR2_PACKAGE_BOOST_WAVE is not set +# BR2_PACKAGE_CLAPACK is not set + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_CRACKLIB is not set +# BR2_PACKAGE_DAWGDIC is not set +# BR2_PACKAGE_DING_LIBS is not set +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a uClibc or glibc toolchain w/ wchar, dynamic library +# +# BR2_PACKAGE_FFTW is not set + +# +# flann needs a toolchain w/ C++, dynamic library +# +# BR2_PACKAGE_GFLAGS is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GLM is not set +BR2_PACKAGE_GMP=y +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS=y + +# +# jemalloc needs a toolchain w/ dynamic library, threads +# + +# +# lapack/blas needs a toolchain w/ fortran +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBB64 is not set +BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS=y + +# +# libbsd needs a glibc toolchain w/ threads +# +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs a glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCROCO is not set +# BR2_PACKAGE_LIBCROSSGUID is not set +# BR2_PACKAGE_LIBCSV is not set +BR2_PACKAGE_LIBDAEMON=y +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +BR2_PACKAGE_LIBEVENT=y +BR2_PACKAGE_LIBFFI=y +# BR2_PACKAGE_LIBGEE is not set +BR2_PACKAGE_LIBGLIB2=y +# BR2_PACKAGE_LIBGLOB is not set + +# +# libical needs a toolchain w/ C++, dynamic library, wchar +# +BR2_PACKAGE_LIBITE=y +# BR2_PACKAGE_LIBLINEAR is not set +# BR2_PACKAGE_LIBLOKI is not set +# BR2_PACKAGE_LIBNPTH is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBPWQUALITY is not set +BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS=y +BR2_PACKAGE_LIBSECCOMP=y +# BR2_PACKAGE_LIBSIGC is not set +BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBSPATIALINDEX is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTOMMATH is not set +# BR2_PACKAGE_LIBTPL is not set + +# +# libubox needs a toolchain w/ dynamic library +# + +# +# libuci needs a toolchain w/ dynamic library +# +BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBURCU is not set + +# +# libuv needs a toolchain w/ NPTL, dynamic library +# + +# +# linux-pam needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library +# + +# +# liquid-dsp requires a glibc or musl toolchain w/ dynamic library +# + +# +# lttng-libust needs a toolchain w/ dynamic library, wchar, threads +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MPIR is not set +BR2_PACKAGE_MSGPACK=y +# BR2_PACKAGE_MTDEV2TUIO is not set +BR2_PACKAGE_MUSL_COMPAT_HEADERS=y +BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET="ARMV8" +BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPENBLAS is not set +# BR2_PACKAGE_ORC is not set + +# +# p11-kit needs a toolchain w/ threads, dynamic library +# + +# +# poco needs a toolchain w/ wchar, NPTL, C++, dynamic library +# +BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS=y + +# +# protobuf needs a toolchain w/ C++, threads, dynamic library, host and target gcc >= 4.5 +# + +# +# protobuf-c needs a toolchain w/ C++, threads, host gcc >= 4.5 +# + +# +# qhull needs a toolchain w/ C++, dynamic library, gcc >= 4.4 +# + +# +# qlibc needs a toolchain w/ threads, wchar, dynamic library +# + +# +# riemann-c-client needs a toolchain w/ C++, threads, host gcc >= 4.5 +# +# BR2_PACKAGE_SHAPELIB is not set +# BR2_PACKAGE_SKALIBS is not set +# BR2_PACKAGE_SPHINXBASE is not set +# BR2_PACKAGE_TINYCBOR is not set +BR2_PACKAGE_TZDATA=y + +# +# Security +# + +# +# libselinux needs a glibc toolchain w/ threads, dynamic library +# + +# +# libsemanage needs a glibc toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_AUGEAS is not set +# BR2_PACKAGE_ENCHANT is not set +BR2_PACKAGE_FMT=y + +# +# icu needs a toolchain w/ C++, wchar, threads, gcc >= 4.8, host gcc >= 4.8 +# +# BR2_PACKAGE_LIBCLI is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBUNISTRING is not set +# BR2_PACKAGE_LINENOISE is not set +BR2_PACKAGE_NCURSES=y +# BR2_PACKAGE_NCURSES_WCHAR is not set +# BR2_PACKAGE_NCURSES_TARGET_PROGS is not set + +# +# newt needs a toolchain w/ wchar, dynamic library +# +BR2_PACKAGE_PCRE=y +# BR2_PACKAGE_PCRE_16 is not set +# BR2_PACKAGE_PCRE_32 is not set +BR2_PACKAGE_PCRE_UTF=y +BR2_PACKAGE_PCRE_UCP=y +# BR2_PACKAGE_PCRE2 is not set +# BR2_PACKAGE_POPT is not set +BR2_PACKAGE_READLINE=y +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Mail +# + +# +# dovecot needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set + +# +# heirloom-mailx needs a toolchain w/ dynamic library +# + +# +# libesmtp needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_CLAMAV is not set + +# +# collectd needs a toolchain w/ threads, dynamic library +# + +# +# domoticz needs lua >= 5.2 and a toolchain w/ C++, threads, wchar, dynamic library +# +# BR2_PACKAGE_EMPTY is not set + +# +# gnuradio needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set + +# +# gqrx needs qt5, gnuradio, fftw's single precision +# +# BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_LINUX_SYSCALL_SUPPORT is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET=y +# BR2_PACKAGE_QEMU is not set +# BR2_PACKAGE_QPDF is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set + +# +# taskd needs a toolchain w/ C++, wchar, dynamic library +# +# BR2_PACKAGE_XUTIL_UTIL_MACROS is not set + +# +# Networking applications +# +# BR2_PACKAGE_AIRCRACK_NG is not set + +# +# apache needs a toolchain w/ dynamic library, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARP_SCAN is not set +# BR2_PACKAGE_ARPTABLES is not set + +# +# asterisk needs a glibc toolchain w/ C++ +# +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AUTOSSH is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BABELD is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BATCTL is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bind needs a toolchain w/ threads, dynamic library +# + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, headers >= 3.4, dynamic library +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set + +# +# boinc needs a toolchain w/ dynamic library, C++, threads +# +BR2_PACKAGE_BRIDGE_UTILS=y +# BR2_PACKAGE_BWM_NG is not set + +# +# c-icap needs a toolchain w/ threads and dynamic library +# +# BR2_PACKAGE_CAN_UTILS is not set + +# +# cannelloni needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8 +# +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library +# + +# +# connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library +# + +# +# conntrack-tools needs a toolchain w/ threads, dynamic library +# + +# +# crda needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DANTE is not set +# BR2_PACKAGE_DARKHTTPD is not set +# BR2_PACKAGE_DHCP is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +BR2_PACKAGE_DNSMASQ=y +# BR2_PACKAGE_DNSMASQ_TFTP is not set +BR2_PACKAGE_DNSMASQ_DHCP=y +# BR2_PACKAGE_DNSMASQ_DNSSEC is not set +# BR2_PACKAGE_DNSMASQ_IDN is not set +# BR2_PACKAGE_DNSMASQ_CONNTRACK is not set +# BR2_PACKAGE_DRBD_UTILS is not set +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_DROPBEAR_CLIENT=y +BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS=y +BR2_PACKAGE_DROPBEAR_SMALL=y +# BR2_PACKAGE_DROPBEAR_WTMP is not set +# BR2_PACKAGE_DROPBEAR_LASTLOG is not set +BR2_PACKAGE_EBTABLES=y + +# +# ebtables needs a glibc or uClibc toolchain +# + +# +# ejabberd needs erlang, toolchain w/ C++ +# +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_ETHTOOL_PRETTY_PRINT=y + +# +# faifa needs a toolchain w/ dynamic library, threads +# + +# +# fastd needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_FCGIWRAP is not set +# BR2_PACKAGE_FLANNEL is not set +BR2_PACKAGE_FPING=y + +# +# freeswitch needs a toolchain w/ C++, dynamic library, threads, wchar +# +# BR2_PACKAGE_GESFTPSERVER is not set + +# +# gupnp-tools needs libgtk3 +# +# BR2_PACKAGE_HANS is not set + +# +# hiawatha needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IBRDTN_TOOLS is not set +# BR2_PACKAGE_IBRDTND is not set +# BR2_PACKAGE_IFENSLAVE is not set +# BR2_PACKAGE_IFPLUGD is not set +BR2_PACKAGE_IFTOP=y +# BR2_PACKAGE_IFUPDOWN is not set +BR2_PACKAGE_IFUPDOWN_SCRIPTS=y +# BR2_PACKAGE_IGD2_FOR_LINUX is not set +# BR2_PACKAGE_IGH_ETHERCAT is not set +# BR2_PACKAGE_IGMPPROXY is not set + +# +# inadyn needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_IODINE is not set +# BR2_PACKAGE_IPERF is not set +BR2_PACKAGE_IPERF3=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPSET=y +BR2_PACKAGE_IPTABLES=y +# BR2_PACKAGE_IPTABLES_BPF_NFSYNPROXY is not set + +# +# nftables compat needs a toolchain w/ wchar, dynamic library, headers >= 3.12 +# +BR2_PACKAGE_IPTRAF_NG=y +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IRSSI is not set +# BR2_PACKAGE_IW is not set + +# +# janus-gateway needs a toolchain w/ dynamic library, threads, wchar +# + +# +# keepalived needs a toolchain w/ dynamic library, headers >= 3.4 +# + +# +# kismet needs a toolchain w/ threads, C++, dynamic library +# +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LEAFNODE2 is not set +# BR2_PACKAGE_LFT is not set +# BR2_PACKAGE_LFTP is not set + +# +# lighttpd needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LINUXPTP is not set +BR2_PACKAGE_LLDPD=y +BR2_PACKAGE_LLDPD_CDP=y +BR2_PACKAGE_LLDPD_FDP=y +BR2_PACKAGE_LLDPD_EDP=y +BR2_PACKAGE_LLDPD_SONMP=y +BR2_PACKAGE_LLDPD_LLDPMED=y +BR2_PACKAGE_LLDPD_DOT1=y +BR2_PACKAGE_LLDPD_DOT3=y +BR2_PACKAGE_LLDPD_CUSTOM_TLV=y + +# +# lrzsz needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ dynamic library, threads, wchar +# +BR2_PACKAGE_MINISSDPD=y + +# +# mjpg-streamer needs a toolchain w/ threads, headers >= 3.0, dynamic library +# + +# +# modemmanager needs udev /dev management and a toolchain w/ wchar, threads +# + +# +# mongrel2 needs a uClibc or glibc toolchain w/ C++, threads, dynamic library +# + +# +# monkey needs an toolchain w/ threads, dynamic library +# + +# +# mosh needs a toolchain w/ C++, threads, dynamic library, wchar, host and target gcc >= 4.5 +# + +# +# mosquitto needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set + +# +# netatalk needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_NETCAT is not set + +# +# netcat-openbsd needs a glibc toolchain w/ threads +# +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set +# BR2_PACKAGE_NET_TOOLS is not set + +# +# NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.7, dynamic library +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGINX is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NLOAD is not set +BR2_PACKAGE_NMAP=y +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +BR2_PACKAGE_ODHCP6C=y +# BR2_PACKAGE_ODHCPLOC is not set + +# +# olsr needs a uClibc or glibc toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_OPEN_PLC_UTILS is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +BR2_PACKAGE_OPENRESOLV=y +# BR2_PACKAGE_OPENSSH is not set + +# +# openswan needs a uClibc or glibc toolchain w/ headers >= 3.4 +# +BR2_PACKAGE_OPENVPN=y +BR2_PACKAGE_OPENVPN_LZ4=y +BR2_PACKAGE_OPENVPN_LZO=y +# BR2_PACKAGE_OPENVPN_SMALL is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHYTOOL is not set + +# +# pound needs a toolchain w/ dynamic library, threads +# + +# +# pppd needs a uClibc or glibc toolchain w/ dynamic library +# +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PRIVOXY is not set +# BR2_PACKAGE_PROFTPD is not set + +# +# prosody needs the lua interpreter +# + +# +# proxychains-ng needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_PURE_FTPD is not set +# BR2_PACKAGE_PUTTY is not set +# BR2_PACKAGE_QUAGGA is not set + +# +# rabbitmq-server needs erlang +# +# BR2_PACKAGE_RADVD is not set + +# +# rp-pppoe needs a uClibc or glibc toolchain w/ dynamic library +# +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_S6_DNS is not set +# BR2_PACKAGE_S6_NETWORKING is not set + +# +# samba4 needs a uClibc or glibc toolchain w/ wchar, dynamic library, NPTL +# + +# +# sconeserver needs a toolchain with dynamic library, C++, NPTL +# +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SHAIRPORT_SYNC is not set + +# +# shellinabox needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SNGREP is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SOFTETHER is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_SSLH is not set + +# +# strongswan needs a toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_STUNNEL is not set +BR2_PACKAGE_TCPDUMP=y +# BR2_PACKAGE_TCPDUMP_SMB is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_TFTPD is not set +# BR2_PACKAGE_THTTPD is not set + +# +# tinc needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TOR is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TUNCTL is not set + +# +# tvheadend needs a toolchain w/ NPTL, headers >= 3.2, dynamic library +# +# BR2_PACKAGE_UDPCAST is not set + +# +# uhttpd needs a toolchain w/ dynamic library +# + +# +# ulogd needs a toolchain w/ dynamic library +# + +# +# ushare needs a toolchain w/ threads, dynamic library +# + +# +# ussp-push needs a toolchain w/ wchar, threads, dynamic library +# + +# +# vde2 needs a toolchain w/ dynamic library +# + +# +# vdr needs a glibc or uClibc toolchain w/ C++, dynamic library, NPTL, wchar, headers >= 3.9 +# +# BR2_PACKAGE_VNSTAT is not set + +# +# vpnc needs a toolchain w/ wchar, dynamic library +# +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WAVEMON is not set +# BR2_PACKAGE_WGET is not set +# BR2_PACKAGE_WHOIS is not set +BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y +BR2_PACKAGE_WIREGUARD_TOOLS=y +# BR2_PACKAGE_WIRELESS_REGDB is not set +BR2_PACKAGE_WIRELESS_TOOLS=y +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WPAN_TOOLS is not set +# BR2_PACKAGE_XINETD is not set +BR2_PACKAGE_XL2TP=y + +# +# xtables-addons needs a toolchain w/ dynamic library, threads +# + +# +# znc needs a toolchain w/ C++, dynamic library, gcc >= 4.7 +# + +# +# Package managers +# + +# +# ------------------------------------------------------- +# + +# +# Please note: +# + +# +# - Buildroot does *not* generate binary packages, +# + +# +# - Buildroot does *not* install any package database. +# + +# +# * +# + +# +# It is up to you to provide those by yourself if you +# + +# +# want to use any of those package managers. +# + +# +# * +# + +# +# See the manual: +# + +# +# http://buildroot.org/manual.html#faq-no-binary-packages +# + +# +# ------------------------------------------------------- +# +# BR2_PACKAGE_OPKG is not set + +# +# rpm needs a toolchain w/ dynamic library and threads +# + +# +# Real-Time +# + +# +# Security +# + +# +# checkpolicy needs a glibc toolchain w/ threads, dynamic library +# + +# +# paxtest needs a glibc toolchain +# + +# +# policycoreutils needs a glibc toolchain w/ threads, dynamic library +# + +# +# refpolicy needs a glibc toolchain w/ threads, dynamic library +# + +# +# restorecond needs a toolchain w/ wchar, threads, dynamic library +# + +# +# selinux-python packages needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SEMODULE_UTILS is not set + +# +# setools needs a glibc toolchain w/ threads, C++, wchar, dynamic library +# + +# +# Shell and utilities +# + +# +# Shells +# +# BR2_PACKAGE_BASH is not set +# BR2_PACKAGE_DASH is not set +# BR2_PACKAGE_MKSH is not set +# BR2_PACKAGE_ZSH is not set + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_EASY_RSA is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set + +# +# gnupg2 needs a toolchain w/ threads and dynamic library support +# +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PDMENU is not set +# BR2_PACKAGE_PINENTRY is not set + +# +# ranger needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SCREEN is not set +BR2_PACKAGE_SUDO=y + +# +# time needs a toolchain w/ dynamic library +# +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_WHICH is not set +# BR2_PACKAGE_XMLSTARLET is not set +# BR2_PACKAGE_XXHASH is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ANDROID_TOOLS is not set +BR2_PACKAGE_ATOP=y +# BR2_PACKAGE_ATTR is not set +BR2_PACKAGE_AUDIT_ARCH_SUPPORTS=y + +# +# audit needs a uClibc or glibc toolchain w/ threads, dynamic library +# +# BR2_PACKAGE_BOOTUTILS is not set +BR2_PACKAGE_CGROUPFS_MOUNT=y + +# +# circus needs Python and a toolchain w/ C++, threads +# +# BR2_PACKAGE_COREUTILS is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_DAEMON is not set + +# +# dc3dd needs a glibc or uClibc toolchain w/ threads +# +BR2_PACKAGE_DCRON=y +# BR2_PACKAGE_DDRESCUE is not set +# BR2_PACKAGE_DEBIANUTILS is not set +# BR2_PACKAGE_DOCKER_CONTAINERD is not set +# BR2_PACKAGE_DOCKER_ENGINE is not set + +# +# efibootmgr needs a glibc or uClibc toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9 +# +BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS=y + +# +# efivar needs a glibc or uClibc toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9 +# +# BR2_PACKAGE_EMLOG is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_GETENT is not set +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_INITSCRIPTS=y + +# +# iotop depends on python or python3 +# +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_IRQBALANCE is not set + +# +# keyutils needs a toolchain w/ dynamic library +# + +# +# kmod needs a toolchain w/ dynamic library +# + +# +# kvmtool needs a glibc or musl toolchain w/ dynamic library +# + +# +# lxc needs a toolchain w/ threads, headers >= 3.0, dynamic library +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PROCPS_NG is not set +# BR2_PACKAGE_PROCRANK_LINUX is not set +# BR2_PACKAGE_PSMISC is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_RAUC is not set + +# +# rsyslog needs a uClibc or glibc toolchain w/ threads, dynamic library +# +BR2_PACKAGE_RUNC=y +# BR2_PACKAGE_S6 is not set +# BR2_PACKAGE_S6_LINUX_INIT is not set +# BR2_PACKAGE_S6_LINUX_UTILS is not set +# BR2_PACKAGE_S6_PORTABLE_UTILS is not set +# BR2_PACKAGE_S6_RC is not set +# BR2_PACKAGE_SCRUB is not set +# BR2_PACKAGE_SCRYPT is not set + +# +# smack needs a toolchain w/ dynamic library, threads, headers >= 3.0 +# +# BR2_PACKAGE_START_STOP_DAEMON is not set + +# +# supervisor needs the python interpreter +# +# BR2_PACKAGE_SWUPDATE is not set +# BR2_PACKAGE_SYSKLOGD is not set +# BR2_PACKAGE_SYSLOG_NG is not set +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_TAR is not set + +# +# tpm-tools needs a toolchain w/ threads, dynamic library +# + +# +# unscd needs a glibc toolchain +# +BR2_PACKAGE_UTIL_LINUX=y +BR2_PACKAGE_UTIL_LINUX_LIBBLKID=y +BR2_PACKAGE_UTIL_LINUX_LIBFDISK=y +BR2_PACKAGE_UTIL_LINUX_LIBMOUNT=y +BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS=y +BR2_PACKAGE_UTIL_LINUX_LIBUUID=y +BR2_PACKAGE_UTIL_LINUX_BINARIES=y +# BR2_PACKAGE_UTIL_LINUX_AGETTY is not set +# BR2_PACKAGE_UTIL_LINUX_BFS is not set +# BR2_PACKAGE_UTIL_LINUX_CAL is not set + +# +# chfn/chsh needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_UTIL_LINUX_CHMEM is not set +# BR2_PACKAGE_UTIL_LINUX_CRAMFS is not set +# BR2_PACKAGE_UTIL_LINUX_EJECT is not set +# BR2_PACKAGE_UTIL_LINUX_FALLOCATE is not set +# BR2_PACKAGE_UTIL_LINUX_FDFORMAT is not set +# BR2_PACKAGE_UTIL_LINUX_FSCK is not set +# BR2_PACKAGE_UTIL_LINUX_HWCLOCK is not set +# BR2_PACKAGE_UTIL_LINUX_IPCRM is not set +# BR2_PACKAGE_UTIL_LINUX_IPCS is not set +# BR2_PACKAGE_UTIL_LINUX_KILL is not set +# BR2_PACKAGE_UTIL_LINUX_LAST is not set +# BR2_PACKAGE_UTIL_LINUX_LINE is not set +# BR2_PACKAGE_UTIL_LINUX_LOGGER is not set + +# +# login needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_UTIL_LINUX_LOSETUP is not set +# BR2_PACKAGE_UTIL_LINUX_LSLOGINS is not set +# BR2_PACKAGE_UTIL_LINUX_LSMEM is not set +# BR2_PACKAGE_UTIL_LINUX_MESG is not set +# BR2_PACKAGE_UTIL_LINUX_MINIX is not set +# BR2_PACKAGE_UTIL_LINUX_MORE is not set +BR2_PACKAGE_UTIL_LINUX_MOUNT=y +BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT=y +# BR2_PACKAGE_UTIL_LINUX_NEWGRP is not set +# BR2_PACKAGE_UTIL_LINUX_NOLOGIN is not set +BR2_PACKAGE_UTIL_LINUX_NSENTER=y +# BR2_PACKAGE_UTIL_LINUX_PG is not set +# BR2_PACKAGE_UTIL_LINUX_PARTX is not set +BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT=y +# BR2_PACKAGE_UTIL_LINUX_RAW is not set +# BR2_PACKAGE_UTIL_LINUX_RENAME is not set +# BR2_PACKAGE_UTIL_LINUX_RFKILL is not set + +# +# runuser needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS is not set +# BR2_PACKAGE_UTIL_LINUX_SETPRIV is not set +# BR2_PACKAGE_UTIL_LINUX_SETTERM is not set + +# +# su needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_UTIL_LINUX_SULOGIN is not set +# BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT is not set +# BR2_PACKAGE_UTIL_LINUX_TUNELP is not set +# BR2_PACKAGE_UTIL_LINUX_UL is not set +# BR2_PACKAGE_UTIL_LINUX_UNSHARE is not set +# BR2_PACKAGE_UTIL_LINUX_UTMPDUMP is not set +# BR2_PACKAGE_UTIL_LINUX_UUIDD is not set +# BR2_PACKAGE_UTIL_LINUX_VIPW is not set +# BR2_PACKAGE_UTIL_LINUX_WALL is not set +# BR2_PACKAGE_UTIL_LINUX_WDCTL is not set +# BR2_PACKAGE_UTIL_LINUX_WRITE is not set +# BR2_PACKAGE_UTIL_LINUX_ZRAMCTL is not set +# BR2_PACKAGE_XEN is not set +BR2_PACKAGE_XVISOR_ARCH_SUPPORTS=y +# BR2_PACKAGE_XVISOR is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_LESS is not set +# BR2_PACKAGE_MC is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set +# BR2_PACKAGE_VIM is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_AXFS is not set +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set +# BR2_TARGET_ROOTFS_INITRAMFS is not set +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +BR2_TARGET_ROOTFS_SQUASHFS=y +BR2_TARGET_ROOTFS_SQUASHFS4_GZIP=y +# BR2_TARGET_ROOTFS_SQUASHFS4_LZ4 is not set +# BR2_TARGET_ROOTFS_SQUASHFS4_LZMA is not set +# BR2_TARGET_ROOTFS_SQUASHFS4_LZO is not set +# BR2_TARGET_ROOTFS_SQUASHFS4_XZ is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_BOOT_WRAPPER_AARCH64 is not set +# BR2_TARGET_UBOOT is not set +# BR2_TARGET_VEXPRESS_FIRMWARE is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_AESPIPE is not set +# BR2_PACKAGE_HOST_ANDROID_TOOLS is not set +# BR2_PACKAGE_HOST_CHECKPOLICY is not set +# BR2_PACKAGE_HOST_CMAKE is not set +# BR2_PACKAGE_HOST_CRAMFS is not set +# BR2_PACKAGE_HOST_CRYPTSETUP is not set +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +BR2_PACKAGE_HOST_DTC=y +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_FAKETIME is not set +# BR2_PACKAGE_HOST_FWUP is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS=y +BR2_PACKAGE_HOST_GO_BOOTSTRAP_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_GPTFDISK is not set +BR2_PACKAGE_HOST_JQ=y +# BR2_PACKAGE_HOST_JSMIN is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_LTTNG_BABELTRACE is not set + +# +# mfgtools needs host gcc >= 4.8 +# +BR2_PACKAGE_HOST_MKPASSWD=y +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_OPKG_UTILS is not set +# BR2_PACKAGE_HOST_PARTED is not set +BR2_PACKAGE_HOST_PATCHELF=y +# BR2_PACKAGE_HOST_PKGCONF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_PYTHON_LXML is not set +# BR2_PACKAGE_HOST_PYTHON_SIX is not set +# BR2_PACKAGE_HOST_QEMU is not set +# BR2_PACKAGE_HOST_RAUC is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y +# BR2_PACKAGE_HOST_UTIL_LINUX is not set +# BR2_PACKAGE_HOST_VBOOT_UTILS is not set +# BR2_PACKAGE_HOST_XORRISO is not set +# BR2_PACKAGE_HOST_ZIP is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2017.11 +# +# BR2_PACKAGE_RFKILL is not set +# BR2_PACKAGE_UTIL_LINUX_RESET is not set +# BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW is not set +# BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND is not set +# BR2_PACKAGE_SEPOLGEN is not set +# BR2_PACKAGE_OPENOBEX_BLUEZ is not set +# BR2_PACKAGE_OPENOBEX_LIBUSB is not set +# BR2_PACKAGE_OPENOBEX_APPS is not set +# BR2_PACKAGE_OPENOBEX_SYSLOG is not set +# BR2_PACKAGE_OPENOBEX_DUMP is not set +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS is not set + +# +# Legacy options removed in 2017.08 +# +# BR2_TARGET_GRUB is not set +# BR2_PACKAGE_SIMICSFS is not set +# BR2_BINUTILS_VERSION_2_26_X is not set +BR2_XTENSA_OVERLAY_DIR="" +BR2_XTENSA_CUSTOM_NAME="" +# BR2_PACKAGE_HOST_MKE2IMG is not set +BR2_TARGET_ROOTFS_EXT2_BLOCKS=0 +BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES=0 +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC is not set +# BR2_STRIP_none is not set +# BR2_PACKAGE_BEECRYPT_CPP is not set +# BR2_PACKAGE_SPICE_CLIENT is not set +# BR2_PACKAGE_SPICE_GUI is not set +# BR2_PACKAGE_SPICE_TUNNEL is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH is not set +# BR2_PACKAGE_INPUT_TOOLS_JSCAL is not set +# BR2_PACKAGE_INPUT_TOOLS_JSTEST is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 is not set +# BR2_GCC_VERSION_4_8_X is not set + +# +# Legacy options removed in 2017.05 +# +# BR2_PACKAGE_SUNXI_MALI_R2P4 is not set +# BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT is not set +# BR2_PACKAGE_NODEJS_MODULES_EXPRESS is not set +# BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL is not set +# BR2_PACKAGE_OPENOCD_FT2XXX is not set +# BR2_PACKAGE_KODI_RTMPDUMP is not set +# BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_BINUTILS_VERSION_2_25_X is not set +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS=0 +# BR2_PACKAGE_SYSTEMD_KDBUS is not set +# BR2_PACKAGE_POLARSSL is not set +# BR2_NBD_CLIENT is not set +# BR2_NBD_SERVER is not set +# BR2_PACKAGE_GMOCK is not set +# BR2_KERNEL_HEADERS_4_8 is not set +# BR2_KERNEL_HEADERS_3_18 is not set +# BR2_GLIBC_VERSION_2_22 is not set + +# +# Legacy options removed in 2017.02 +# +# BR2_PACKAGE_PERL_DB_FILE is not set +# BR2_KERNEL_HEADERS_4_7 is not set +# BR2_KERNEL_HEADERS_4_6 is not set +# BR2_KERNEL_HEADERS_4_5 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +# BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +# BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_GDB_VERSION_7_9 is not set + +# +# Legacy options removed in 2016.11 +# +# BR2_PACKAGE_PHP_SAPI_CLI_CGI is not set +# BR2_PACKAGE_PHP_SAPI_CLI_FPM is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_WEBKITGTK24 is not set +# BR2_PACKAGE_TORSMO is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_KERNEL_HEADERS_4_3 is not set +# BR2_KERNEL_HEADERS_4_2 is not set +# BR2_PACKAGE_KODI_ADDON_XVDR is not set +# BR2_PACKAGE_IPKG is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_BINUTILS_VERSION_2_24_X is not set +# BR2_PACKAGE_WESTON_RPI is not set +# BR2_LINUX_KERNEL_TOOL_CPUPOWER is not set +# BR2_LINUX_KERNEL_TOOL_PERF is not set +# BR2_LINUX_KERNEL_TOOL_SELFTESTS is not set +# BR2_GCC_VERSION_4_8_ARC is not set +# BR2_KERNEL_HEADERS_4_0 is not set +# BR2_KERNEL_HEADERS_3_19 is not set +# BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS is not set +# BR2_PACKAGE_ELEMENTARY is not set +# BR2_LINUX_KERNEL_CUSTOM_LOCAL is not set + +# +# Legacy options removed in 2016.08 +# +# BR2_PACKAGE_EFL_JP2K is not set +# BR2_PACKAGE_SYSTEMD_COMPAT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER is not set +# BR2_PACKAGE_LIBFSLVPUWRAP is not set +# BR2_PACKAGE_LIBFSLPARSER is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT is not set +# BR2_PTHREADS_OLD is not set +# BR2_BINUTILS_VERSION_2_23_X is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_GDB_VERSION_7_8 is not set + +# +# Legacy options removed in 2016.05 +# +# BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL is not set +# BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123 is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2 is not set +# BR2_x86_i386 is not set +# BR2_PACKAGE_QT5WEBKIT_EXAMPLES is not set +# BR2_PACKAGE_QT5QUICK1 is not set +BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR="" +# BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID is not set +# BR2_KERNEL_HEADERS_3_17 is not set +# BR2_GDB_VERSION_7_7 is not set +# BR2_PACKAGE_FOOMATIC_FILTERS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_KODI_WAVPACK is not set +# BR2_PACKAGE_KODI_RSXS is not set +# BR2_PACKAGE_KODI_GOOM is not set +# BR2_PACKAGE_SYSTEMD_ALL_EXTRAS is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_PACKAGE_SQLITE_READLINE is not set + +# +# Legacy options removed in 2016.02 +# +# BR2_PACKAGE_DOVECOT_BZIP2 is not set +# BR2_PACKAGE_DOVECOT_ZLIB is not set +# BR2_PACKAGE_E2FSPROGS_FINDFS is not set +# BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL is not set +# BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE is not set +# BR2_PACKAGE_OPENPOWERLINK_LIBPCAP is not set +# BR2_LINUX_KERNEL_SAME_AS_HEADERS is not set +# BR2_PACKAGE_CUPS_PDFTOPS is not set +# BR2_KERNEL_HEADERS_3_16 is not set +# BR2_PACKAGE_PYTHON_PYXML is not set +# BR2_ENABLE_SSP is not set +# BR2_PACKAGE_DIRECTFB_CLE266 is not set +# BR2_PACKAGE_DIRECTFB_UNICHROME is not set +# BR2_PACKAGE_LIBELEMENTARY is not set +# BR2_PACKAGE_LIBEINA is not set +# BR2_PACKAGE_LIBEET is not set +# BR2_PACKAGE_LIBEVAS is not set +# BR2_PACKAGE_LIBECORE is not set +# BR2_PACKAGE_LIBEDBUS is not set +# BR2_PACKAGE_LIBEFREET is not set +# BR2_PACKAGE_LIBEIO is not set +# BR2_PACKAGE_LIBEMBRYO is not set +# BR2_PACKAGE_LIBEDJE is not set +# BR2_PACKAGE_LIBETHUMB is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_BR2_PACKAGE_NODEJS_0_10_X is not set +# BR2_BR2_PACKAGE_NODEJS_0_12_X is not set +# BR2_BR2_PACKAGE_NODEJS_4_X is not set + +# +# Legacy options removed in 2015.11 +# +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_SCHIFRA is not set +# BR2_PACKAGE_ZXING is not set +# BR2_PACKAGE_BLACKBOX is not set +# BR2_KERNEL_HEADERS_3_0 is not set +# BR2_KERNEL_HEADERS_3_11 is not set +# BR2_KERNEL_HEADERS_3_13 is not set +# BR2_KERNEL_HEADERS_3_15 is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_SAWMAN is not set +# BR2_PACKAGE_DIVINE is not set + +# +# Legacy options removed in 2015.08 +# +# BR2_PACKAGE_KODI_PVR_ADDONS is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +# BR2_BINUTILS_VERSION_2_24 is not set +# BR2_BINUTILS_VERSION_2_25 is not set +# BR2_PACKAGE_PERF is not set +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_PACKAGE_GPU_VIV_BIN_MX6Q is not set +# BR2_TARGET_UBOOT_NETWORK is not set + +# +# Legacy options removed in 2015.05 +# +# BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K is not set +# BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K is not set +# BR2_PACKAGE_MONO_20 is not set +# BR2_PACKAGE_MONO_40 is not set +# BR2_PACKAGE_MONO_45 is not set +# BR2_CIVETWEB_WITH_LUA is not set +# BR2_PACKAGE_TIFF_TIFF2PDF is not set +# BR2_PACKAGE_TIFF_TIFFCP is not set +# BR2_LINUX_KERNEL_EXT_RTAI_PATCH is not set +# BR2_TARGET_GENERIC_PASSWD_DES is not set +# BR2_PACKAGE_GTK2_THEME_HICOLOR is not set +# BR2_PACKAGE_VALGRIND_PTRCHECK is not set + +# +# Legacy options removed in 2015.02 +# +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_WDCTL is not set +# BR2_PACKAGE_UTIL_LINUX_ARCH is not set +# BR2_PACKAGE_UTIL_LINUX_DDATE is not set +# BR2_PACKAGE_RPM_BZIP2_PAYLOADS is not set +# BR2_PACKAGE_RPM_XZ_PAYLOADS is not set +# BR2_PACKAGE_M4 is not set +# BR2_PACKAGE_FLEX_BINARY is not set +# BR2_PACKAGE_BISON is not set +# BR2_PACKAGE_GOB2 is not set +# BR2_PACKAGE_DISTCC is not set +# BR2_PACKAGE_HASERL_VERSION_0_8_X is not set +# BR2_PACKAGE_STRONGSWAN_TOOLS is not set +# BR2_PACKAGE_XBMC_ADDON_XVDR is not set +# BR2_PACKAGE_XBMC_PVR_ADDONS is not set +# BR2_PACKAGE_XBMC is not set +# BR2_PACKAGE_XBMC_ALSA_LIB is not set +# BR2_PACKAGE_XBMC_AVAHI is not set +# BR2_PACKAGE_XBMC_DBUS is not set +# BR2_PACKAGE_XBMC_LIBBLURAY is not set +# BR2_PACKAGE_XBMC_GOOM is not set +# BR2_PACKAGE_XBMC_RSXS is not set +# BR2_PACKAGE_XBMC_LIBCEC is not set +# BR2_PACKAGE_XBMC_LIBMICROHTTPD is not set +# BR2_PACKAGE_XBMC_LIBNFS is not set +# BR2_PACKAGE_XBMC_RTMPDUMP is not set +# BR2_PACKAGE_XBMC_LIBSHAIRPLAY is not set +# BR2_PACKAGE_XBMC_LIBSMBCLIENT is not set +# BR2_PACKAGE_XBMC_LIBTHEORA is not set +# BR2_PACKAGE_XBMC_LIBUSB is not set +# BR2_PACKAGE_XBMC_LIBVA is not set +# BR2_PACKAGE_XBMC_WAVPACK is not set +# BR2_PREFER_STATIC_LIB is not set + +# +# Legacy options removed in 2014.11 +# +# BR2_x86_generic is not set +# BR2_GCC_VERSION_4_4_X is not set +# BR2_sparc_sparchfleon is not set +# BR2_sparc_sparchfleonv8 is not set +# BR2_sparc_sparcsfleon is not set +# BR2_sparc_sparcsfleonv8 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/src/bases/udm-base-2.4/kernel-config b/src/bases/udm-base-2.4/kernel-config new file mode 100644 index 0000000..556a550 --- /dev/null +++ b/src/bases/udm-base-2.4/kernel-config @@ -0,0 +1,4194 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm64 4.19.152 Kernel Configuration +# + +# +# Compiler: aarch64-linux-gnu-gcc (Debian 6.3.0-18) 6.3.0 20170516 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=60300 +CONFIG_CLANG_VERSION=0 +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_USELIB=y +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_TASKSTATS=y +# CONFIG_TASK_DELAY_ACCT is not set +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_BUILD_BIN2C=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_GENERIC_SCHED_CLOCK=y +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_SWAP_ENABLED=y +CONFIG_MEMCG_KMEM=y +# CONFIG_BLK_CGROUP is not set +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_CFS_BANDWIDTH is not set +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_CGROUP_PIDS=y +# CONFIG_CGROUP_RDMA is not set +CONFIG_CGROUP_FREEZER=y +# CONFIG_CGROUP_HUGETLB is not set +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +# CONFIG_USER_NS is not set +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_BPF=y +# CONFIG_EXPERT is not set +CONFIG_MULTIUSER=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_PRINTK_NMI=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_BPF_SYSCALL is not set +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_RSEQ=y +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +# CONFIG_PERF_EVENTS is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +CONFIG_COMPAT_BRK=y +# CONFIG_SLAB is not set +CONFIG_SLUB=y +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SYSTEM_DATA_VERIFICATION=y +# CONFIG_PROFILING is not set +CONFIG_ARM64=y +CONFIG_64BIT=y +CONFIG_MMU=y +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_ARM64_CONT_SHIFT=4 +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_BITS_MAX=24 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ZONE_DMA32=y +CONFIG_HAVE_GENERIC_GUP=y +CONFIG_SMP=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=3 +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_PROC_KCORE_TEXT=y + +# +# Platform selection +# +# CONFIG_ARCH_ACTIONS is not set +# CONFIG_ARCH_SUNXI is not set +CONFIG_ARCH_ALPINE=y +# CONFIG_ARCH_BCM2835 is not set +# CONFIG_ARCH_BCM_IPROC is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_BRCMSTB is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_K3 is not set +# CONFIG_ARCH_LAYERSCAPE is not set +# CONFIG_ARCH_LG1K is not set +# CONFIG_ARCH_HISI is not set +# CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_REALTEK is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_SEATTLE is not set +# CONFIG_ARCH_SYNQUACER is not set +# CONFIG_ARCH_RENESAS is not set +# CONFIG_ARCH_STRATIX10 is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_SPRD is not set +# CONFIG_ARCH_THUNDER is not set +# CONFIG_ARCH_THUNDER2 is not set +# CONFIG_ARCH_UNIPHIER is not set +CONFIG_ARCH_VEXPRESS=y +# CONFIG_ARCH_XGENE is not set +# CONFIG_ARCH_ZX is not set +# CONFIG_ARCH_ZYNQMP is not set + +# +# Bus support +# +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_SYSCALL=y +# CONFIG_PCIEPORTBUS is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_PF_STUB is not set +CONFIG_PCI_ATS=y +CONFIG_PCI_IOV=y +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +CONFIG_PCI_LABEL=y +# CONFIG_HOTPLUG_PCI is not set + +# +# PCI controller drivers +# + +# +# Cadence PCIe controllers support +# +# CONFIG_PCIE_CADENCE_HOST is not set +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +# CONFIG_PCIE_XILINX is not set +# CONFIG_PCI_XGENE is not set +# CONFIG_PCI_HOST_THUNDER_PEM is not set +# CONFIG_PCI_HOST_THUNDER_ECAM is not set +CONFIG_PCI_INTERNAL_ALPINE=y +CONFIG_PCI_EXTERNAL_ALPINE=y +CONFIG_PCI_EXTERNAL_ERR_ALPINE=y + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT_HOST is not set +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_KIRIN is not set + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set + +# +# Kernel Features +# + +# +# ARM errata workarounds via the alternatives framework +# +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_819472=y +CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_ERRATUM_1024718=y +CONFIG_ARM64_ERRATUM_1463225=y +CONFIG_ARM64_ERRATUM_1542419=y +CONFIG_CAVIUM_ERRATUM_22375=y +CONFIG_CAVIUM_ERRATUM_23154=y +CONFIG_CAVIUM_ERRATUM_27456=y +CONFIG_CAVIUM_ERRATUM_30115=y +CONFIG_QCOM_FALKOR_ERRATUM_1003=y +CONFIG_QCOM_FALKOR_ERRATUM_1009=y +CONFIG_QCOM_QDF2400_ERRATUM_0065=y +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +CONFIG_HISILICON_ERRATUM_161600802=y +CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_16K_PAGES is not set +# CONFIG_ARM64_64K_PAGES is not set +CONFIG_ARM64_VA_BITS_39=y +# CONFIG_ARM64_VA_BITS_48 is not set +CONFIG_ARM64_VA_BITS=39 +CONFIG_ARM64_PA_BITS_48=y +CONFIG_ARM64_PA_BITS=48 +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_SCHED_MC is not set +# CONFIG_SCHED_SMT is not set +CONFIG_NR_CPUS=4 +CONFIG_HOTPLUG_CPU=y +# CONFIG_NUMA is not set +CONFIG_HOLES_IN_ZONE=y +CONFIG_HZ_100=y +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=100 +CONFIG_SCHED_HRTICK=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_SYS_SUPPORTS_HUGETLBFS=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_SECCOMP=y +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +# CONFIG_KEXEC is not set +CONFIG_CRASH_DUMP=y +# CONFIG_XEN is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_HARDEN_BRANCH_PREDICTOR=y +CONFIG_HARDEN_EL2_VECTORS=y +CONFIG_ARM64_SSBD=y +# CONFIG_ARM64_SW_TTBR0_PAN is not set + +# +# ARMv8.1 architectural features +# +CONFIG_ARM64_HW_AFDBM=y +# CONFIG_ARM64_PAN is not set +# CONFIG_ARM64_LSE_ATOMICS is not set +# CONFIG_ARM64_VHE is not set + +# +# ARMv8.2 architectural features +# +CONFIG_ARM64_UAO=y +# CONFIG_ARM64_PMEM is not set +CONFIG_ARM64_RAS_EXTN=y +CONFIG_ARM64_SVE=y +CONFIG_ARM64_MODULE_PLTS=y +# CONFIG_RANDOMIZE_BASE is not set + +# +# Boot options +# +CONFIG_CMDLINE="" +# CONFIG_CMDLINE_FORCE is not set +CONFIG_EFI_STUB=y +CONFIG_EFI=y +CONFIG_DMI=y +# CONFIG_COMPAT is not set + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_CPU_PM=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y + +# +# CPU Power Management +# + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_DT_IDLE_STATES=y + +# +# ARM CPU Idle Drivers +# +CONFIG_ARM_CPUIDLE=y + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set + +# +# Firmware Drivers +# +CONFIG_ARM_PSCI_FW=y +# CONFIG_ARM_PSCI_CHECKER is not set +# CONFIG_ARM_SDE_INTERFACE is not set +CONFIG_DMIID=y +# CONFIG_DMI_SYSFS is not set +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_HAVE_ARM_SMCCC=y +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# EFI (Extensible Firmware Interface) Support +# +# CONFIG_EFI_VARS is not set +CONFIG_EFI_ESRT=y +CONFIG_EFI_PARAMS_FROM_FDT=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_ARMSTUB=y +# CONFIG_EFI_ARMSTUB_DTB_LOADER is not set +# CONFIG_EFI_CAPSULE_LOADER is not set +# CONFIG_EFI_TEST is not set +# CONFIG_RESET_ATTACK_MITIGATION is not set + +# +# Tegra firmware driver +# +CONFIG_ARCH_SUPPORTS_ACPI=y +# CONFIG_ACPI is not set +# CONFIG_VIRTUALIZATION is not set +# CONFIG_ARM64_CRYPTO is not set + +# +# General architecture-dependent options +# +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_RCU_TABLE_FREE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_CC_HAS_STACKPROTECTOR_NONE=y +CONFIG_STACKPROTECTOR=y +# CONFIG_STACKPROTECTOR_STRONG is not set +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_CLONE_BACKWARDS=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_REFCOUNT_FULL=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_PLUGIN_HOSTCC="" +CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_BLOCK=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_CMDLINE_PARSER is not set +# CONFIG_BLK_WBT is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_BLK_MQ_PCI=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +# CONFIG_MQ_IOSCHED_DEADLINE is not set +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_IOSCHED_BFQ is not set +CONFIG_PADATA=y +CONFIG_ASN1=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK=y +CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_READ_LOCK=y +CONFIG_ARCH_INLINE_READ_LOCK_BH=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_READ_UNLOCK=y +CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_WRITE_LOCK=y +CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_SPIN_TRYLOCK=y +CONFIG_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_INLINE_SPIN_LOCK=y +CONFIG_INLINE_SPIN_LOCK_BH=y +CONFIG_INLINE_SPIN_LOCK_IRQ=y +CONFIG_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_INLINE_SPIN_UNLOCK_BH=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_READ_LOCK=y +CONFIG_INLINE_READ_LOCK_BH=y +CONFIG_INLINE_READ_LOCK_IRQ=y +CONFIG_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_BH=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_WRITE_LOCK=y +CONFIG_INLINE_WRITE_LOCK_BH=y +CONFIG_INLINE_WRITE_LOCK_IRQ=y +CONFIG_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_BH=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y + +# +# Memory Management options +# +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_NO_BOOTMEM=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_TRANSPARENT_HUGE_PAGECACHE=y +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +# CONFIG_CMA is not set +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +CONFIG_ZSMALLOC=y +CONFIG_PGTABLE_MAPPING=y +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_BENCHMARK is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_NET=y +CONFIG_ETHERNET_PACKET_MANGLE=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=y +CONFIG_XFRM_USER=y +# CONFIG_XFRM_INTERFACE is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +CONFIG_NET_IPGRE_DEMUX=y +CONFIG_NET_IP_TUNNEL=y +CONFIG_NET_IPGRE=y +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set +# CONFIG_IP_PIMSM_V1 is not set +# CONFIG_IP_PIMSM_V2 is not set +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=y +CONFIG_NET_UDP_TUNNEL=m +# CONFIG_NET_FOU is not set +# CONFIG_NET_FOU_IP_TUNNELS is not set +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +# CONFIG_INET_ESP_OFFLOAD is not set +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=y +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_DIAG is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +# CONFIG_INET6_ESP_OFFLOAD is not set +CONFIG_INET6_IPCOMP=m +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=y +CONFIG_INET6_XFRM_MODE_TUNNEL=y +CONFIG_INET6_XFRM_MODE_BEET=y +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=y +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_GRE is not set +CONFIG_IPV6_MULTIPLE_TABLES=y +# CONFIG_IPV6_SUBTREES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_LLDP_RX_DROP_COUNTER=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=y +CONFIG_NETFILTER_FAMILY_BRIDGE=y +# CONFIG_NETFILTER_NETLINK_ACCT is not set +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +# CONFIG_NETFILTER_NETLINK_OSF is not set +CONFIG_NF_CONNTRACK=y +CONFIG_NF_LOG_COMMON=m +# CONFIG_NF_LOG_NETDEV is not set +CONFIG_NF_CONNTRACK_MARK=y +# CONFIG_NF_CONNTRACK_ZONES is not set +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +# CONFIG_NF_CONNTRACK_LABELS is not set +CONFIG_NF_CONNTRACK_DPI=y +# CONFIG_NF_CT_PROTO_DCCP is not set +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=y +# CONFIG_NF_CT_PROTO_UDPLITE is not set +# CONFIG_NF_CONNTRACK_AMANDA is not set +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +CONFIG_NF_CONNTRACK_PPTP=m +# CONFIG_NF_CONNTRACK_SANE is not set +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=y +# CONFIG_NF_CT_NETLINK_TIMEOUT is not set +# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set +CONFIG_NF_NAT=y +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PROTO_SCTP=y +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NETFILTER_SYNPROXY=y +# CONFIG_NF_TABLES is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=y +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=y + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +# CONFIG_NETFILTER_XT_TARGET_HL is not set +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LED is not set +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=y +CONFIG_NETFILTER_XT_NAT=y +CONFIG_NETFILTER_XT_TARGET_NETMAP=y +CONFIG_NETFILTER_XT_TARGET_NFLOG=y +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +CONFIG_NETFILTER_XT_TARGET_REDIRECT=y +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +CONFIG_NETFILTER_XT_MATCH_COMMENT=y +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +CONFIG_NETFILTER_XT_MATCH_DYN_RANDOM=m +# CONFIG_NETFILTER_XT_MATCH_ECN is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +# CONFIG_NETFILTER_XT_MATCH_HL is not set +# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set +CONFIG_NETFILTER_XT_MATCH_IPRANGE=y +CONFIG_NETFILTER_XT_MATCH_IPVS=y +CONFIG_NETFILTER_XT_MATCH_L2TP=m +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +CONFIG_NETFILTER_XT_MATCH_LIMIT=y +CONFIG_NETFILTER_XT_MATCH_MAC=y +CONFIG_NETFILTER_XT_MATCH_MARK=y +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +CONFIG_NETFILTER_XT_MATCH_POLICY=m +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +# CONFIG_NETFILTER_XT_MATCH_STATE is not set +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +CONFIG_NETFILTER_XT_MATCH_TIME=m +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +CONFIG_IP_SET=y +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=y +CONFIG_IP_SET_BITMAP_IPMAC=y +CONFIG_IP_SET_BITMAP_PORT=y +CONFIG_IP_SET_HASH_IP=y +CONFIG_IP_SET_HASH_IPMARK=y +CONFIG_IP_SET_HASH_IPPORT=y +CONFIG_IP_SET_HASH_IPPORTIP=y +CONFIG_IP_SET_HASH_IPPORTNET=y +# CONFIG_IP_SET_HASH_IPMAC is not set +CONFIG_IP_SET_HASH_MAC=y +CONFIG_IP_SET_HASH_NETPORTNET=y +CONFIG_IP_SET_HASH_NET=y +CONFIG_IP_SET_HASH_NETNET=y +CONFIG_IP_SET_HASH_NETPORT=y +CONFIG_IP_SET_HASH_NETIFACE=y +CONFIG_IP_SET_LIST_SET=y +CONFIG_IP_VS=y +# CONFIG_IP_VS_IPV6 is not set +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +# CONFIG_IP_VS_PROTO_TCP is not set +# CONFIG_IP_VS_PROTO_UDP is not set +# CONFIG_IP_VS_PROTO_ESP is not set +# CONFIG_IP_VS_PROTO_AH is not set +# CONFIG_IP_VS_PROTO_SCTP is not set + +# +# IPVS scheduler +# +# CONFIG_IP_VS_RR is not set +# CONFIG_IP_VS_WRR is not set +# CONFIG_IP_VS_LC is not set +# CONFIG_IP_VS_WLC is not set +# CONFIG_IP_VS_FO is not set +# CONFIG_IP_VS_OVF is not set +# CONFIG_IP_VS_LBLC is not set +# CONFIG_IP_VS_LBLCR is not set +# CONFIG_IP_VS_DH is not set +# CONFIG_IP_VS_SH is not set +# CONFIG_IP_VS_MH is not set +# CONFIG_IP_VS_SED is not set +# CONFIG_IP_VS_NQ is not set + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +# CONFIG_IP_VS_NFCT is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=y +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +# CONFIG_NF_DUP_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=y +CONFIG_NF_NAT_IPV4=y +CONFIG_NF_NAT_MASQUERADE_IPV4=y +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_AH is not set +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_RPFILTER is not set +# CONFIG_IP_NF_MATCH_TTL is not set +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_TARGET_SYNPROXY=y +CONFIG_IP_NF_NAT=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +CONFIG_IP_NF_TARGET_NETMAP=y +CONFIG_IP_NF_TARGET_REDIRECT=y +CONFIG_IP_NF_MANGLE=y +# CONFIG_IP_NF_TARGET_CLUSTERIP is not set +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_TTL is not set +CONFIG_IP_NF_RAW=m +# CONFIG_IP_NF_ARPTABLES is not set + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TPROXY_IPV6=m +# CONFIG_NF_DUP_IPV6 is not set +CONFIG_NF_REJECT_IPV6=y +CONFIG_NF_LOG_IPV6=m +CONFIG_NF_NAT_IPV6=y +CONFIG_NF_NAT_MASQUERADE_IPV6=y +CONFIG_IP6_NF_IPTABLES=y +# CONFIG_IP6_NF_MATCH_AH is not set +# CONFIG_IP6_NF_MATCH_EUI64 is not set +# CONFIG_IP6_NF_MATCH_FRAG is not set +# CONFIG_IP6_NF_MATCH_OPTS is not set +# CONFIG_IP6_NF_MATCH_HL is not set +# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set +# CONFIG_IP6_NF_MATCH_MH is not set +# CONFIG_IP6_NF_MATCH_RPFILTER is not set +# CONFIG_IP6_NF_MATCH_RT is not set +# CONFIG_IP6_NF_MATCH_SRH is not set +# CONFIG_IP6_NF_TARGET_HL is not set +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_REJECT=y +CONFIG_IP6_NF_TARGET_SYNPROXY=y +CONFIG_IP6_NF_MANGLE=y +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_NAT=y +CONFIG_IP6_NF_TARGET_MASQUERADE=y +CONFIG_IP6_NF_TARGET_NPT=y +CONFIG_NF_DEFRAG_IPV6=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_SET=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +# CONFIG_BPFILTER is not set +# CONFIG_IP_DCCP is not set +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_COOKIE_HMAC_MD5=y +# CONFIG_SCTP_COOKIE_HMAC_SHA1 is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +CONFIG_L2TP=m +# CONFIG_L2TP_DEBUGFS is not set +# CONFIG_L2TP_V3 is not set +CONFIG_STP=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_IGMP_SNOOPING=y +# CONFIG_BRIDGE_VLAN_FILTERING is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +# CONFIG_DECNET is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_CBQ is not set +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +CONFIG_NET_SCH_SFQ=m +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_CBS is not set +# CONFIG_NET_SCH_ETF is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_DSMARK is not set +CONFIG_NET_SCH_NETEM=m +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_SKBPRIO is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +# CONFIG_NET_SCH_CAKE is not set +# CONFIG_NET_SCH_FQ is not set +# CONFIG_NET_SCH_HHF is not set +# CONFIG_NET_SCH_PIE is not set +CONFIG_NET_SCH_INGRESS=m +# CONFIG_NET_SCH_PLUG is not set +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +# CONFIG_NET_CLS_TCINDEX is not set +# CONFIG_NET_CLS_ROUTE4 is not set +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +# CONFIG_NET_CLS_FLOW is not set +# CONFIG_NET_CLS_CGROUP is not set +# CONFIG_NET_CLS_BPF is not set +# CONFIG_NET_CLS_FLOWER is not set +# CONFIG_NET_CLS_MATCHALL is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +# CONFIG_NET_EMATCH_CMP is not set +# CONFIG_NET_EMATCH_NBYTE is not set +# CONFIG_NET_EMATCH_U32 is not set +# CONFIG_NET_EMATCH_META is not set +# CONFIG_NET_EMATCH_TEXT is not set +CONFIG_NET_EMATCH_IPSET=y +# CONFIG_NET_EMATCH_IPT is not set +CONFIG_NET_CLS_ACT=y +# CONFIG_NET_ACT_POLICE is not set +CONFIG_NET_ACT_GACT=m +# CONFIG_GACT_PROB is not set +CONFIG_NET_ACT_MIRRED=m +# CONFIG_NET_ACT_SAMPLE is not set +CONFIG_NET_ACT_IPT=m +# CONFIG_NET_ACT_NAT is not set +# CONFIG_NET_ACT_PEDIT is not set +# CONFIG_NET_ACT_SIMP is not set +# CONFIG_NET_ACT_SKBEDIT is not set +# CONFIG_NET_ACT_CSUM is not set +# CONFIG_NET_ACT_VLAN is not set +# CONFIG_NET_ACT_BPF is not set +CONFIG_NET_ACT_CONNMARK=m +# CONFIG_NET_ACT_SKBMOD is not set +# CONFIG_NET_ACT_IFE is not set +# CONFIG_NET_ACT_TUNNEL_KEY is not set +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_SCH_FIFO=y +# CONFIG_DCB is not set +# CONFIG_DNS_RESOLVER is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_MPLS is not set +# CONFIG_NET_NSH is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +# CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_NET_NCSI is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CGROUP_NET_CLASSID is not set +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +CONFIG_BPF_JIT=y +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +CONFIG_BT=y +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=y +# CONFIG_BT_RFCOMM_TTY is not set +CONFIG_BT_BNEP=y +# CONFIG_BT_BNEP_MC_FILTER is not set +# CONFIG_BT_BNEP_PROTO_FILTER is not set +CONFIG_BT_HIDP=y +CONFIG_BT_HS=y +CONFIG_BT_LE=y +# CONFIG_BT_LEDS is not set +CONFIG_BT_DEBUGFS=y +CONFIG_BT_NORDIC_QUIRK_LOOKUP_FIX=y + +# +# Bluetooth device drivers +# +# CONFIG_BT_HCIBTUSB is not set +CONFIG_BT_HCIUART=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +# CONFIG_BT_HCIUART_ATH3K is not set +# CONFIG_BT_HCIUART_INTEL is not set +# CONFIG_BT_HCIUART_AG6XX is not set +# CONFIG_BT_HCIUART_MRVL is not set +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_BT_MRVL is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=y +CONFIG_NL80211_TESTMODE=y +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +# CONFIG_CFG80211_WEXT is not set +# CONFIG_MAC80211 is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +# CONFIG_NET_DEVLINK is not set +CONFIG_MAY_USE_DEVLINK=y +# CONFIG_FAILOVER is not set +CONFIG_HAVE_EBPF_JIT=y + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_MMIO=y +CONFIG_GENERIC_ARCH_TOPOLOGY=y + +# +# Bus devices +# +# CONFIG_BRCMSTB_GISB_ARB is not set +# CONFIG_SIMPLE_PM_BUS is not set +CONFIG_VEXPRESS_CONFIG=y +# CONFIG_CONNECTOR is not set +# CONFIG_GNSS is not set +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_AR7_PARTS is not set + +# +# Partition parsers +# + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +CONFIG_MTD_M25P80=y +# CONFIG_MTD_MCHP23K256 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +# CONFIG_MTD_ONENAND is not set +CONFIG_MTD_NAND_ECC=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_ECC_BCH is not set +# CONFIG_MTD_NAND_DENALI_PCI is not set +# CONFIG_MTD_NAND_DENALI_DT is not set +# CONFIG_MTD_NAND_GPIO is not set +# CONFIG_MTD_NAND_RICOH is not set +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_DOCG4 is not set +# CONFIG_MTD_NAND_CAFE is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_BRCMNAND is not set +# CONFIG_MTD_NAND_PLATFORM is not set +CONFIG_MTD_NAND_AL=y +# CONFIG_MTD_SPI_NAND is not set + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_MT81xx_NOR is not set +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_SPI_CADENCE_QUADSPI is not set +# CONFIG_MTD_UBI is not set +CONFIG_DTC=y +CONFIG_OF=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_KOBJ=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_MDIO=y +CONFIG_OF_RESERVED_MEM=y +# CONFIG_OF_OVERLAY is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_ZRAM=m +# CONFIG_ZRAM_WRITEBACK is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SKD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set + +# +# NVME Support +# +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TARGET is not set + +# +# Misc devices +# +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_PHANTOM is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +# CONFIG_SRAM is not set +CONFIG_VEXPRESS_SYSCFG=y +# CONFIG_UBNT_REBOOT_REASON is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=y +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_ALTERA_STAPL is not set + +# +# Intel MIC & related support +# + +# +# Intel MIC Bus Driver +# + +# +# SCIF Bus Driver +# + +# +# VOP Bus Driver +# + +# +# Intel MIC Host Driver +# + +# +# Intel MIC Card Driver +# + +# +# SCIF Driver +# + +# +# Intel MIC Coprocessor State Management (COSM) Drivers +# + +# +# VOP Driver +# +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MISC_RTSX_USB is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_UBNT_FIXED_SD_NAME=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_HISI_SAS is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_ATA=y +CONFIG_ATA_VERBOSE_ERROR=y +# CONFIG_SATA_PMP is not set + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=y +# CONFIG_AHCI_CEVA is not set +CONFIG_AHCI_ALPINE=y +# CONFIG_AHCI_QORIQ is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +# CONFIG_ATA_PIIX is not set +# CONFIG_SATA_DWC is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +# CONFIG_MD_AUTODETECT is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +CONFIG_MD_RAID1=y +# CONFIG_MD_RAID10 is not set +# CONFIG_MD_RAID456 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_MD_FAULTY is not set +# CONFIG_BCACHE is not set +# CONFIG_BLK_DEV_DM is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +CONFIG_NETDEVICES=y +CONFIG_MII=m +CONFIG_NET_CORE=y +CONFIG_BONDING=m +CONFIG_DUMMY=y +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +CONFIG_IFB=m +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m +CONFIG_MACVLAN=y +# CONFIG_MACVTAP is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_GENEVE is not set +# CONFIG_GTP is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +CONFIG_TUN=y +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=y +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +CONFIG_ETHERNET=y +CONFIG_MDIO=m +CONFIG_NET_VENDOR_3COM=y +# CONFIG_VORTEX is not set +# CONFIG_TYPHOON is not set +CONFIG_NET_VENDOR_ADAPTEC=y +# CONFIG_ADAPTEC_STARFIRE is not set +CONFIG_NET_VENDOR_AGERE=y +# CONFIG_ET131X is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +CONFIG_NET_VENDOR_ALTEON=y +# CONFIG_ACENIC is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +CONFIG_NET_VENDOR_AMD=y +# CONFIG_AMD8111_ETH is not set +# CONFIG_PCNET32 is not set +# CONFIG_AMD_XGBE is not set +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +# CONFIG_ATL2 is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL1C is not set +# CONFIG_ALX is not set +CONFIG_NET_VENDOR_AURORA=y +# CONFIG_AURORA_NB8800 is not set +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_B44 is not set +# CONFIG_BCMGENET is not set +# CONFIG_BNX2 is not set +# CONFIG_CNIC is not set +# CONFIG_TIGON3 is not set +# CONFIG_BNX2X is not set +# CONFIG_SYSTEMPORT is not set +# CONFIG_BNXT is not set +CONFIG_NET_VENDOR_BROCADE=y +# CONFIG_BNA is not set +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set +CONFIG_NET_VENDOR_CAVIUM=y +# CONFIG_THUNDER_NIC_PF is not set +# CONFIG_THUNDER_NIC_VF is not set +# CONFIG_THUNDER_NIC_BGX is not set +# CONFIG_THUNDER_NIC_RGX is not set +CONFIG_CAVIUM_PTP=y +# CONFIG_LIQUIDIO is not set +# CONFIG_LIQUIDIO_VF is not set +CONFIG_NET_VENDOR_CHELSIO=y +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +CONFIG_NET_VENDOR_CISCO=y +# CONFIG_ENIC is not set +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_GEMINI_ETHERNET is not set +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +# CONFIG_NET_TULIP is not set +CONFIG_NET_VENDOR_DLINK=y +# CONFIG_DL2K is not set +# CONFIG_SUNDANCE is not set +CONFIG_NET_VENDOR_EMULEX=y +# CONFIG_BE2NET is not set +CONFIG_NET_VENDOR_EZCHIP=y +# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_HISILICON=y +# CONFIG_HIX5HD2_GMAC is not set +# CONFIG_HISI_FEMAC is not set +# CONFIG_HIP04_ETH is not set +# CONFIG_HNS is not set +# CONFIG_HNS_DSAF is not set +# CONFIG_HNS_ENET is not set +# CONFIG_HNS3 is not set +CONFIG_NET_VENDOR_HP=y +# CONFIG_HP100 is not set +CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_HINIC is not set +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IGB=m +CONFIG_IGB_HWMON=y +CONFIG_IGBVF=m +# CONFIG_IXGB is not set +CONFIG_IXGBE=m +CONFIG_IXGBE_HWMON=y +CONFIG_IXGBEVF=m +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_ICE is not set +# CONFIG_FM10K is not set +# CONFIG_JME is not set +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +CONFIG_NET_VENDOR_MELLANOX=y +# CONFIG_MLX4_EN is not set +# CONFIG_MLX5_CORE is not set +# CONFIG_MLXSW_CORE is not set +# CONFIG_MLXFW is not set +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_KSZ884X_PCI is not set +CONFIG_NET_VENDOR_MICROCHIP=y +# CONFIG_ENC28J60 is not set +# CONFIG_ENCX24J600 is not set +# CONFIG_LAN743X is not set +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MYRI=y +# CONFIG_MYRI10GE is not set +# CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NATSEMI=y +# CONFIG_NATSEMI is not set +# CONFIG_NS83820 is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +# CONFIG_VXGE is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +CONFIG_NET_VENDOR_NI=y +CONFIG_NET_VENDOR_8390=y +# CONFIG_NE2K_PCI is not set +CONFIG_NET_VENDOR_NVIDIA=y +# CONFIG_FORCEDETH is not set +CONFIG_NET_VENDOR_OKI=y +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PACKET_ENGINES=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_QLOGIC=y +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_QLGE is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_QED is not set +CONFIG_NET_VENDOR_QUALCOMM=y +# CONFIG_QCA7000_SPI is not set +# CONFIG_QCOM_EMAC is not set +# CONFIG_RMNET is not set +CONFIG_NET_VENDOR_RDC=y +# CONFIG_R6040 is not set +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_R8169 is not set +CONFIG_R8125=m +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SOLARFLARE=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +CONFIG_NET_VENDOR_SILAN=y +# CONFIG_SC92031 is not set +CONFIG_NET_VENDOR_SIS=y +# CONFIG_SIS900 is not set +# CONFIG_SIS190 is not set +CONFIG_NET_VENDOR_SMSC=y +# CONFIG_SMC91X is not set +# CONFIG_EPIC100 is not set +# CONFIG_SMSC911X is not set +# CONFIG_SMSC9420 is not set +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +# CONFIG_STMMAC_ETH is not set +CONFIG_NET_VENDOR_SUN=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NIU is not set +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +CONFIG_NET_AL_ETH=y +CONFIG_ALPINE_SERDES_AVG=y +CONFIG_ALPINE_SERDES_HSSP=y +CONFIG_ALPINE_MDIO_BUS_SHARING=y +CONFIG_AL_ETH_ALLOC_FRAG=y +# CONFIG_AL_ETH_ALLOC_PAGE is not set +# CONFIG_AL_ETH_ALLOC_SKB is not set +CONFIG_NET_VENDOR_TEHUTI=y +# CONFIG_TEHUTI is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_ALE is not set +# CONFIG_TLAN is not set +CONFIG_NET_VENDOR_VIA=y +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +CONFIG_AR8033_DISABLE_EEE=y +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# CONFIG_MDIO_HISI_FEMAC is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_THUNDER is not set +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +# CONFIG_LED_TRIGGER_PHY is not set + +# +# Switch configuration API + drivers +# +CONFIG_SWCONFIG=y +CONFIG_SWCONFIG_UBNT_EXT=y +CONFIG_SWCONFIG_UBNT_EXT_SYNC_ARL=y +# CONFIG_SWCONFIG_LEDS is not set +CONFIG_UBNT_ACL=y +# CONFIG_ADM6996_PHY is not set +CONFIG_AR8216_PHY=y +# CONFIG_AR8216_PHY_LEDS is not set +# CONFIG_SWCONFIG_B53 is not set +# CONFIG_IP17XX_PHY is not set +# CONFIG_MVSWITCH_PHY is not set +# CONFIG_MVSW61XX_PHY is not set +# CONFIG_PSB6970_PHY is not set +# CONFIG_RTL8306_PHY is not set +# CONFIG_RTL8366_SMI is not set + +# +# MII PHY device drivers +# +CONFIG_AT8033_SEL_1P8=y +# CONFIG_AMD_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AX88796B_PHY is not set +CONFIG_AT803X_PHY=y +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +CONFIG_FIXED_PHY=y +# CONFIG_ICPLUS_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_QSEMI_PHY is not set +CONFIG_REALTEK_PHY=y +# CONFIG_RTL8211F_LED1_ENABLE is not set +# CONFIG_RTL8211F_LED0_ENABLE is not set +# CONFIG_RENESAS_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +CONFIG_RTL83XX_API=y +CONFIG_RTL8370_PHY=y +CONFIG_SWCONFIG_ADV_MODE_SUPPORT=y +# CONFIG_MICREL_KS8995MA is not set +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOE=m +# CONFIG_PPTP is not set +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_SLIP is not set +CONFIG_SLHC=m +CONFIG_USB_NET_DRIVERS=y +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_LAN78XX is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_WLAN is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_VMXNET3 is not set +CONFIG_POE_BCM59111=y +CONFIG_UBNT_POE_DEV=y +CONFIG_UBNT_POE_S2P=y +# CONFIG_NETDEVSIM is not set +# CONFIG_NET_FAILOVER is not set +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_DLINK_DIR685 is not set +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_GPIO=y +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_CAP11XX is not set +# CONFIG_KEYBOARD_BCM is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +# CONFIG_SERIO_SERPORT is not set +CONFIG_SERIO_AMBAKMI=y +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=16 +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set +# CONFIG_N_GSM is not set +# CONFIG_TRACE_SINK is not set +CONFIG_LDISC_AUTOLOAD=y +CONFIG_DEVMEM=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +# CONFIG_SERIAL_8250_ASPEED_VUART is not set +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_RT288X is not set +# CONFIG_SERIAL_8250_MOXA is not set +CONFIG_SERIAL_OF_PLATFORM=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_AMBA_PL010 is not set +# CONFIG_SERIAL_AMBA_PL011 is not set +# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_IFX6X60 is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_HVC_DCC is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HW_RANDOM_CAVIUM=y +# CONFIG_APPLICOM is not set + +# +# PCMCIA character devices +# +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_GPMUX is not set +# CONFIG_I2C_MUX_LTC4306 is not set +# CONFIG_I2C_MUX_PCA9541 is not set +CONFIG_I2C_MUX_PCA954x=y +# CONFIG_I2C_MUX_REG is not set +# CONFIG_I2C_MUX_MLXCPLD is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CADENCE is not set +# CONFIG_I2C_CBUS_GPIO is not set +CONFIG_I2C_DESIGNWARE_CORE=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_I2C_DESIGNWARE_SLAVE is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_RK3X is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_VERSATILE is not set +# CONFIG_I2C_THUNDERX is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +CONFIG_SPI=y +CONFIG_SPI_MASTER=y +CONFIG_SPI_MEM=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_CADENCE is not set +CONFIG_SPI_DESIGNWARE=y +# CONFIG_SPI_DW_PCI is not set +CONFIG_SPI_DW_MMIO=y +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PL022 is not set +# CONFIG_SPI_PXA2XX is not set +# CONFIG_SPI_ROCKCHIP is not set +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_THUNDERX is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=y +# CONFIG_SPI_LOOPBACK_TEST is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_SLAVE is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# CONFIG_PINCTRL is not set +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_OF_GPIO=y +CONFIG_GPIOLIB_IRQCHIP=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_EXAR is not set +# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_HLWD is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_MOCKUP is not set +CONFIG_GPIO_PL061=y +CONFIG_GPIO_AL_SGPO=y +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_XGENE is not set +# CONFIG_GPIO_XILINX is not set + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCA953X_READ_BYB=y +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set + +# +# MFD GPIO expanders +# + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_PCIE_IDIO_24 is not set +# CONFIG_GPIO_RDC321X is not set + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_MAX3191X is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_PISOSR is not set +# CONFIG_GPIO_XRA1403 is not set + +# +# USB GPIO expanders +# +# CONFIG_W1 is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_BATTERY_BQ27x00 is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_UBNT_HDD_PWRCTL is not set +CONFIG_UBNT_HDD_PWRCTL_V2=y +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMSTB is not set +# CONFIG_POWER_RESET_GPIO is not set +# CONFIG_POWER_RESET_GPIO_RESTART is not set +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_RESTART is not set +CONFIG_POWER_RESET_VEXPRESS=y +# CONFIG_POWER_RESET_XGENE is not set +# CONFIG_POWER_RESET_SYSCON is not set +# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set +CONFIG_POWER_RESET_ALPINE=y +# CONFIG_SYSCON_REBOOT_MODE is not set +# CONFIG_POWER_AVS is not set +# CONFIG_CHARGER_ADP5061 is not set +# CONFIG_CHARGER_SBS is not set +# CONFIG_MANAGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_CHARGER_LTC3651 is not set +# CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_BQ24257 is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_RT9455 is not set +# CONFIG_PSU_G1320 is not set +CONFIG_PSE_PD69101=y +CONFIG_HWMON=y +CONFIG_HWMON_VID=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +CONFIG_SENSORS_ADT7475=y +CONFIG_SENSOR_ADT7475_FAN_SWAP_FIX=y +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX6621 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_ADCXX is not set +CONFIG_SENSORS_LM63=y +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS1015 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA237 is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_VEXPRESS is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83773G is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +CONFIG_THERMAL=y +# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +# CONFIG_THERMAL_WRITABLE_TRIPS is not set +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_THERMAL_MMIO is not set +# CONFIG_QORIQ_THERMAL is not set + +# +# ACPI INT340X thermal drivers +# +CONFIG_AL_THERMAL_V2=y +CONFIG_AL_THERMAL_V3=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +CONFIG_WATCHDOG_NOWAYOUT=y +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +# CONFIG_WATCHDOG_SYSFS is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_GPIO_WATCHDOG is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +CONFIG_ARM_SP805_WATCHDOG=y +# CONFIG_ARM_SBSA_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_MEN_A21_WDT is not set + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_ACT8945A is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +# CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_CPCAP is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE is not set +CONFIG_MFD_SYSCON=y +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TI_LP87565 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MFD_ROHM_BD718XX is not set +CONFIG_MFD_VEXPRESS_SYSREG=y +# CONFIG_REGULATOR is not set +# CONFIG_RC_CORE is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_DRM is not set +# CONFIG_DRM_DP_CEC is not set + +# +# ACP (Audio CoProcessor) Configuration +# + +# +# AMD Library routines +# + +# +# Frame buffer Devices +# +# CONFIG_FB is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_HWDEP=y +CONFIG_SND_RAWMIDI=y +# CONFIG_SND_OSSEMUL is not set +CONFIG_SND_PCM_TIMER=y +# CONFIG_SND_HRTIMER is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_ALOOP is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set +CONFIG_SND_PCI=y +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AW2 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_OXYGEN is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CTXFI is not set +# CONFIG_SND_DARLA20 is not set +# CONFIG_SND_GINA20 is not set +# CONFIG_SND_LAYLA20 is not set +# CONFIG_SND_DARLA24 is not set +# CONFIG_SND_GINA24 is not set +# CONFIG_SND_LAYLA24 is not set +# CONFIG_SND_MONA is not set +# CONFIG_SND_MIA is not set +# CONFIG_SND_ECHO3G is not set +# CONFIG_SND_INDIGO is not set +# CONFIG_SND_INDIGOIO is not set +# CONFIG_SND_INDIGODJ is not set +# CONFIG_SND_INDIGOIOX is not set +# CONFIG_SND_INDIGODJX is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_LOLA is not set +# CONFIG_SND_LX6464ES is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_RIPTIDE is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SE6X is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRTUOSO is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set + +# +# HD-Audio +# +# CONFIG_SND_HDA_INTEL is not set +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=y +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_HIFACE is not set +# CONFIG_SND_BCD2000 is not set +# CONFIG_SND_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set +# CONFIG_SND_SOC is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACCUTOUCH is not set +# CONFIG_HID_ACRUX is not set +CONFIG_HID_APPLE=y +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_ASUS is not set +# CONFIG_HID_AUREAL is not set +CONFIG_HID_BELKIN=y +# CONFIG_HID_BETOP_FF is not set +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +# CONFIG_HID_CORSAIR is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CMEDIA is not set +CONFIG_HID_CYPRESS=y +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELAN is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +CONFIG_HID_EZKEY=y +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_GOOGLE_HAMMER is not set +# CONFIG_HID_GT683R is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +CONFIG_HID_ITE=y +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +CONFIG_HID_KENSINGTON=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LED is not set +# CONFIG_HID_LENOVO is not set +CONFIG_HID_LOGITECH=y +# CONFIG_HID_LOGITECH_HIDPP is not set +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGIG940_FF is not set +# CONFIG_LOGIWHEELS_FF is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_REDRAGON=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PENMOUNT is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_RETRODE is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set + +# +# I2C HID support +# +# CONFIG_I2C_HID is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +# CONFIG_USB_XHCI_PLATFORM is not set +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_UHCI_HCD=y +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=y +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=y +# CONFIG_USB_SERIAL_CONSOLE is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_SIMPLE is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +CONFIG_USB_SERIAL_CP210X=y +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_F81232 is not set +# CONFIG_USB_SERIAL_F8153X is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_METRO is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MXUPORT is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_QCAUX is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_XSENS_MT is not set +# CONFIG_USB_SERIAL_WISHBONE is not set +# CONFIG_USB_SERIAL_SSU100 is not set +# CONFIG_USB_SERIAL_QT2 is not set +# CONFIG_USB_SERIAL_UPD78F0730 is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_HUB_USB251XB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set + +# +# USB Physical Layer drivers +# +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ULPI is not set +# CONFIG_USB_GADGET is not set +# CONFIG_TYPEC is not set +# CONFIG_USB_ROLE_SWITCH is not set +# CONFIG_USB_LED_TRIG is not set +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_UWB is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_CR0014114 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_LM3692X is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_IS31FL319X is not set +# CONFIG_LEDS_IS31FL32XX is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_SYSCON is not set +# CONFIG_LEDS_MLXREG is not set +# CONFIG_LEDS_USER is not set +CONFIG_LEDS_ULOGO=y +CONFIG_LEDS_ULOGO_PATTERN_MAX=16 + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +# CONFIG_LEDS_TRIGGER_DISK is not set +# CONFIG_LEDS_TRIGGER_MTD is not set +# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_CPU is not set +# CONFIG_LEDS_TRIGGER_ACTIVITY is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_LEDS_TRIGGER_PANIC is not set +# CONFIG_LEDS_TRIGGER_NETDEV is not set +CONFIG_LEDS_TRIGGER_EXTERNAL=y +CONFIG_LEDS_TRIGGER_EXTERNAL_MAX=2 +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC=y +CONFIG_EDAC_LEGACY_SYSFS=y +# CONFIG_EDAC_DEBUG is not set +# CONFIG_EDAC_THUNDERX is not set +# CONFIG_EDAC_XGENE is not set +# CONFIG_EDAC_ALPINE_L1 is not set +# CONFIG_EDAC_ALPINE_L2 is not set +# CONFIG_EDAC_ALPINE_SYSTEM_FABRIC is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABX80X is not set +CONFIG_RTC_DRV_DS1307=y +# CONFIG_RTC_DRV_DS1307_CENTURY is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_ISL12026 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF85363 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +CONFIG_RTC_DRV_S35390A=y +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV8803 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RX6110 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_EFI is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set +# CONFIG_RTC_DRV_ZYNQMP is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_FTRTC010 is not set +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y +CONFIG_DMA_ENGINE=y +CONFIG_DMA_OF=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_AMBA_PL08X is not set +# CONFIG_DW_AXI_DMAC is not set +# CONFIG_FSL_EDMA is not set +# CONFIG_INTEL_IDMA64 is not set +# CONFIG_MV_XOR_V2 is not set +# CONFIG_PL330_DMA is not set +# CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_ZYNQMP_DMA is not set +# CONFIG_AL_SSM_PCIE is not set +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set + +# +# DMA Clients +# +CONFIG_ASYNC_TX_DMA=y +# CONFIG_DMATEST is not set +CONFIG_DMA_ENGINE_RAID=y +CONFIG_AL_DMA=y +CONFIG_AL_DMA_STATS=y +CONFIG_AL_DMA_PCI_IOV=y + +# +# DMABUF options +# +# CONFIG_SYNC_FILE is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO_MENU=y +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_MMIO is not set + +# +# Microsoft Hyper-V guest support +# +# CONFIG_STAGING is not set +# CONFIG_GOLDFISH is not set +# CONFIG_CHROME_PLATFORMS is not set +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Common Clock Framework +# +CONFIG_COMMON_CLK_VERSATILE=y +CONFIG_CLK_SP810=y +CONFIG_CLK_VEXPRESS_OSC=y +# CONFIG_CLK_HSDK is not set +# CONFIG_COMMON_CLK_MAX9485 is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI514 is not set +# CONFIG_COMMON_CLK_SI544 is not set +# CONFIG_COMMON_CLK_SI570 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_CDCE925 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set +# CONFIG_CLK_QORIQ is not set +CONFIG_COMMON_CLK_XGENE=y +# CONFIG_COMMON_CLK_VC5 is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y +CONFIG_FSL_ERRATUM_A008585=y +CONFIG_HISILICON_ERRATUM_161010101=y +CONFIG_ARM64_ERRATUM_858921=y +# CONFIG_ARM_TIMER_SP804 is not set +CONFIG_CLKSRC_VERSATILE=y +# CONFIG_MAILBOX is not set +# CONFIG_IOMMU_SUPPORT is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_VIRTIO is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# + +# +# Broadcom SoC drivers +# +# CONFIG_SOC_BRCMSTB is not set + +# +# NXP/Freescale QorIQ SoC drivers +# + +# +# i.MX SoC drivers +# + +# +# Qualcomm SoC drivers +# +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +CONFIG_AL_HAL=y +CONFIG_ALPINE_PLATFORM="ALPINE_V2" +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +CONFIG_MEMORY=y +# CONFIG_ARM_PL172_MPMC is not set +# CONFIG_IIO is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GIC_V3_ITS_PCI=y +CONFIG_ALPINE_MSI=y +CONFIG_PARTITION_PERCPU=y +# CONFIG_ALPINE_IOFIC is not set +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_FMC is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_PHY_XGENE is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_MAPPHONE_MDM6600 is not set +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set +CONFIG_RAS=y + +# +# Android +# +# CONFIG_ANDROID is not set +# CONFIG_LIBNVDIMM is not set +# CONFIG_DAX is not set +CONFIG_NVMEM=y + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +# CONFIG_TEE is not set +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_FS_IOMAP=y +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_ENCRYPTION is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FS_DAX is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_FUSE_FS is not set +CONFIG_OVERLAY_FS=y +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +# CONFIG_MSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_VMCORE=y +# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_MEMFD_CREATE=y +CONFIG_CONFIGFS_FS=y +CONFIG_EFIVAR_FS=m +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SQUASHFS_LZ4 is not set +# CONFIG_SQUASHFS_LZO is not set +# CONFIG_SQUASHFS_XZ is not set +CONFIG_SQUASHFS_ZSTD=y +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFLATE_COMPRESS=y +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS is not set +# CONFIG_PSTORE_842_COMPRESS is not set +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +CONFIG_PSTORE_CONSOLE=y +# CONFIG_PSTORE_PMSG is not set +CONFIG_PSTORE_RAM=m +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +CONFIG_ENCRYPTED_KEYS=y +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_SECURITY="" +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_RSA=y +# CONFIG_CRYPTO_DH is not set +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_MCRYPTD is not set +CONFIG_CRYPTO_AUTHENC=y +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +CONFIG_CRYPTO_GCM=m +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_AEGIS128L is not set +# CONFIG_CRYPTO_AEGIS256 is not set +# CONFIG_CRYPTO_MORUS640 is not set +# CONFIG_CRYPTO_MORUS1280 is not set +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_ECHAINIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CFB is not set +CONFIG_CRYPTO_CTR=m +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_KEYWRAP is not set + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +CONFIG_CRYPTO_GHASH=m +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +# CONFIG_CRYPTO_SHA3 is not set +# CONFIG_CRYPTO_SM3 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SM4 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=m +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +CONFIG_CRYPTO_ZSTD=m + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set +# CONFIG_CRYPTO_DEV_CCREE is not set +# CONFIG_CRYPTO_DEV_HISI_SEC is not set +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_PKCS7_MESSAGE_PARSER=y +# CONFIG_PKCS7_TEST_KEY is not set +# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set +# CONFIG_SECONDARY_TRUSTED_KEYRING is not set +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_RATIONAL=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +# CONFIG_INDIRECT_PIO is not set +CONFIG_CRC_CCITT=m +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC64 is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +# CONFIG_CRC8 is not set +CONFIG_XXHASH=m +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=m +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMPRESS=m +CONFIG_ZSTD_DECOMPRESS=m +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_RADIX_TREE_MULTIORDER=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_DMA_DIRECT_OPS=y +CONFIG_SWIOTLB=y +CONFIG_SGL_ALLOC=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_CLZ_TAB=y +# CONFIG_CORDIC is not set +# CONFIG_DDR is not set +# CONFIG_IRQ_POLL is not set +CONFIG_MPILIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=y +CONFIG_UCS2_STRING=y +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_SBITMAP=y +# CONFIG_STRING_SELFTEST is not set + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_DYNAMIC_DEBUG is not set + +# +# Compile-time checks and compiler options +# +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_FRAME_POINTER=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_SERIAL=y +# CONFIG_DEBUG_KERNEL is not set + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_HAVE_ARCH_KASAN=y +# CONFIG_KASAN is not set +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set + +# +# Debug Lockups and Hangs +# +CONFIG_PANIC_ON_OOPS=y +CONFIG_PANIC_ON_OOPS_VALUE=1 +CONFIG_PANIC_TIMEOUT=3 +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_WW_MUTEX_SELFTEST is not set +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +CONFIG_HAVE_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_BUGVERBOSE=y + +# +# RCU Debugging +# +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_DMA_API_DEBUG is not set +CONFIG_RUNTIME_TESTING_MENU=y +# CONFIG_LKDTM is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_SORT is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_BITFIELD is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_OVERFLOW is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_FIND_BIT_BENCHMARK is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_MEMTEST is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set +# CONFIG_DEBUG_WX is not set +# CONFIG_DEBUG_ALIGN_RODATA is not set +# CONFIG_ARM64_RELOC_TEST is not set +# CONFIG_CORESIGHT is not set diff --git a/src/bases/udm-base-2.4/linux-patches/linux-0001-localversion.patch b/src/bases/udm-base-2.4/linux-patches/linux-0001-localversion.patch new file mode 100644 index 0000000..d261e66 --- /dev/null +++ b/src/bases/udm-base-2.4/linux-patches/linux-0001-localversion.patch @@ -0,0 +1,4 @@ +--- a/localversion 1970-01-01 01:00:00.000000000 +0100 ++++ b/localversion 2021-07-23 16:01:53.017501275 -0600 +@@ -0,0 +1 @@ ++-ui-alpine-udm diff --git a/src/bases/udm-base-2.4/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch new file mode 100644 index 0000000..dcce17f --- /dev/null +++ b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch @@ -0,0 +1,14 @@ +--- a/src/compat/compat.h ++++ b/src/compat/compat.h +@@ -664,7 +664,8 @@ struct __compat_dummy_container { char dev; }; + #define genl_dump_check_consistent(a, b) genl_dump_check_consistent(a, b, &genl_family) + #endif + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) && \ ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) + static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) + { + void *tmp = skb_put(skb, len); + + diff --git a/src/bases/udm-base-2.4/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch new file mode 100644 index 0000000..6115f8d --- /dev/null +++ b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch @@ -0,0 +1,14 @@ +diff --git a/src/compat/compat.h b/src/compat/compat.h +index 7acbfc6..845238c 100644 +--- a/src/compat/compat.h ++++ b/src/compat/compat.h +@@ -665,7 +665,8 @@ struct __compat_dummy_container { char dev; }; + #endif + + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) && \ +- LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) && \ ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 60) + static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) + { + void *tmp = skb_put(skb, len); diff --git a/src/bases/udm-base-2.4/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch new file mode 100644 index 0000000..ac823bf --- /dev/null +++ b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch @@ -0,0 +1,73 @@ +diff --git a/src/compat/udp_tunnel/udp_tunnel_partial_compat.h b/src/compat/udp_tunnel/udp_tunnel_partial_compat.h +index 0605896..ca810fd 100644 +--- a/src/compat/udp_tunnel/udp_tunnel_partial_compat.h ++++ b/src/compat/udp_tunnel/udp_tunnel_partial_compat.h +@@ -168,15 +168,15 @@ struct __compat_udp_port_cfg { + struct in_addr peer_ip; + #if IS_ENABLED(CONFIG_IPV6) + struct in6_addr peer_ip6; + #endif + }; + __be16 local_udp_port; + __be16 peer_udp_port; +- unsigned int use_udp_checksums:1, use_udp6_tx_checksums:1, use_udp6_rx_checksums:1, ipv6_v6only:1; ++ unsigned int use_udp_checksums:1, use_udp6_tx_checksums:1, use_udp6_rx_checksums:1, reuse_addr:1, reuse_port:1, ipv6_v6only:1; + }; + static inline int __maybe_unused __compat_udp_sock_create(struct net *net, struct __compat_udp_port_cfg *cfg, struct socket **sockp) + { + struct udp_port_cfg old_cfg = { + .family = cfg->family, + .local_ip = cfg->local_ip, + #if IS_ENABLED(CONFIG_IPV6) +@@ -186,15 +186,17 @@ static inline int __maybe_unused __compat_udp_sock_create(struct net *net, struc + #if IS_ENABLED(CONFIG_IPV6) + .peer_ip6 = cfg->peer_ip6, + #endif + .local_udp_port = cfg->local_udp_port, + .peer_udp_port = cfg->peer_udp_port, + .use_udp_checksums = cfg->use_udp_checksums, + .use_udp6_tx_checksums = cfg->use_udp6_tx_checksums, +- .use_udp6_rx_checksums = cfg->use_udp6_rx_checksums ++ .use_udp6_rx_checksums = cfg->use_udp6_rx_checksums, ++ .reuse_addr = cfg->reuse_addr, ++ .reuse_port = cfg->reuse_port + }; + if (cfg->family == AF_INET) + return udp_sock_create4(net, &old_cfg, sockp); + + #if IS_ENABLED(CONFIG_IPV6) + if (cfg->family == AF_INET6) { + int ret; +diff --git a/src/socket.c b/src/socket.c +index e8eceeb..dcc4088 100644 +--- a/src/socket.c ++++ b/src/socket.c +@@ -355,23 +355,27 @@ int wg_socket_init(struct wg_device *wg, u16 port) + .encap_rcv = wg_receive + }; + struct socket *new4 = NULL, *new6 = NULL; + struct udp_port_cfg port4 = { + .family = AF_INET, + .local_ip.s_addr = htonl(INADDR_ANY), + .local_udp_port = htons(port), +- .use_udp_checksums = true ++ .use_udp_checksums = true, ++ .reuse_addr = true, ++ .reuse_port = true + }; + #if IS_ENABLED(CONFIG_IPV6) + int retries = 0; + struct udp_port_cfg port6 = { + .family = AF_INET6, + .local_ip6 = IN6ADDR_ANY_INIT, + .use_udp6_tx_checksums = true, + .use_udp6_rx_checksums = true, ++ .reuse_addr = true, ++ .reuse_port = true, + .ipv6_v6only = true + }; + #endif + + rcu_read_lock(); + net = rcu_dereference(wg->creating_net); + net = net ? maybe_get_net(net) : NULL; diff --git a/src/bases/udm-base-2.4/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch new file mode 100644 index 0000000..12b5891 --- /dev/null +++ b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch @@ -0,0 +1,31 @@ +diff --git a/src/device.c b/src/device.c +index c673446..25aac06 100644 +--- a/src/device.c ++++ b/src/device.c +@@ -127,14 +127,26 @@ static netdev_tx_t wg_xmit(struct sk_buff *skb, struct net_device *dev) + struct sk_buff_head packets; + struct wg_peer *peer; + struct sk_buff *next; + sa_family_t family; + u32 mtu; + int ret; + ++ if (unlikely(skb->mark & wg->fwmark)) { ++ ret = -ENETDOWN; ++ net_crit_ratelimited("%s: loop detected, dropping skb of length %u\n", dev->name, skb->len); ++ goto err; ++ } ++ ++ if (unlikely(skb_end_offset(skb) > 33000)) { ++ ret = -ENETDOWN; ++ net_crit_ratelimited("%s: possible loop detected, dropping skb of size %u\n", dev->name, skb_end_offset(skb)); ++ goto err; ++ } ++ + if (unlikely(!wg_check_packet_protocol(skb))) { + ret = -EPROTONOSUPPORT; + net_dbg_ratelimited("%s: Invalid IP packet\n", dev->name); + goto err; + } + + peer = wg_allowedips_lookup_dst(&wg->peer_allowedips, skb); diff --git a/src/bases/udm-base-2.4/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch new file mode 100644 index 0000000..8e4cb75 --- /dev/null +++ b/src/bases/udm-base-2.4/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch @@ -0,0 +1,233 @@ +--- a/src/netlink.c ++++ b/src/netlink.c +@@ -34,15 +34,17 @@ static const struct nla_policy peer_poli + [WGPEER_A_FLAGS] = { .type = NLA_U32 }, + [WGPEER_A_ENDPOINT] = NLA_POLICY_MIN_LEN(sizeof(struct sockaddr)), + [WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL] = { .type = NLA_U16 }, + [WGPEER_A_LAST_HANDSHAKE_TIME] = NLA_POLICY_EXACT_LEN(sizeof(struct __kernel_timespec)), + [WGPEER_A_RX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_TX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_ALLOWEDIPS] = { .type = NLA_NESTED }, +- [WGPEER_A_PROTOCOL_VERSION] = { .type = NLA_U32 } ++ [WGPEER_A_PROTOCOL_VERSION] = { .type = NLA_U32 }, ++ [WGPEER_A_FORCED_HANDSHAKE_INTERVAL] = { .type = NLA_U16 }, ++ [WGPEER_A_LAST_RECEIVE_TIME] = NLA_POLICY_EXACT_LEN(sizeof(struct __kernel_timespec)), + }; + + static const struct nla_policy allowedip_policy[WGALLOWEDIP_A_MAX + 1] = { + [WGALLOWEDIP_A_FAMILY] = { .type = NLA_U16 }, + [WGALLOWEDIP_A_IPADDR] = NLA_POLICY_MIN_LEN(sizeof(struct in_addr)), + [WGALLOWEDIP_A_CIDR_MASK] = { .type = NLA_U8 } + }; +@@ -119,31 +121,39 @@ get_peer(struct wg_peer *peer, struct sk + goto err; + + if (!allowedips_node) { + const struct __kernel_timespec last_handshake = { + .tv_sec = peer->walltime_last_handshake.tv_sec, + .tv_nsec = peer->walltime_last_handshake.tv_nsec + }; ++ const struct __kernel_timespec last_receive = { ++ .tv_sec = peer->walltime_last_receive.tv_sec, ++ .tv_nsec = peer->walltime_last_receive.tv_nsec ++ }; + + down_read(&peer->handshake.lock); + fail = nla_put(skb, WGPEER_A_PRESHARED_KEY, + NOISE_SYMMETRIC_KEY_LEN, + peer->handshake.preshared_key); + up_read(&peer->handshake.lock); + if (fail) + goto err; + + if (nla_put(skb, WGPEER_A_LAST_HANDSHAKE_TIME, + sizeof(last_handshake), &last_handshake) || ++ nla_put(skb, WGPEER_A_LAST_RECEIVE_TIME, ++ sizeof(last_receive), &last_receive) || + nla_put_u16(skb, WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL, + peer->persistent_keepalive_interval) || + nla_put_u64_64bit(skb, WGPEER_A_TX_BYTES, peer->tx_bytes, + WGPEER_A_UNSPEC) || + nla_put_u64_64bit(skb, WGPEER_A_RX_BYTES, peer->rx_bytes, + WGPEER_A_UNSPEC) || ++ nla_put_u16(skb, WGPEER_A_FORCED_HANDSHAKE_INTERVAL, ++ peer->forced_handshake_interval) || + nla_put_u32(skb, WGPEER_A_PROTOCOL_VERSION, 1)) + goto err; + + read_lock_bh(&peer->endpoint_lock); + if (peer->endpoint.addr.sa_family == AF_INET) + fail = nla_put(skb, WGPEER_A_ENDPOINT, + sizeof(peer->endpoint.addr4), +@@ -474,14 +484,19 @@ static int set_peer(struct wg_device *wg + netif_running(wg->dev); + + peer->persistent_keepalive_interval = persistent_keepalive_interval; + if (send_keepalive) + wg_packet_send_keepalive(peer); + } + ++ if (attrs[WGPEER_A_FORCED_HANDSHAKE_INTERVAL]) { ++ peer->forced_handshake_interval = nla_get_u16( ++ attrs[WGPEER_A_FORCED_HANDSHAKE_INTERVAL]); ++ } ++ + if (netif_running(wg->dev)) + wg_packet_send_staged_packets(peer); + + out: + wg_peer_put(peer); + if (attrs[WGPEER_A_PRESHARED_KEY]) + memzero_explicit(nla_data(attrs[WGPEER_A_PRESHARED_KEY]), +--- a/src/peer.h ++++ b/src/peer.h +@@ -60,14 +60,17 @@ struct wg_peer { + struct timespec64 walltime_last_handshake; + struct kref refcount; + struct rcu_head rcu; + struct list_head peer_list; + struct list_head allowedips_list; + struct napi_struct napi; + u64 internal_id; ++ u16 forced_handshake_interval; ++ struct timer_list timer_forced_handshake; ++ struct timespec64 walltime_last_receive; + }; + + struct wg_peer *wg_peer_create(struct wg_device *wg, + const u8 public_key[NOISE_PUBLIC_KEY_LEN], + const u8 preshared_key[NOISE_SYMMETRIC_KEY_LEN]); + + struct wg_peer *__must_check wg_peer_get_maybe_zero(struct wg_peer *peer); +--- a/src/timers.c ++++ b/src/timers.c +@@ -137,14 +137,31 @@ static void wg_expired_send_persistent_k + struct wg_peer *peer = from_timer(peer, timer, + timer_persistent_keepalive); + + if (likely(peer->persistent_keepalive_interval)) + wg_packet_send_keepalive(peer); + } + ++static void wg_expired_forced_handshake(struct timer_list *timer) ++{ ++ struct wg_peer *peer = from_timer(peer, timer, timer_forced_handshake); ++ ++ if (!likely(peer->forced_handshake_interval)) ++ return; ++ ++ pr_debug("%s: Retrying handshake with peer %llu (%pISpfsc) because we stopped hearing back after forced handshake timeout %d seconds\n", ++ peer->device->dev->name, peer->internal_id, ++ &peer->endpoint.addr, peer->forced_handshake_interval); ++ /* We clear the endpoint address src address, in case this is the cause ++ * of trouble. ++ */ ++ wg_socket_clear_peer_endpoint_src(peer); ++ wg_packet_send_queued_handshake_initiation(peer, false); ++} ++ + /* Should be called after an authenticated data packet is sent. */ + void wg_timers_data_sent(struct wg_peer *peer) + { + if (!timer_pending(&peer->timer_new_handshake)) + mod_peer_timer(peer, &peer->timer_new_handshake, + jiffies + (KEEPALIVE_TIMEOUT + REKEY_TIMEOUT) * HZ + + prandom_u32_max(REKEY_TIMEOUT_JITTER_MAX_JIFFIES)); +@@ -172,14 +189,19 @@ void wg_timers_any_authenticated_packet_ + + /* Should be called after any type of authenticated packet is received, whether + * keepalive, data, or handshake. + */ + void wg_timers_any_authenticated_packet_received(struct wg_peer *peer) + { + del_timer(&peer->timer_new_handshake); ++ ktime_get_real_ts64(&peer->walltime_last_receive); ++ if (likely(peer->forced_handshake_interval)) { ++ mod_peer_timer(peer, &peer->timer_forced_handshake, ++ jiffies + peer->forced_handshake_interval * HZ); ++ } + } + + /* Should be called after a handshake initiation message is sent. */ + void wg_timers_handshake_initiated(struct wg_peer *peer) + { + mod_peer_timer(peer, &peer->timer_retransmit_handshake, + jiffies + REKEY_TIMEOUT * HZ + +@@ -222,22 +244,25 @@ void wg_timers_init(struct wg_peer *peer + wg_expired_retransmit_handshake, 0); + timer_setup(&peer->timer_send_keepalive, wg_expired_send_keepalive, 0); + timer_setup(&peer->timer_new_handshake, wg_expired_new_handshake, 0); + timer_setup(&peer->timer_zero_key_material, + wg_expired_zero_key_material, 0); + timer_setup(&peer->timer_persistent_keepalive, + wg_expired_send_persistent_keepalive, 0); ++ timer_setup(&peer->timer_forced_handshake, ++ wg_expired_forced_handshake, 0); + INIT_WORK(&peer->clear_peer_work, wg_queued_expired_zero_key_material); + peer->timer_handshake_attempts = 0; + peer->sent_lastminute_handshake = false; + peer->timer_need_another_keepalive = false; + } + + void wg_timers_stop(struct wg_peer *peer) + { + del_timer_sync(&peer->timer_retransmit_handshake); + del_timer_sync(&peer->timer_send_keepalive); + del_timer_sync(&peer->timer_new_handshake); ++ del_timer_sync(&peer->timer_forced_handshake); + del_timer_sync(&peer->timer_zero_key_material); + del_timer_sync(&peer->timer_persistent_keepalive); + flush_work(&peer->clear_peer_work); + } +--- a/src/uapi/wireguard.h ++++ b/src/uapi/wireguard.h +@@ -45,14 +45,16 @@ + * WGALLOWEDIP_A_CIDR_MASK: NLA_U8 + * 0: NLA_NESTED + * ... + * 0: NLA_NESTED + * ... + * ... + * WGPEER_A_PROTOCOL_VERSION: NLA_U32 ++ * WGPEER_A_FORCED_HANDSHAKE_INTERVAL: NLA_U16 ++ * WGPEER_A_LAST_RECEIVE_TIME: NLA_EXACT_LEN, struct __kernel_timespec + * 0: NLA_NESTED + * ... + * ... + * + * It is possible that all of the allowed IPs of a single peer will not + * fit within a single netlink message. In that case, the same peer will + * be written in the following message, except it will only contain +@@ -107,14 +109,15 @@ + * ... + * ... + * WGPEER_A_PROTOCOL_VERSION: NLA_U32, should not be set or used at + * all by most users of this API, as the + * most recent protocol will be used when + * this is unset. Otherwise, must be set + * to 1. ++ * WGPEER_A_FORCED_HANDSHAKE_INTERVAL: NLA_U16, 0 to disable + * 0: NLA_NESTED + * ... + * ... + * + * It is possible that the amount of configuration data exceeds that of + * the maximum message length accepted by the kernel. In that case, several + * messages should be sent one after another, with each successive one +@@ -176,14 +179,16 @@ enum wgpeer_attribute { + WGPEER_A_ENDPOINT, + WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL, + WGPEER_A_LAST_HANDSHAKE_TIME, + WGPEER_A_RX_BYTES, + WGPEER_A_TX_BYTES, + WGPEER_A_ALLOWEDIPS, + WGPEER_A_PROTOCOL_VERSION, ++ WGPEER_A_FORCED_HANDSHAKE_INTERVAL, ++ WGPEER_A_LAST_RECEIVE_TIME, + __WGPEER_A_LAST + }; + #define WGPEER_A_MAX (__WGPEER_A_LAST - 1) + + enum wgallowedip_attribute { + WGALLOWEDIP_A_UNSPEC, + WGALLOWEDIP_A_FAMILY, diff --git a/src/bases/udm-base-2.4/prefix b/src/bases/udm-base-2.4/prefix new file mode 100644 index 0000000..e48a3db --- /dev/null +++ b/src/bases/udm-base-2.4/prefix @@ -0,0 +1 @@ +4.19.152-ui-alpine-udm diff --git a/src/bases/udr-2.2.12/versions.txt b/src/bases/udm-base-2.4/versions.txt similarity index 100% rename from src/bases/udr-2.2.12/versions.txt rename to src/bases/udm-base-2.4/versions.txt diff --git a/src/bases/udr-2.2.12/linux-patches/001-087-crypto-aes-generic-drop-alignment-requirement.patch b/src/bases/udr-2.2.12/linux-patches/001-087-crypto-aes-generic-drop-alignment-requirement.patch deleted file mode 100644 index bed60eb..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-087-crypto-aes-generic-drop-alignment-requirement.patch +++ /dev/null @@ -1,216 +0,0 @@ -From ec38a9376163f9f7cb671e49b7667129c7bb8f8b Mon Sep 17 00:00:00 2001 -From: Ard Biesheuvel -Date: Thu, 2 Feb 2017 15:58:57 +0000 -Subject: [PATCH] crypto: aes-generic - drop alignment requirement - -The generic AES code exposes a 32-bit align mask, which forces all -users of the code to use temporary buffers or take other measures to -ensure the alignment requirement is adhered to, even on architectures -that don't care about alignment for software algorithms such as this -one. - -So drop the align mask, and fix the code to use get_unaligned_le32() -where appropriate, which will resolve to whatever is optimal for the -architecture. - -Signed-off-by: Ard Biesheuvel -Signed-off-by: Herbert Xu ---- - crypto/aes_generic.c | 64 ++++++++++++++++++++++++++-------------------------- - 1 file changed, 32 insertions(+), 32 deletions(-) - ---- a/crypto/aes_generic.c -+++ b/crypto/aes_generic.c -@@ -50,14 +50,15 @@ - #include - #include - #include - #include - #include - #include - #include -+#include - - static inline u8 byte(const u32 x, const unsigned n) - { - return x >> (n << 3); - } - - static const u32 rco_tab[10] = { 1, 2, 4, 8, 16, 32, 64, 128, 27, 54 }; -@@ -1212,47 +1213,51 @@ EXPORT_SYMBOL_GPL(crypto_il_tab); - * The decryption key is prepared for the "Equivalent Inverse Cipher" as - * described in FIPS-197. The first slot (16 bytes) of each key (enc or dec) is - * for the initial combination, the second slot for the first round and so on. - */ - int crypto_aes_expand_key(struct crypto_aes_ctx *ctx, const u8 *in_key, - unsigned int key_len) - { -- const __le32 *key = (const __le32 *)in_key; - u32 i, t, u, v, w, j; - - if (key_len != AES_KEYSIZE_128 && key_len != AES_KEYSIZE_192 && - key_len != AES_KEYSIZE_256) - return -EINVAL; - - ctx->key_length = key_len; - -- ctx->key_dec[key_len + 24] = ctx->key_enc[0] = le32_to_cpu(key[0]); -- ctx->key_dec[key_len + 25] = ctx->key_enc[1] = le32_to_cpu(key[1]); -- ctx->key_dec[key_len + 26] = ctx->key_enc[2] = le32_to_cpu(key[2]); -- ctx->key_dec[key_len + 27] = ctx->key_enc[3] = le32_to_cpu(key[3]); -+ ctx->key_enc[0] = get_unaligned_le32(in_key); -+ ctx->key_enc[1] = get_unaligned_le32(in_key + 4); -+ ctx->key_enc[2] = get_unaligned_le32(in_key + 8); -+ ctx->key_enc[3] = get_unaligned_le32(in_key + 12); -+ -+ ctx->key_dec[key_len + 24] = ctx->key_enc[0]; -+ ctx->key_dec[key_len + 25] = ctx->key_enc[1]; -+ ctx->key_dec[key_len + 26] = ctx->key_enc[2]; -+ ctx->key_dec[key_len + 27] = ctx->key_enc[3]; - - switch (key_len) { - case AES_KEYSIZE_128: - t = ctx->key_enc[3]; - for (i = 0; i < 10; ++i) - loop4(i); - break; - - case AES_KEYSIZE_192: -- ctx->key_enc[4] = le32_to_cpu(key[4]); -- t = ctx->key_enc[5] = le32_to_cpu(key[5]); -+ ctx->key_enc[4] = get_unaligned_le32(in_key + 16); -+ t = ctx->key_enc[5] = get_unaligned_le32(in_key + 20); - for (i = 0; i < 8; ++i) - loop6(i); - break; - - case AES_KEYSIZE_256: -- ctx->key_enc[4] = le32_to_cpu(key[4]); -- ctx->key_enc[5] = le32_to_cpu(key[5]); -- ctx->key_enc[6] = le32_to_cpu(key[6]); -- t = ctx->key_enc[7] = le32_to_cpu(key[7]); -+ ctx->key_enc[4] = get_unaligned_le32(in_key + 16); -+ ctx->key_enc[5] = get_unaligned_le32(in_key + 20); -+ ctx->key_enc[6] = get_unaligned_le32(in_key + 24); -+ t = ctx->key_enc[7] = get_unaligned_le32(in_key + 28); - for (i = 0; i < 6; ++i) - loop8(i); - loop8tophalf(i); - break; - } - - ctx->key_dec[0] = ctx->key_enc[key_len + 24]; -@@ -1325,24 +1330,22 @@ EXPORT_SYMBOL_GPL(crypto_aes_set_key); - f_rl(bo, bi, 2, k); \ - f_rl(bo, bi, 3, k); \ - } while (0) - - static void aes_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) - { - const struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm); -- const __le32 *src = (const __le32 *)in; -- __le32 *dst = (__le32 *)out; - u32 b0[4], b1[4]; - const u32 *kp = ctx->key_enc + 4; - const int key_len = ctx->key_length; - -- b0[0] = le32_to_cpu(src[0]) ^ ctx->key_enc[0]; -- b0[1] = le32_to_cpu(src[1]) ^ ctx->key_enc[1]; -- b0[2] = le32_to_cpu(src[2]) ^ ctx->key_enc[2]; -- b0[3] = le32_to_cpu(src[3]) ^ ctx->key_enc[3]; -+ b0[0] = ctx->key_enc[0] ^ get_unaligned_le32(in); -+ b0[1] = ctx->key_enc[1] ^ get_unaligned_le32(in + 4); -+ b0[2] = ctx->key_enc[2] ^ get_unaligned_le32(in + 8); -+ b0[3] = ctx->key_enc[3] ^ get_unaligned_le32(in + 12); - - if (key_len > 24) { - f_nround(b1, b0, kp); - f_nround(b0, b1, kp); - } - - if (key_len > 16) { -@@ -1357,18 +1360,18 @@ static void aes_encrypt(struct crypto_tf - f_nround(b1, b0, kp); - f_nround(b0, b1, kp); - f_nround(b1, b0, kp); - f_nround(b0, b1, kp); - f_nround(b1, b0, kp); - f_lround(b0, b1, kp); - -- dst[0] = cpu_to_le32(b0[0]); -- dst[1] = cpu_to_le32(b0[1]); -- dst[2] = cpu_to_le32(b0[2]); -- dst[3] = cpu_to_le32(b0[3]); -+ put_unaligned_le32(b0[0], out); -+ put_unaligned_le32(b0[1], out + 4); -+ put_unaligned_le32(b0[2], out + 8); -+ put_unaligned_le32(b0[3], out + 12); - } - - /* decrypt a block of text */ - - #define i_rn(bo, bi, n, k) do { \ - bo[n] = crypto_it_tab[0][byte(bi[n], 0)] ^ \ - crypto_it_tab[1][byte(bi[(n + 3) & 3], 1)] ^ \ -@@ -1397,24 +1400,22 @@ static void aes_encrypt(struct crypto_tf - i_rl(bo, bi, 2, k); \ - i_rl(bo, bi, 3, k); \ - } while (0) - - static void aes_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) - { - const struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm); -- const __le32 *src = (const __le32 *)in; -- __le32 *dst = (__le32 *)out; - u32 b0[4], b1[4]; - const int key_len = ctx->key_length; - const u32 *kp = ctx->key_dec + 4; - -- b0[0] = le32_to_cpu(src[0]) ^ ctx->key_dec[0]; -- b0[1] = le32_to_cpu(src[1]) ^ ctx->key_dec[1]; -- b0[2] = le32_to_cpu(src[2]) ^ ctx->key_dec[2]; -- b0[3] = le32_to_cpu(src[3]) ^ ctx->key_dec[3]; -+ b0[0] = ctx->key_dec[0] ^ get_unaligned_le32(in); -+ b0[1] = ctx->key_dec[1] ^ get_unaligned_le32(in + 4); -+ b0[2] = ctx->key_dec[2] ^ get_unaligned_le32(in + 8); -+ b0[3] = ctx->key_dec[3] ^ get_unaligned_le32(in + 12); - - if (key_len > 24) { - i_nround(b1, b0, kp); - i_nround(b0, b1, kp); - } - - if (key_len > 16) { -@@ -1429,28 +1430,27 @@ static void aes_decrypt(struct crypto_tf - i_nround(b1, b0, kp); - i_nround(b0, b1, kp); - i_nround(b1, b0, kp); - i_nround(b0, b1, kp); - i_nround(b1, b0, kp); - i_lround(b0, b1, kp); - -- dst[0] = cpu_to_le32(b0[0]); -- dst[1] = cpu_to_le32(b0[1]); -- dst[2] = cpu_to_le32(b0[2]); -- dst[3] = cpu_to_le32(b0[3]); -+ put_unaligned_le32(b0[0], out); -+ put_unaligned_le32(b0[1], out + 4); -+ put_unaligned_le32(b0[2], out + 8); -+ put_unaligned_le32(b0[3], out + 12); - } - - static struct crypto_alg aes_alg = { - .cra_name = "aes", - .cra_driver_name = "aes-generic", - .cra_priority = 100, - .cra_flags = CRYPTO_ALG_TYPE_CIPHER, - .cra_blocksize = AES_BLOCK_SIZE, - .cra_ctxsize = sizeof(struct crypto_aes_ctx), -- .cra_alignmask = 3, - .cra_module = THIS_MODULE, - .cra_u = { - .cipher = { - .cia_min_keysize = AES_MIN_KEY_SIZE, - .cia_max_keysize = AES_MAX_KEY_SIZE, - .cia_setkey = crypto_aes_set_key, - .cia_encrypt = aes_encrypt, diff --git a/src/bases/udr-2.2.12/linux-patches/001-647-bridge_netfilter_add_ebt_set.patch b/src/bases/udr-2.2.12/linux-patches/001-647-bridge_netfilter_add_ebt_set.patch deleted file mode 100644 index abe6979..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-647-bridge_netfilter_add_ebt_set.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- a/net/bridge/netfilter/Kconfig -+++ b/net/bridge/netfilter/Kconfig -@@ -150,14 +150,25 @@ config BRIDGE_EBT_STP - config BRIDGE_EBT_VLAN - tristate "ebt: 802.1Q VLAN filter support" - help - This option adds the 802.1Q vlan match, which allows the filtering of - 802.1Q vlan fields. - - To compile it as a module, choose M here. If unsure, say N. -+ -+config BRIDGE_EBT_SET -+ tristate "ebt: set support" -+ depends on IP_SET -+ help -+ This option adds set match. -+ -+ Using this match, you can match -+ elements in the sets created by ipset(8). -+ -+ To compile it as a module, choose M here. If unsure, say N. - # - # targets - # - config BRIDGE_EBT_ARPREPLY - tristate "ebt: arp reply target support" - depends on BRIDGE_NF_EBTABLES && INET - help ---- a/net/bridge/netfilter/Makefile -+++ b/net/bridge/netfilter/Makefile -@@ -23,14 +23,15 @@ obj-$(CONFIG_BRIDGE_EBT_ARP) += ebt_arp. - obj-$(CONFIG_BRIDGE_EBT_IP) += ebt_ip.o - obj-$(CONFIG_BRIDGE_EBT_IP6) += ebt_ip6.o - obj-$(CONFIG_BRIDGE_EBT_LIMIT) += ebt_limit.o - obj-$(CONFIG_BRIDGE_EBT_MARK) += ebt_mark_m.o - obj-$(CONFIG_BRIDGE_EBT_PKTTYPE) += ebt_pkttype.o - obj-$(CONFIG_BRIDGE_EBT_STP) += ebt_stp.o - obj-$(CONFIG_BRIDGE_EBT_VLAN) += ebt_vlan.o -+obj-$(CONFIG_BRIDGE_EBT_SET) += ebt_set.o - - # targets - obj-$(CONFIG_BRIDGE_EBT_ARPREPLY) += ebt_arpreply.o - obj-$(CONFIG_BRIDGE_EBT_MARK_T) += ebt_mark.o - obj-$(CONFIG_BRIDGE_EBT_DNAT) += ebt_dnat.o - obj-$(CONFIG_BRIDGE_EBT_REDIRECT) += ebt_redirect.o - obj-$(CONFIG_BRIDGE_EBT_SNAT) += ebt_snat.o diff --git a/src/bases/udr-2.2.12/linux-patches/001-922-always-create-console-node-in-initramfs.patch b/src/bases/udr-2.2.12/linux-patches/001-922-always-create-console-node-in-initramfs.patch deleted file mode 100644 index 3c4adea..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-922-always-create-console-node-in-initramfs.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- a/scripts/gen_initramfs_list.sh -+++ b/scripts/gen_initramfs_list.sh -@@ -55,14 +55,26 @@ default_initramfs() { - nod /dev/console 0600 0 0 c 5 1 - dir /root 0700 0 0 - # file /kinit usr/kinit/kinit 0755 0 0 - # slink /init kinit 0755 0 0 - EOF - } - -+list_openwrt_initramfs() { -+ : -+} -+ -+openwrt_initramfs() { -+ # make sure that /dev/console exists -+ cat <<-EOF >> ${output} -+ dir /dev 0755 0 0 -+ nod /dev/console 0600 0 0 c 5 1 -+ EOF -+} -+ - filetype() { - local argv1="$1" - - # symlink test must come before file test - if [ -L "${argv1}" ]; then - echo "slink" - elif [ -f "${argv1}" ]; then -@@ -173,14 +185,16 @@ dir_filelist() { - srcdir=$(echo "$1" | sed -e 's://*:/:g') - dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n") - - # If $dirlist is only one line, then the directory is empty - if [ "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then - ${dep_list}print_mtime "$1" - -+ ${dep_list}openwrt_initramfs -+ - echo "${dirlist}" | \ - while read x; do - ${dep_list}parse ${x} - done - fi - } - diff --git a/src/bases/udr-2.2.12/linux-patches/001-930-crashlog.patch b/src/bases/udr-2.2.12/linux-patches/001-930-crashlog.patch deleted file mode 100644 index 97d6c66..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-930-crashlog.patch +++ /dev/null @@ -1,381 +0,0 @@ ---- /dev/null -+++ b/include/linux/crashlog.h -@@ -0,0 +1,17 @@ -+#ifndef __CRASHLOG_H -+#define __CRASHLOG_H -+ -+#ifdef CONFIG_CRASHLOG -+void crashlog_init_bootmem(struct bootmem_data *bdata); -+void crashlog_init_memblock(phys_addr_t addr, phys_addr_t size); -+#else -+static inline void crashlog_init_bootmem(struct bootmem_data *bdata) -+{ -+} -+ -+static inline void crashlog_init_memblock(phys_addr_t addr, phys_addr_t size) -+{ -+} -+#endif -+ -+#endif ---- a/init/Kconfig -+++ b/init/Kconfig -@@ -1367,14 +1367,18 @@ config RELAY - certain file systems (such as debugfs). - It is designed to provide an efficient mechanism for tools and - facilities to relay large amounts of data from kernel space to - user space. - - If unsure, say N. - -+config CRASHLOG -+ bool "Crash logging" -+ depends on (!NO_BOOTMEM || HAVE_MEMBLOCK) -+ - config BLK_DEV_INITRD - bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" - depends on BROKEN || !FRV - help - The initial RAM filesystem is a ramfs which is loaded by the - boot loader (loadlin or lilo) and that is mounted as root - before the normal boot procedure. It is typically used to ---- a/kernel/Makefile -+++ b/kernel/Makefile -@@ -111,14 +111,15 @@ obj-$(CONFIG_PADATA) += padata.o - obj-$(CONFIG_CRASH_DUMP) += crash_dump.o - obj-$(CONFIG_JUMP_LABEL) += jump_label.o - obj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o - obj-$(CONFIG_TORTURE_TEST) += torture.o - obj-$(CONFIG_MEMBARRIER) += membarrier.o - - obj-$(CONFIG_HAS_IOMEM) += memremap.o -+obj-$(CONFIG_CRASHLOG) += crashlog.o - - $(obj)/configs.o: $(obj)/config_data.h - - # config_data.h contains the same information as ikconfig.h but gzipped. - # Info from config_data can be extracted from /proc/config* - targets += config_data.gz - $(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE ---- /dev/null -+++ b/kernel/crashlog.c -@@ -0,0 +1,213 @@ -+/* -+ * Crash information logger -+ * Copyright (C) 2010 Felix Fietkau -+ * -+ * Based on ramoops.c -+ * Copyright (C) 2010 Marco Stornelli -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * version 2 as published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -+ * 02110-1301 USA -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define CRASHLOG_PAGES 4 -+#define CRASHLOG_SIZE (CRASHLOG_PAGES * PAGE_SIZE) -+#define CRASHLOG_MAGIC 0xa1eedead -+ -+/* -+ * Start the log at 1M before the end of RAM, as some boot loaders like -+ * to use the end of the RAM for stack usage and other things -+ * If this fails, fall back to using the last part. -+ */ -+#define CRASHLOG_OFFSET (1024 * 1024) -+ -+struct crashlog_data { -+ u32 magic; -+ u32 len; -+ u8 data[]; -+}; -+ -+static struct debugfs_blob_wrapper crashlog_blob; -+static unsigned long crashlog_addr = 0; -+static struct crashlog_data *crashlog_buf; -+static struct kmsg_dumper dump; -+static bool first = true; -+ -+extern struct list_head *crashlog_modules; -+ -+static bool crashlog_set_addr(phys_addr_t addr, phys_addr_t size) -+{ -+ /* Limit to lower 64 MB to avoid highmem */ -+ phys_addr_t limit = 64 * 1024 * 1024; -+ -+ if (crashlog_addr) -+ return false; -+ -+ if (addr > limit) -+ return false; -+ -+ if (addr + size > limit) -+ size = limit - addr; -+ -+ crashlog_addr = addr; -+ -+ if (addr + size > CRASHLOG_OFFSET) -+ crashlog_addr += size - CRASHLOG_OFFSET; -+ -+ return true; -+} -+ -+#ifndef CONFIG_NO_BOOTMEM -+void __init crashlog_init_bootmem(bootmem_data_t *bdata) -+{ -+ phys_addr_t start, end; -+ -+ start = PFN_PHYS(bdata->node_low_pfn); -+ end = PFN_PHYS(bdata->node_min_pfn); -+ if (!crashlog_set_addr(start, end - start)) -+ return; -+ -+ if (reserve_bootmem(crashlog_addr, CRASHLOG_SIZE, BOOTMEM_EXCLUSIVE) < 0) { -+ printk("Crashlog failed to allocate RAM at address 0x%lx\n", -+ crashlog_addr); -+ crashlog_addr = 0; -+ } -+} -+#endif -+ -+#ifdef CONFIG_HAVE_MEMBLOCK -+void __init_memblock crashlog_init_memblock(phys_addr_t addr, phys_addr_t size) -+{ -+ if (!crashlog_set_addr(addr, size)) -+ return; -+ -+ if (memblock_reserve(crashlog_addr, CRASHLOG_SIZE)) { -+ printk("Crashlog failed to allocate RAM at address 0x%lx\n", -+ crashlog_addr); -+ crashlog_addr = 0; -+ } -+} -+#endif -+ -+static void __init crashlog_copy(void) -+{ -+ if (crashlog_buf->magic != CRASHLOG_MAGIC) -+ return; -+ -+ if (!crashlog_buf->len || crashlog_buf->len > -+ CRASHLOG_SIZE - sizeof(*crashlog_buf)) -+ return; -+ -+ crashlog_blob.size = crashlog_buf->len; -+ crashlog_blob.data = kmemdup(crashlog_buf->data, -+ crashlog_buf->len, GFP_KERNEL); -+ -+ debugfs_create_blob("crashlog", 0700, NULL, &crashlog_blob); -+} -+ -+static int get_maxlen(void) -+{ -+ return CRASHLOG_SIZE - sizeof(*crashlog_buf) - crashlog_buf->len; -+} -+ -+static void crashlog_printf(const char *fmt, ...) -+{ -+ va_list args; -+ int len = get_maxlen(); -+ -+ if (!len) -+ return; -+ -+ va_start(args, fmt); -+ crashlog_buf->len += vscnprintf( -+ &crashlog_buf->data[crashlog_buf->len], -+ len, fmt, args); -+ va_end(args); -+} -+ -+static void crashlog_do_dump(struct kmsg_dumper *dumper, -+ enum kmsg_dump_reason reason) -+{ -+ struct timeval tv; -+ struct module *m; -+ char *buf; -+ size_t len; -+ -+ if (!first) -+ crashlog_printf("\n===================================\n"); -+ -+ do_gettimeofday(&tv); -+ crashlog_printf("Time: %lu.%lu\n", -+ (long)tv.tv_sec, (long)tv.tv_usec); -+ -+ if (first) { -+ crashlog_printf("Modules:"); -+ list_for_each_entry(m, crashlog_modules, list) { -+ crashlog_printf("\t%s@%p+%x", m->name, -+ m->module_core, m->core_size, -+ m->module_init, m->init_size); -+ } -+ crashlog_printf("\n"); -+ first = false; -+ } -+ -+ buf = (char *)&crashlog_buf->data[crashlog_buf->len]; -+ -+ kmsg_dump_get_buffer(dumper, true, buf, get_maxlen(), &len); -+ -+ crashlog_buf->len += len; -+} -+ -+ -+int __init crashlog_init_fs(void) -+{ -+ struct page *pages[CRASHLOG_PAGES]; -+ pgprot_t prot; -+ int i; -+ -+ if (!crashlog_addr) { -+ printk("No memory allocated for crashlog\n"); -+ return -ENOMEM; -+ } -+ -+ printk("Crashlog allocated RAM at address 0x%lx\n", (unsigned long) crashlog_addr); -+ for (i = 0; i < CRASHLOG_PAGES; i++) -+ pages[i] = pfn_to_page((crashlog_addr >> PAGE_SHIFT) + i); -+ -+ prot = pgprot_writecombine(PAGE_KERNEL); -+ crashlog_buf = vmap(pages, CRASHLOG_PAGES, VM_MAP, prot); -+ -+ crashlog_copy(); -+ -+ crashlog_buf->magic = CRASHLOG_MAGIC; -+ crashlog_buf->len = 0; -+ -+ dump.max_reason = KMSG_DUMP_OOPS; -+ dump.dump = crashlog_do_dump; -+ kmsg_dump_register(&dump); -+ -+ return 0; -+} -+module_init(crashlog_init_fs); ---- a/kernel/module.c -+++ b/kernel/module.c -@@ -271,14 +271,17 @@ static void mod_update_bounds(struct mod - if (mod->init_size) - __mod_update_bounds(mod->module_init, mod->init_size); - } - - #ifdef CONFIG_KGDB_KDB - struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */ - #endif /* CONFIG_KGDB_KDB */ -+#ifdef CONFIG_CRASHLOG -+struct list_head *crashlog_modules = &modules; -+#endif - - static void module_assert_mutex(void) - { - lockdep_assert_held(&module_mutex); - } - - static void module_assert_mutex_or_preempt(void) ---- a/mm/bootmem.c -+++ b/mm/bootmem.c -@@ -11,14 +11,15 @@ - #include - #include - #include - #include - #include - #include - #include -+#include - #include - #include - #include - - #include - - #include "internal.h" -@@ -173,14 +174,15 @@ static unsigned long __init free_all_boo - { - struct page *page; - unsigned long *map, start, end, pages, cur, count = 0; - - if (!bdata->node_bootmem_map) - return 0; - -+ crashlog_init_bootmem(bdata); - map = bdata->node_bootmem_map; - start = bdata->node_min_pfn; - end = bdata->node_low_pfn; - - bdebug("nid=%td start=%lx end=%lx\n", - bdata - bootmem_node_data, start, end); - ---- a/mm/memblock.c -+++ b/mm/memblock.c -@@ -15,14 +15,15 @@ - #include - #include - #include - #include - #include - #include - #include -+#include - - #include - #include - - #include "internal.h" - - static struct memblock_region memblock_memory_init_regions[INIT_MEMBLOCK_REGIONS] __initdata_memblock; -@@ -498,14 +499,16 @@ static void __init_memblock memblock_ins - memmove(rgn + 1, rgn, (type->cnt - idx) * sizeof(*rgn)); - rgn->base = base; - rgn->size = size; - rgn->flags = flags; - memblock_set_region_node(rgn, nid); - type->cnt++; - type->total_size += size; -+ if (type == &memblock.memory) -+ crashlog_init_memblock(base, size); - } - - /** - * memblock_add_range - add new memblock region - * @type: memblock type to add new region into - * @base: base address of the new region - * @size: size of the new region -@@ -536,14 +539,16 @@ int __init_memblock memblock_add_range(s - if (type->regions[0].size == 0) { - WARN_ON(type->cnt != 1 || type->total_size); - type->regions[0].base = base; - type->regions[0].size = size; - type->regions[0].flags = flags; - memblock_set_region_node(&type->regions[0], nid); - type->total_size = size; -+ if (type == &memblock.memory) -+ crashlog_init_memblock(base, size); - return 0; - } - repeat: - /* - * The following is executed twice. Once with %false @insert and - * then with %true. The first counts the number of regions needed - * to accomodate the new area. The second actually inserts them. diff --git a/src/bases/udr-2.2.12/linux-patches/001-970-remove-unsane-filenames-from-deps_initramfs-list.patch b/src/bases/udr-2.2.12/linux-patches/001-970-remove-unsane-filenames-from-deps_initramfs-list.patch deleted file mode 100644 index f10a1fa..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-970-remove-unsane-filenames-from-deps_initramfs-list.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- a/usr/Makefile -+++ b/usr/Makefile -@@ -49,26 +49,28 @@ ramfs-args := \ - # in initramfs and to detect if any files are added/removed. - # Removed files are identified by directory timestamp being updated - # The dependency list is generated by gen_initramfs.sh -l - ifneq ($(wildcard $(obj)/.initramfs_data.cpio.d),) - include $(obj)/.initramfs_data.cpio.d - endif - -+deps_initramfs_sane := $(foreach v,$(deps_initramfs),$(if $(findstring :,$(v)),,$(v))) -+ - quiet_cmd_initfs = GEN $@ - cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input) - - targets := initramfs_data.cpio.gz initramfs_data.cpio.bz2 \ - initramfs_data.cpio.lzma initramfs_data.cpio.xz \ - initramfs_data.cpio.lzo initramfs_data.cpio.lz4 \ - initramfs_data.cpio - # do not try to update files included in initramfs --$(deps_initramfs): ; -+$(deps_initramfs_sane): ; - --$(deps_initramfs): klibcdirs -+$(deps_initramfs_sane): klibcdirs - # We rebuild initramfs_data.cpio if: - # 1) Any included file is newer then initramfs_data.cpio - # 2) There are changes in which files are included (added or deleted) - # 3) If gen_init_cpio are newer than initramfs_data.cpio - # 4) arguments to gen_initramfs.sh changes --$(obj)/initramfs_data.cpio$(suffix_y): $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs -+$(obj)/initramfs_data.cpio$(suffix_y): $(obj)/gen_init_cpio $(deps_initramfs_sane) klibcdirs - $(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.d - $(call if_changed,initfs) diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-fix-build-errors.patch b/src/bases/udr-2.2.12/linux-patches/001-999-fix-build-errors.patch deleted file mode 100644 index 503d448..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-fix-build-errors.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- a/drivers/cpufreq/cpufreq_interactive.c -+++ b/drivers/cpufreq/cpufreq_interactive.c -@@ -1017,28 +1017,28 @@ static ssize_t store_io_is_busy(struct c - /* - * Create show/store routines - * - sys: One governor instance for complete SYSTEM - * - pol: One governor instance per struct cpufreq_policy - */ - #define show_gov_pol_sys(file_name) \ - static ssize_t show_##file_name##_gov_sys \ --(struct kobject *kobj, struct attribute *attr, char *buf) \ -+(struct kobject *kobj, struct kobj_attribute *attr, char *buf) \ - { \ - return show_##file_name(common_tunables, buf); \ - } \ - \ - static ssize_t show_##file_name##_gov_pol \ - (struct cpufreq_policy *policy, char *buf) \ - { \ - return show_##file_name(policy->governor_data, buf); \ - } - - #define store_gov_pol_sys(file_name) \ - static ssize_t store_##file_name##_gov_sys \ --(struct kobject *kobj, struct attribute *attr, const char *buf, \ -+(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, \ - size_t count) \ - { \ - return store_##file_name(common_tunables, buf, count); \ - } \ - \ - static ssize_t store_##file_name##_gov_pol \ - (struct cpufreq_policy *policy, const char *buf, size_t count) \ diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-100-wireless-max-frequencies.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-100-wireless-max-frequencies.patch deleted file mode 100644 index d89df2b..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-100-wireless-max-frequencies.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/include/uapi/linux/wireless.h -+++ b/include/uapi/linux/wireless.h -@@ -417,15 +417,15 @@ - * Note : if the number of args is fixed and the size < 16 octets, - * instead of passing a pointer we will put args in the iwreq struct... - */ - - /* ----------------------- OTHER CONSTANTS ----------------------- */ - - /* Maximum frequencies in the range struct */ --#define IW_MAX_FREQUENCIES 32 -+#define IW_MAX_FREQUENCIES 255 - /* Note : if you have something like 80 frequencies, - * don't increase this constant and don't fill the frequency list. - * The user will be able to set by channel anyway... */ - - /* Maximum bit rates in the range struct */ - #define IW_MAX_BITRATES 32 - diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-104-disable-bql.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-104-disable-bql.patch deleted file mode 100644 index f9aee03..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-104-disable-bql.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/net/Kconfig -+++ b/net/Kconfig -@@ -274,15 +274,15 @@ config NET_RX_BUSY_POLL - bool - default y - - config BQL - bool - depends on SYSFS - select DQL -- default y -+ default n - - config BPF_JIT - bool "enable BPF Just In Time compiler" - depends on HAVE_BPF_JIT - depends on MODULES - ---help--- - Berkeley Packet Filter filtering capabilities are normally handled diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-106-ioctl-private-extension.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-106-ioctl-private-extension.patch deleted file mode 100644 index ad519fa..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-106-ioctl-private-extension.patch +++ /dev/null @@ -1,90 +0,0 @@ ---- a/include/uapi/linux/sockios.h -+++ b/include/uapi/linux/sockios.h -@@ -136,14 +136,15 @@ - * as their own. Because these are device dependent it is a good idea - * _NOT_ to issue them to random objects and hope. - * - * THESE IOCTLS ARE _DEPRECATED_ AND WILL DISAPPEAR IN 2.5.X -DaveM - */ - - #define SIOCDEVPRIVATE 0x89F0 /* to 89FF */ -+#define SIOC_PRIVATE_IOCTLS 0x100 - - /* - * These 16 ioctl calls are protocol private - */ - - #define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */ - #endif /* _LINUX_SOCKIOS_H */ ---- a/net/core/dev_ioctl.c -+++ b/net/core/dev_ioctl.c -@@ -314,15 +314,15 @@ static int dev_ifsioc(struct net *net, s - /* fall through */ - - /* - * Unknown or private ioctl - */ - default: - if ((cmd >= SIOCDEVPRIVATE && -- cmd <= SIOCDEVPRIVATE + 15) || -+ cmd <= SIOCDEVPRIVATE + SIOC_PRIVATE_IOCTLS) || - cmd == SIOCBONDENSLAVE || - cmd == SIOCBONDRELEASE || - cmd == SIOCBONDSETHWADDR || - cmd == SIOCBONDSLAVEINFOQUERY || - cmd == SIOCBONDINFOQUERY || - cmd == SIOCBONDCHANGEACTIVE || - cmd == SIOCGMIIPHY || -@@ -546,15 +546,15 @@ int dev_ioctl(struct net *net, unsigned - /* - * Unknown or private ioctl. - */ - default: - if (cmd == SIOCWANDEV || - cmd == SIOCGHWTSTAMP || - (cmd >= SIOCDEVPRIVATE && -- cmd <= SIOCDEVPRIVATE + 15)) { -+ cmd <= SIOCDEVPRIVATE + SIOC_PRIVATE_IOCTLS)) { - dev_load(net, ifr.ifr_name); - rtnl_lock(); - ret = dev_ifsioc(net, &ifr, cmd); - rtnl_unlock(); - if (!ret && copy_to_user(arg, &ifr, - sizeof(struct ifreq))) - ret = -EFAULT; ---- a/net/socket.c -+++ b/net/socket.c -@@ -893,15 +893,15 @@ static long sock_ioctl(struct file *file - void __user *argp = (void __user *)arg; - int pid, err; - struct net *net; - - sock = file->private_data; - sk = sock->sk; - net = sock_net(sk); -- if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15)) { -+ if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + SIOC_PRIVATE_IOCTLS)) { - err = dev_ioctl(net, cmd, argp); - } else - #ifdef CONFIG_WEXT_CORE - if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) { - err = dev_ioctl(net, cmd, argp); - } else - #endif -@@ -3067,15 +3067,15 @@ static int old_bridge_ioctl(compat_ulong - static int compat_sock_ioctl_trans(struct file *file, struct socket *sock, - unsigned int cmd, unsigned long arg) - { - void __user *argp = compat_ptr(arg); - struct sock *sk = sock->sk; - struct net *net = sock_net(sk); - -- if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15)) -+ if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + SIOC_PRIVATE_IOCTLS)) - return compat_ifr_data_ioctl(net, cmd, argp); - - switch (cmd) { - case SIOCSIFBR: - case SIOCGIFBR: - return old_bridge_ioctl(argp); - case SIOCGIFNAME: diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-107-reenable-slaved-netpoll.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-107-reenable-slaved-netpoll.patch deleted file mode 100644 index b461054..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-107-reenable-slaved-netpoll.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- a/net/core/netpoll.c -+++ b/net/core/netpoll.c -@@ -673,19 +673,21 @@ int netpoll_setup(struct netpoll *np) - if (!ndev) { - np_err(np, "%s doesn't exist, aborting\n", np->dev_name); - err = -ENODEV; - goto unlock; - } - dev_hold(ndev); - -+#if 0 - if (netdev_master_upper_dev_get(ndev)) { - np_err(np, "%s is a slave device, aborting\n", np->dev_name); - err = -EBUSY; - goto put; - } -+#endif - - if (!netif_running(ndev)) { - unsigned long atmost, atleast; - - np_info(np, "device %s not up yet, forcing it\n", np->dev_name); - - err = dev_open(ndev); diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-108-netconsole-id.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-108-netconsole-id.patch deleted file mode 100644 index bbc79a5..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-108-netconsole-id.patch +++ /dev/null @@ -1,56 +0,0 @@ ---- a/drivers/net/netconsole.c -+++ b/drivers/net/netconsole.c -@@ -840,28 +840,53 @@ static void write_ext_msg(struct console - spin_lock_irqsave(&target_list_lock, flags); - list_for_each_entry(nt, &target_list, list) - if (nt->extended && nt->enabled && netif_running(nt->np.dev)) - send_ext_msg_udp(nt, msg, len); - spin_unlock_irqrestore(&target_list_lock, flags); - } - -+static uint16_t random_id; -+static uint16_t (*ubnthal_get_systemid)(void) = NULL; -+static char netconsole_msg[270]; -+ - static void write_msg(struct console *con, const char *msg, unsigned int len) - { - int frag, left; - unsigned long flags; - struct netconsole_target *nt; - const char *tmp; - - if (oops_only && !oops_in_progress) - return; - /* Avoid taking lock and disabling interrupts unnecessarily */ - if (list_empty(&target_list)) - return; - -+ if (random_id == 0) -+ get_random_bytes(&random_id, 2); -+ -+ if (!ubnthal_get_systemid) { -+ const struct kernel_symbol *sym; -+ if ((sym = find_symbol("ubnthal_get_systemid", NULL, NULL, 1, 0))) { -+ ubnthal_get_systemid = (void *)sym->value; -+ } -+ } -+ - spin_lock_irqsave(&target_list_lock, flags); -+ -+ if (len <= sizeof(netconsole_msg) - 16) { -+ uint16_t systemid = 0; -+ -+ if (ubnthal_get_systemid) -+ systemid = ubnthal_get_systemid(); -+ len = sprintf(netconsole_msg, "{%04x %04x} %.*s", random_id, systemid, len, msg); -+ -+ msg = netconsole_msg; -+ } -+ - list_for_each_entry(nt, &target_list, list) { - if (!nt->extended && nt->enabled && netif_running(nt->np.dev)) { - /* - * We nest this inside the for-each-target loop above - * so that we're able to get as much logging out to - * at least one target if we die inside here, instead - * of unnecessarily keeping all targets in lock-step. diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-110-random_input_words.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-110-random_input_words.patch deleted file mode 100644 index 2ebdddb..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-110-random_input_words.patch +++ /dev/null @@ -1,62 +0,0 @@ ---- a/drivers/char/random.c -+++ b/drivers/char/random.c -@@ -962,14 +962,40 @@ void add_disk_randomness(struct gendisk - /* first major is 1, so we get >= 0x200 here */ - add_timer_randomness(disk->random, 0x100 + disk_devt(disk)); - trace_add_disk_randomness(disk_devt(disk), ENTROPY_BITS(&input_pool)); - } - EXPORT_SYMBOL_GPL(add_disk_randomness); - #endif - -+/* -+ * random_input_words - add bulk entropy to pool -+ * -+ * @buf: buffer to add -+ * @wordcount: number of __u32 words to add -+ * @ent_count: total amount of entropy (in bits) to credit -+ * -+ * this provides bulk input of entropy to the input pool -+ * -+ */ -+void random_input_words(__u32 *buf, size_t wordcount, int ent_count) -+{ -+ mix_pool_bytes(&input_pool, buf, wordcount * 4); -+ -+ credit_entropy_bits(&input_pool, ent_count); -+ -+ /* -+ * Wake up waiting processes if we have enough -+ * entropy. -+ */ -+ if (ENTROPY_BITS(&input_pool) >= random_read_wakeup_bits) -+ wake_up_interruptible(&random_read_wait); -+ -+} -+EXPORT_SYMBOL(random_input_words); -+ - /********************************************************************* - * - * Entropy extraction routines - * - *********************************************************************/ - - static ssize_t extract_entropy(struct entropy_store *r, void *buf, ---- a/include/linux/random.h -+++ b/include/linux/random.h -@@ -18,14 +18,16 @@ struct random_ready_callback { - }; - - extern void add_device_randomness(const void *, unsigned int); - extern void add_input_randomness(unsigned int type, unsigned int code, - unsigned int value); - extern void add_interrupt_randomness(int irq, int irq_flags); - -+extern void random_input_words(__u32 *buf, size_t wordcount, int ent_count); -+ - extern void get_random_bytes(void *buf, int nbytes); - extern int add_random_ready_callback(struct random_ready_callback *rdy); - extern void del_random_ready_callback(struct random_ready_callback *rdy); - extern void get_random_bytes_arch(void *buf, int nbytes); - void generate_random_uuid(unsigned char uuid_out[16]); - extern int random_int_secret_init(void); - diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-111-no-initramfs-ccache.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-111-no-initramfs-ccache.patch deleted file mode 100644 index 21fb423..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-111-no-initramfs-ccache.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/usr/Makefile -+++ b/usr/Makefile -@@ -1,14 +1,15 @@ - # - # kbuild file for usr/ - including initramfs image - # - - klibcdirs:; - PHONY += klibcdirs - -+export CCACHE_DISABLE=1 - - # Bzip2 - suffix_$(CONFIG_RD_BZIP2) = .bz2 - - # Lzma - suffix_$(CONFIG_RD_LZMA) = .lzma - diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-709-ledtrig-ext-makefile.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-709-ledtrig-ext-makefile.patch deleted file mode 100644 index ac6e210..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-709-ledtrig-ext-makefile.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- a/drivers/leds/trigger/Kconfig -+++ b/drivers/leds/trigger/Kconfig -@@ -122,8 +122,15 @@ config LEDS_TRIGGER_PANIC - help - This allows LEDs to be configured to blink on a kernel panic. - Enabling this option will allow to mark certain LEDs as panic indicators, - allowing to blink them on a kernel panic, even if they are set to - a different trigger. - If unsure, say Y. - -+config LEDS_TRIGGER_EXTERNAL -+ tristate "LED External Trigger" -+ depends on LEDS_TRIGGERS -+ help -+ This allows LEDs to be controlled by external trigger. -+ If unsure, say Y. -+ - endif # LEDS_TRIGGERS ---- a/drivers/leds/trigger/Makefile -+++ b/drivers/leds/trigger/Makefile -@@ -6,7 +6,8 @@ obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += - obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o - obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o - obj-$(CONFIG_LEDS_TRIGGER_CPU) += ledtrig-cpu.o - obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o - obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o - obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o - obj-$(CONFIG_LEDS_TRIGGER_PANIC) += ledtrig-panic.o -+obj-$(CONFIG_LEDS_TRIGGER_EXTERNAL) += ledtrig-ext.o diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-710-increase-wevent-size.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-710-increase-wevent-size.patch deleted file mode 100644 index a8094bc..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-710-increase-wevent-size.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/include/uapi/linux/wireless.h -+++ b/include/uapi/linux/wireless.h -@@ -546,15 +546,15 @@ - #define IW_SCAN_CAPA_CHANNEL 0x04 - #define IW_SCAN_CAPA_MODE 0x08 - #define IW_SCAN_CAPA_RATE 0x10 - #define IW_SCAN_CAPA_TYPE 0x20 - #define IW_SCAN_CAPA_TIME 0x40 - - /* Max number of char in custom event - use multiple of them if needed */ --#define IW_CUSTOM_MAX 256 /* In bytes */ -+#define IW_CUSTOM_MAX 2048 /* In bytes */ - - /* Generic information element */ - #define IW_GENERIC_IE_MAX 1024 - - /* MLME requests (SIOCSIWMLME / struct iw_mlme) */ - #define IW_MLME_DEAUTH 0 - #define IW_MLME_DISASSOC 1 diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-714-serial_core-magic-sysrq-serial-enable-password.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-714-serial_core-magic-sysrq-serial-enable-password.patch deleted file mode 100644 index d15215b..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-714-serial_core-magic-sysrq-serial-enable-password.patch +++ /dev/null @@ -1,48 +0,0 @@ ---- a/include/linux/serial_core.h -+++ b/include/linux/serial_core.h -@@ -156,14 +156,15 @@ struct uart_port { - unsigned int ignore_status_mask; /* driver specific */ - struct uart_state *state; /* pointer to parent state */ - struct uart_icount icount; /* statistics */ - - struct console *cons; /* struct console, if any */ - #if defined(CONFIG_SERIAL_CORE_CONSOLE) || defined(SUPPORT_SYSRQ) - unsigned long sysrq; /* sysrq timeout */ -+ unsigned int sysrq_pw_window[4]; /* sysrq password window */ - #endif - - /* flags must be updated while holding port mutex */ - upf_t flags; - - /* - * These flags must be equivalent to the flags defined in -@@ -429,15 +430,28 @@ extern void uart_insert_char(struct uart - - #ifdef SUPPORT_SYSRQ - static inline int - uart_handle_sysrq_char(struct uart_port *port, unsigned int ch) - { - if (port->sysrq) { - if (ch && time_before(jiffies, port->sysrq)) { -- handle_sysrq(ch); -+ // BREAK u BREAK b BREAK n BREAK t -+ if (port->sysrq_pw_window[0] == 117 && -+ port->sysrq_pw_window[1] == 98 && -+ port->sysrq_pw_window[2] == 110 && -+ port->sysrq_pw_window[3] == 116) { -+ handle_sysrq(ch); -+ } else { -+ unsigned int i; -+ -+ for (i = 0; i < 3; i++) -+ port->sysrq_pw_window[i] = port->sysrq_pw_window[i+1]; -+ -+ port->sysrq_pw_window[3] = ch; -+ } - port->sysrq = 0; - return 1; - } - port->sysrq = 0; - } - return 0; - } diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-715-fix-ble-disconnect-issue.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-715-fix-ble-disconnect-issue.patch deleted file mode 100644 index 9de1ad8..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-715-fix-ble-disconnect-issue.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/net/bluetooth/hci_event.c -+++ b/net/bluetooth/hci_event.c -@@ -4956,15 +4956,17 @@ static void hci_le_remote_feat_complete_ - !conn->out && ev->status == 0x1a) - status = 0x00; - else - status = ev->status; - - conn->state = BT_CONNECTED; - hci_connect_cfm(conn, status); -- hci_conn_drop(conn); -+ //WORKAROUND: The funciton cause ble slave disconnect after 2s when it connect to a master -+ //The older kernel doesn't do the following action. -+ //hci_conn_drop(conn); - } - } - - hci_dev_unlock(hdev); - } - - static void hci_le_ltk_request_evt(struct hci_dev *hdev, struct sk_buff *skb) diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-719-send-phy-event.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-719-send-phy-event.patch deleted file mode 100644 index 641771f..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-719-send-phy-event.patch +++ /dev/null @@ -1,81 +0,0 @@ ---- a/drivers/net/phy/phy.c -+++ b/drivers/net/phy/phy.c -@@ -31,15 +31,16 @@ - #include - #include - #include - #include - #include - #include - #include -- -+#include -+#include - #include - - static const char *phy_speed_to_str(int speed) - { - switch (speed) { - case SPEED_10: - return "10Mbps"; -@@ -1275,7 +1276,40 @@ EXPORT_SYMBOL(phy_ethtool_set_wol); - - void phy_ethtool_get_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol) - { - if (phydev->drv->get_wol) - phydev->drv->get_wol(phydev, wol); - } - EXPORT_SYMBOL(phy_ethtool_get_wol); -+ -+void ubnt_net_notify(void *net, int group, int nlmsgtype, -+ void *data, int size) -+{ -+ struct sk_buff *skb = NULL; -+ struct nlmsghdr *nlh = NULL; -+ struct phymsg *msg = NULL; -+ struct net *ndev = (struct net *)net; -+ int err = -ENOBUFS; -+ -+ skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); -+ if (!skb) -+ goto errout; -+ -+ nlh = nlmsg_put(skb, 0, 0, nlmsgtype, sizeof(struct phymsg), 0); -+ if (!nlh) { -+ err = -EMSGSIZE; -+ kfree_skb(skb); -+ goto errout; -+ } -+ -+ msg = nlmsg_data(nlh); -+ memcpy(msg, (struct phymsg *)data, sizeof(*msg)); -+ nlmsg_end(skb, nlh); -+ -+ rtnl_notify(skb, ndev, 0, group, NULL, GFP_ATOMIC); -+ return; -+errout: -+ if (err < 0) -+ rtnl_set_sk_err(ndev, RTNLGRP_NEIGH, err); -+} -+EXPORT_SYMBOL(ubnt_net_notify); -+ ---- a/include/linux/phy.h -+++ b/include/linux/phy.h -@@ -826,15 +826,16 @@ int phy_register_fixup_for_uid(u32 phy_u - int phy_init_eee(struct phy_device *phydev, bool clk_stop_enable); - int phy_get_eee_err(struct phy_device *phydev); - int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data); - int phy_ethtool_get_eee(struct phy_device *phydev, struct ethtool_eee *data); - int phy_ethtool_set_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol); - void phy_ethtool_get_wol(struct phy_device *phydev, - struct ethtool_wolinfo *wol); -- -+void ubnt_net_notify(void *net, int group, int nlmsgtype, -+ void *data, int size); - int __init mdio_bus_init(void); - void mdio_bus_exit(void); - - extern struct bus_type mdio_bus_type; - - /** - * module_phy_driver() - Helper macro for registering PHY drivers diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-721-bridge-log-fix.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-721-bridge-log-fix.patch deleted file mode 100644 index ab03e1c..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-721-bridge-log-fix.patch +++ /dev/null @@ -1,178 +0,0 @@ ---- a/net/bridge/br_netlink.c -+++ b/net/bridge/br_netlink.c -@@ -594,15 +594,14 @@ static int br_set_port_state(struct net_ - * if link is not present, only allowable state is disabled - */ - if (!netif_running(p->dev) || - (!netif_oper_up(p->dev) && state != BR_STATE_DISABLED)) - return -ENETDOWN; - - br_set_state(p, state); -- br_log_state(p); - br_port_state_selection(p->br); - return 0; - } - - /* Set/clear or port flags based on attribute */ - static void br_set_port_flag(struct net_bridge_port *p, struct nlattr *tb[], - int attrtype, unsigned long mask) ---- a/net/bridge/br_private.h -+++ b/net/bridge/br_private.h -@@ -912,15 +912,14 @@ void br_netfilter_rtable_init(struct net - #else - static inline int br_nf_core_init(void) { return 0; } - static inline void br_nf_core_fini(void) {} - #define br_netfilter_rtable_init(x) - #endif - - /* br_stp.c */ --void br_log_state(const struct net_bridge_port *p); - void br_set_state(struct net_bridge_port *p, unsigned int state); - struct net_bridge_port *br_get_port(struct net_bridge *br, u16 port_no); - void br_init_port(struct net_bridge_port *p); - void br_become_designated_port(struct net_bridge_port *p); - - void __br_set_forward_delay(struct net_bridge *br, unsigned long t); - int br_set_forward_delay(struct net_bridge *br, unsigned long x); ---- a/net/bridge/br_stp.c -+++ b/net/bridge/br_stp.c -@@ -26,35 +26,32 @@ static const char *const br_port_state_n - [BR_STATE_DISABLED] = "disabled", - [BR_STATE_LISTENING] = "listening", - [BR_STATE_LEARNING] = "learning", - [BR_STATE_FORWARDING] = "forwarding", - [BR_STATE_BLOCKING] = "blocking", - }; - --void br_log_state(const struct net_bridge_port *p) --{ -- br_info(p->br, "port %u(%s) entered %s state\n", -- (unsigned int) p->port_no, p->dev->name, -- br_port_state_names[p->state]); --} -- - void br_set_state(struct net_bridge_port *p, unsigned int state) - { - struct switchdev_attr attr = { - .id = SWITCHDEV_ATTR_ID_PORT_STP_STATE, - .flags = SWITCHDEV_F_DEFER, - .u.stp_state = state, - }; - int err; - - p->state = state; - err = switchdev_port_attr_set(p->dev, &attr); - if (err && err != -EOPNOTSUPP) - br_warn(p->br, "error setting offload STP state on port %u(%s)\n", - (unsigned int) p->port_no, p->dev->name); -+ else -+ br_info(p->br, "port %u(%s) entered %s state\n", -+ (unsigned int) p->port_no, p->dev->name, -+ br_port_state_names[p->state]); - } - - /* called under bridge lock */ - struct net_bridge_port *br_get_port(struct net_bridge *br, u16 port_no) - { - struct net_bridge_port *p; - -@@ -121,15 +118,14 @@ static void br_root_port_block(const str - struct net_bridge_port *p) - { - - br_notice(br, "port %u(%s) tried to become root port (blocked)", - (unsigned int) p->port_no, p->dev->name); - - br_set_state(p, BR_STATE_LISTENING); -- br_log_state(p); - br_ifinfo_notify(RTM_NEWLINK, p); - - if (br->forward_delay > 0) - mod_timer(&p->forward_delay_timer, jiffies + br->forward_delay); - } - - /* called under bridge lock */ -@@ -402,15 +398,14 @@ static void br_make_blocking(struct net_ - if (p->state != BR_STATE_DISABLED && - p->state != BR_STATE_BLOCKING) { - if (p->state == BR_STATE_FORWARDING || - p->state == BR_STATE_LEARNING) - br_topology_change_detection(p->br); - - br_set_state(p, BR_STATE_BLOCKING); -- br_log_state(p); - br_ifinfo_notify(RTM_NEWLINK, p); - - del_timer(&p->forward_delay_timer); - } - } - - /* called under bridge lock */ -@@ -426,15 +421,14 @@ static void br_make_forwarding(struct ne - br_topology_change_detection(br); - del_timer(&p->forward_delay_timer); - } else if (br->stp_enabled == BR_KERNEL_STP) - br_set_state(p, BR_STATE_LISTENING); - else - br_set_state(p, BR_STATE_LEARNING); - -- br_log_state(p); - br_ifinfo_notify(RTM_NEWLINK, p); - - if (br->forward_delay != 0) - mod_timer(&p->forward_delay_timer, jiffies + br->forward_delay); - } - - /* called under bridge lock */ ---- a/net/bridge/br_stp_if.c -+++ b/net/bridge/br_stp_if.c -@@ -97,15 +97,14 @@ void br_stp_disable_bridge(struct net_br - } - - /* called under bridge lock */ - void br_stp_enable_port(struct net_bridge_port *p) - { - br_init_port(p); - br_port_state_selection(p->br); -- br_log_state(p); - br_ifinfo_notify(RTM_NEWLINK, p); - } - - /* called under bridge lock */ - void br_stp_disable_port(struct net_bridge_port *p) - { - struct net_bridge *br = p->br; -@@ -113,15 +112,14 @@ void br_stp_disable_port(struct net_brid - - wasroot = br_is_root_bridge(br); - br_become_designated_port(p); - br_set_state(p, BR_STATE_DISABLED); - p->topology_change_ack = 0; - p->config_pending = 0; - -- br_log_state(p); - br_ifinfo_notify(RTM_NEWLINK, p); - - del_timer(&p->message_age_timer); - del_timer(&p->forward_delay_timer); - del_timer(&p->hold_timer); - - br_fdb_delete_by_port(br, p, 0, 0); ---- a/net/bridge/br_stp_timer.c -+++ b/net/bridge/br_stp_timer.c -@@ -94,15 +94,14 @@ static void br_forward_delay_timer_expir - jiffies + br->forward_delay); - } else if (p->state == BR_STATE_LEARNING) { - br_set_state(p, BR_STATE_FORWARDING); - if (br_is_designated_for_some_port(br)) - br_topology_change_detection(br); - netif_carrier_on(br->dev); - } -- br_log_state(p); - rcu_read_lock(); - br_ifinfo_notify(RTM_NEWLINK, p); - rcu_read_unlock(); - spin_unlock(&br->lock); - } - - static void br_tcn_timer_expired(unsigned long arg) diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-722-use-pfifo-by-default.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-722-use-pfifo-by-default.patch deleted file mode 100644 index b80c46b..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-722-use-pfifo-by-default.patch +++ /dev/null @@ -1,74 +0,0 @@ ---- a/net/sched/sch_generic.c -+++ b/net/sched/sch_generic.c -@@ -27,15 +27,15 @@ - #include - #include - #include - #include - #include - - /* Qdisc to use by default */ --const struct Qdisc_ops *default_qdisc_ops = &fq_codel_qdisc_ops; -+const struct Qdisc_ops *default_qdisc_ops = &pfifo_qdisc_ops; - EXPORT_SYMBOL(default_qdisc_ops); - - /* Main transmission queue. */ - - /* Modifications to data participating in scheduling must be protected with - * qdisc_lock(qdisc) spinlock. - * -@@ -594,15 +594,15 @@ struct Qdisc *dev_graft_qdisc(struct net - EXPORT_SYMBOL(dev_graft_qdisc); - - static void attach_one_default_qdisc(struct net_device *dev, - struct netdev_queue *dev_queue, - void *_unused) - { - struct Qdisc *qdisc; -- const struct Qdisc_ops *ops = &fq_codel_qdisc_ops; -+ const struct Qdisc_ops *ops = default_qdisc_ops; - - if (dev->priv_flags & IFF_NO_QUEUE) - ops = &noqueue_qdisc_ops; - - qdisc = qdisc_create_dflt(dev_queue, ops, TC_H_ROOT); - if (!qdisc) { - netdev_info(dev, "activation failed\n"); ---- a/net/sched/sch_mq.c -+++ b/net/sched/sch_mq.c -@@ -53,15 +53,15 @@ static int mq_init(struct Qdisc *sch, st - priv->qdiscs = kcalloc(dev->num_tx_queues, sizeof(priv->qdiscs[0]), - GFP_KERNEL); - if (!priv->qdiscs) - return -ENOMEM; - - for (ntx = 0; ntx < dev->num_tx_queues; ntx++) { - dev_queue = netdev_get_tx_queue(dev, ntx); -- qdisc = qdisc_create_dflt(dev_queue, &fq_codel_qdisc_ops, -+ qdisc = qdisc_create_dflt(dev_queue, default_qdisc_ops, - TC_H_MAKE(TC_H_MAJ(sch->handle), - TC_H_MIN(ntx + 1))); - if (!qdisc) - return -ENOMEM; - priv->qdiscs[ntx] = qdisc; - qdisc->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; - } ---- a/net/sched/sch_mqprio.c -+++ b/net/sched/sch_mqprio.c -@@ -118,15 +118,15 @@ static int mqprio_init(struct Qdisc *sch - priv->qdiscs = kcalloc(dev->num_tx_queues, sizeof(priv->qdiscs[0]), - GFP_KERNEL); - if (!priv->qdiscs) - return -ENOMEM; - - for (i = 0; i < dev->num_tx_queues; i++) { - dev_queue = netdev_get_tx_queue(dev, i); -- qdisc = qdisc_create_dflt(dev_queue, &fq_codel_qdisc_ops, -+ qdisc = qdisc_create_dflt(dev_queue, default_qdisc_ops, - TC_H_MAKE(TC_H_MAJ(sch->handle), - TC_H_MIN(i + 1))); - if (!qdisc) - return -ENOMEM; - - priv->qdiscs[i] = qdisc; - qdisc->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-728-ifindex-cache.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-728-ifindex-cache.patch deleted file mode 100644 index d356579..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-728-ifindex-cache.patch +++ /dev/null @@ -1,258 +0,0 @@ ---- a/include/net/net_namespace.h -+++ b/include/net/net_namespace.h -@@ -40,14 +40,21 @@ struct net_generic; - struct sock; - struct netns_ipvs; - - - #define NETDEV_HASHBITS 8 - #define NETDEV_HASHENTRIES (1 << NETDEV_HASHBITS) - -+#define DCN_IFNAMSIZ 16 -+struct dev_cache_node { -+ char name[DCN_IFNAMSIZ]; -+ struct hlist_node name_hlist; -+ int ifindex; -+}; -+ - struct net { - atomic_t passive; /* To decided when the network - * namespace should be freed. - */ - atomic_t count; /* To decided when the network - * namespace should be shut down. - */ -@@ -75,14 +82,15 @@ struct net { - - struct sock *rtnl; /* rtnetlink socket */ - struct sock *genl_sock; - - struct list_head dev_base_head; - struct hlist_head *dev_name_head; - struct hlist_head *dev_index_head; -+ struct hlist_head *dev_cache_head; - unsigned int dev_base_seq; /* protected by rtnl_mutex */ - int ifindex; - unsigned int dev_unreg_count; - - /* core fib_rules */ - struct list_head rules_ops; - ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -200,14 +200,21 @@ static inline struct hlist_head *dev_nam - } - - static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex) - { - return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; - } - -+static inline struct hlist_head *dev_cache_hash(struct net *net, char *name) -+{ -+ unsigned int hash = full_name_hash(name, strnlen(name, IFNAMSIZ)); -+ -+ return &net->dev_cache_head[hash_32(hash, NETDEV_HASHBITS)]; -+} -+ - static inline void rps_lock(struct softnet_data *sd) - { - #ifdef CONFIG_RPS - spin_lock(&sd->input_pkt_queue.lock); - #endif - } - -@@ -6334,30 +6341,111 @@ int dev_change_proto_down(struct net_dev - return -EOPNOTSUPP; - if (!netif_device_present(dev)) - return -ENODEV; - return ops->ndo_change_proto_down(dev, proto_down); - } - EXPORT_SYMBOL(dev_change_proto_down); - -+static int dev_cache_index(struct net *net, struct net_device *dev) -+{ -+ struct dev_cache_node *cache; -+ struct hlist_head *head = dev_cache_hash(net, dev->name); -+ hlist_for_each_entry(cache, head, name_hlist) -+ if (!strncmp(cache->name, dev->name, IFNAMSIZ)) { -+ return cache->ifindex; -+ } -+ -+ return 0; -+} -+ -+static void free_dev_cache(struct net *net) -+{ -+ struct dev_cache_node *cache; -+ struct hlist_node *node; -+ int i; -+ -+ ASSERT_RTNL(); -+ -+ write_lock_bh(&dev_base_lock); -+ for (i = 0; i < NETDEV_HASHENTRIES; i++) { -+ hlist_for_each_entry_safe(cache, node, &net->dev_cache_head[i], name_hlist) { -+ hlist_del_rcu(&cache->name_hlist); -+ kfree(cache); -+ } -+ } -+ write_unlock_bh(&dev_base_lock); -+} -+ -+static int new_cache_index(struct net *net, struct net_device *dev, int ifindex) -+{ -+ struct dev_cache_node *cache; -+ int cache_ifindex; -+ -+ cache_ifindex = dev_cache_index(net, dev); -+ if (cache_ifindex) { -+ printk("%s: assigned cached ifindex: %d\n", dev->name, cache_ifindex); -+ return cache_ifindex; -+ } -+ -+ ASSERT_RTNL(); -+ -+ write_lock_bh(&dev_base_lock); -+ cache = kmalloc(sizeof(*cache), GFP_KERNEL); -+ if (!cache) { -+ printk("%s: unable to cache ifindex of %d (ENOMEM)\n", dev->name, ifindex); -+ goto out; -+ } -+ -+ strlcpy(cache->name, dev->name, IFNAMSIZ); -+ cache->ifindex = ifindex; -+ -+ /* ensure no race */ -+ cache_ifindex = dev_cache_index(net, dev); -+ if (cache_ifindex != 0) { -+ kfree(cache); -+ ifindex = cache_ifindex; -+ printk("%s: (race) assigned ifindex: %d\n", dev->name, ifindex); -+ goto out; -+ } -+ -+ hlist_add_head_rcu(&cache->name_hlist, dev_cache_hash(net, dev->name)); -+ -+ printk("%s: assigned ifindex: %d\n", dev->name, ifindex); -+ -+out: -+ write_unlock_bh(&dev_base_lock); -+ return ifindex; -+} -+ - /** - * dev_new_index - allocate an ifindex - * @net: the applicable net namespace - * - * Returns a suitable unique value for a new device interface - * number. The caller must hold the rtnl semaphore or the - * dev_base_lock to be sure it remains unique. - */ --static int dev_new_index(struct net *net) -+static int dev_new_index(struct net *net, struct net_device *dev) - { - int ifindex = net->ifindex; -+ int new_ifindex; - for (;;) { -- if (++ifindex <= 0) -- ifindex = 1; -- if (!__dev_get_by_index(net, ifindex)) -- return net->ifindex = ifindex; -+ if (++ifindex <= 0) { -+ /* wraparound with cached interfaces means a deadlock. BUG out here */ -+ BUG(); -+ } -+ if (!__dev_get_by_index(net, ifindex)) { -+ new_ifindex = new_cache_index(net, dev, ifindex); -+ -+ /* update net->ifindex only if we used that ifindex (otherwise a cached version was returned) */ -+ if (new_ifindex == ifindex) -+ net->ifindex = ifindex; -+ -+ return new_ifindex; -+ } - } - } - - /* Delayed registration/unregisteration */ - static LIST_HEAD(net_todo_list); - DECLARE_WAIT_QUEUE_HEAD(netdev_unregistering_wq); - -@@ -6816,15 +6904,15 @@ int register_netdevice(struct net_device - netdev_WARN(dev, "Buggy VLAN acceleration in driver!\n"); - ret = -EINVAL; - goto err_uninit; - } - - ret = -EBUSY; - if (!dev->ifindex) -- dev->ifindex = dev_new_index(net); -+ dev->ifindex = dev_new_index(net, dev); - else if (__dev_get_by_index(net, dev->ifindex)) - goto err_uninit; - - /* Transfer changeable features to wanted_features and enable - * software offloads (GSO and GRO). - */ - dev->hw_features |= NETIF_F_SOFT_FEATURES; -@@ -7541,15 +7629,15 @@ int dev_change_net_namespace(struct net_ - netdev_adjacent_del_links(dev); - - /* Actually switch the network namespace */ - dev_net_set(dev, net); - - /* If there is an ifindex conflict assign a new one */ - if (__dev_get_by_index(net, dev->ifindex)) -- dev->ifindex = dev_new_index(net); -+ dev->ifindex = dev_new_index(net, dev); - - /* Send a netdev-add uevent to the new namespace */ - kobject_uevent(&dev->dev.kobj, KOBJ_ADD); - netdev_adjacent_add_links(dev); - - /* Fixup kobjects */ - err = device_rename(&dev->dev, dev->name); -@@ -7690,16 +7778,22 @@ static int __net_init netdev_init(struct - if (net->dev_name_head == NULL) - goto err_name; - - net->dev_index_head = netdev_create_hash(); - if (net->dev_index_head == NULL) - goto err_idx; - -+ net->dev_cache_head = netdev_create_hash(); -+ if (net->dev_cache_head == NULL) -+ goto err_cache; -+ - return 0; - -+err_cache: -+ kfree(net->dev_index_head); - err_idx: - kfree(net->dev_name_head); - err_name: - return -ENOMEM; - } - - /** -@@ -7785,14 +7879,19 @@ define_netdev_printk_level(netdev_warn, - define_netdev_printk_level(netdev_notice, KERN_NOTICE); - define_netdev_printk_level(netdev_info, KERN_INFO); - - static void __net_exit netdev_exit(struct net *net) - { - kfree(net->dev_name_head); - kfree(net->dev_index_head); -+ -+ rtnl_lock(); -+ free_dev_cache(net); -+ rtnl_unlock(); -+ kfree(net->dev_cache_head); - } - - static struct pernet_operations __net_initdata netdev_net_ops = { - .init = netdev_init, - .exit = netdev_exit, - }; - diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-729-cve-2019-8912.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-729-cve-2019-8912.patch deleted file mode 100644 index af36ca7..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-729-cve-2019-8912.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/crypto/af_alg.c -+++ b/crypto/af_alg.c -@@ -117,16 +117,18 @@ static void alg_do_release(const struct - - type->release(private); - module_put(type->owner); - } - - int af_alg_release(struct socket *sock) - { -- if (sock->sk) -+ if (sock->sk) { - sock_put(sock->sk); -+ sock->sk = NULL; -+ } - return 0; - } - EXPORT_SYMBOL_GPL(af_alg_release); - - void af_alg_release_parent(struct sock *sk) - { - struct alg_sock *ask = alg_sk(sk); diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-730-add-memory-double-free-detection.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-730-add-memory-double-free-detection.patch deleted file mode 100644 index e4b1f8a..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-730-add-memory-double-free-detection.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/mm/slub.c -+++ b/mm/slub.c -@@ -252,14 +252,15 @@ static inline void *get_freepointer_safe - p = get_freepointer(s, object); - #endif - return p; - } - - static inline void set_freepointer(struct kmem_cache *s, void *object, void *fp) - { -+ BUG_ON(object == fp); - *(void **)(object + s->offset) = fp; - } - - /* Loop over all objects in a slab */ - #define for_each_object(__p, __s, __addr, __objects) \ - for (__p = fixup_red_left(__s, __addr); \ - __p < (__addr) + (__objects) * (__s)->size; \ diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-747-remove-warn-log.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-747-remove-warn-log.patch deleted file mode 100644 index aae9b5e..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-747-remove-warn-log.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -3237,16 +3237,14 @@ static int __dev_queue_xmit(struct sk_bu - __this_cpu_dec(xmit_recursion); - if (dev_xmit_complete(rc)) { - HARD_TX_UNLOCK(dev, txq); - goto out; - } - } - HARD_TX_UNLOCK(dev, txq); -- net_crit_ratelimited("Virtual device %s asks to queue packet!\n", -- dev->name); - } else { - /* Recursion is detected! It is possible, - * unfortunately - */ - recursion_alert: - net_crit_ratelimited("Dead loop on virtual device %s, fix it urgently!\n", - dev->name); diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-748-encrypt-netconsole.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-748-encrypt-netconsole.patch deleted file mode 100644 index 80c110f..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-748-encrypt-netconsole.patch +++ /dev/null @@ -1,589 +0,0 @@ ---- a/crypto/blkcipher.c -+++ b/crypto/blkcipher.c -@@ -318,17 +318,14 @@ int blkcipher_walk_phys(struct blkcipher - return blkcipher_walk_first(desc, walk); - } - EXPORT_SYMBOL_GPL(blkcipher_walk_phys); - - static int blkcipher_walk_first(struct blkcipher_desc *desc, - struct blkcipher_walk *walk) - { -- if (WARN_ON_ONCE(in_irq())) -- return -EDEADLK; -- - walk->iv = desc->info; - walk->nbytes = walk->total; - if (unlikely(!walk->total)) - return 0; - - walk->buffer = NULL; - if (unlikely(((unsigned long)walk->iv & walk->alignmask))) { ---- a/drivers/net/netconsole.c -+++ b/drivers/net/netconsole.c -@@ -44,14 +44,16 @@ - #include - #include - #include - #include - #include - #include - #include -+#include -+#include - - MODULE_AUTHOR("Maintainer: Matt Mackall "); - MODULE_DESCRIPTION("Console driver for network interfaces"); - MODULE_LICENSE("GPL"); - - #define MAX_PARAM_LENGTH 256 - #define MAX_PRINT_CHUNK 1000 -@@ -840,14 +842,274 @@ static void write_ext_msg(struct console - spin_lock_irqsave(&target_list_lock, flags); - list_for_each_entry(nt, &target_list, list) - if (nt->extended && nt->enabled && netif_running(nt->np.dev)) - send_ext_msg_udp(nt, msg, len); - spin_unlock_irqrestore(&target_list_lock, flags); - } - -+struct crypto_wait g_ui_result; -+static int g_ui_encrypt_inited = 0; -+static struct crypto_aead *g_ptr_tfm = NULL; -+static struct aead_request *g_ptr_req = NULL; -+static ui_aad_t *g_gcm_aad = NULL; -+ -+static void cipher_work_done(struct crypto_async_request *req, int error) -+{ -+ struct crypto_wait *result = (struct crypto_wait*)req->data; -+#ifdef UI_ENCRYPT_DEBUG -+ static int once = 0; -+#endif -+ if (error == -EINPROGRESS) -+ return; -+ -+#ifdef UI_ENCRYPT_DEBUG -+ if (!once) { -+ UI_ENCRYPT_DEBUG_PRINT("\n"); -+ once = 1; -+ } -+#endif -+ complete(&result->completion); -+} -+ -+static void ui_bump_gcm_iv(void) -+{ -+ int i; -+ for (i = sizeof(g_gcm_aad->iv) - 1; i >= 0; i--) { -+ g_gcm_aad->iv[i] += 1; -+ if (g_gcm_aad->iv[i] != 0) -+ break; -+ } -+} -+ -+static int ui_init_crypt(u8 *key, u8 *hashid) -+{ -+ int ret; -+ -+ /* Init transformation object and request object */ -+ g_ptr_tfm = crypto_alloc_aead("gcm(aes)", 0, 0); -+ if (IS_ERR(g_ptr_tfm)) { -+ return PTR_ERR(g_ptr_tfm); -+ } -+ crypto_init_wait(&g_ui_result); -+ g_ptr_req = aead_request_alloc(g_ptr_tfm, GFP_KERNEL); -+ if (IS_ERR(g_ptr_req)) { -+ crypto_free_aead(g_ptr_tfm); -+ return PTR_ERR(g_ptr_req); -+ } -+ aead_request_set_callback(g_ptr_req, CRYPTO_TFM_REQ_MAY_BACKLOG, -+ cipher_work_done, &g_ui_result); -+ /* Init set_authsize generate IV */ -+ /* Init g_gcm_aad Data -+ * A. Magic Number Version Flags -+ * B. add hashid */ -+ crypto_aead_clear_flags(g_ptr_tfm, ~0); -+ -+ ret = crypto_aead_setkey(g_ptr_tfm, key, UI_ENCRYPT_KEY_LENGTH); -+ UI_ENCRYPT_DEBUG_PRINT("setkey ret:%d\n", ret); -+ -+ ret = crypto_aead_setauthsize(g_ptr_tfm, UI_ENCRYPT_AUTH_TAG_LENGTH); -+ UI_ENCRYPT_DEBUG_PRINT("setauthsize ret:%d\n", ret); -+ -+ /* kernel crypto AES GCM uses a fixed 12-byte (96-bit) IV. */ -+ if (crypto_aead_ivsize(g_ptr_tfm) != UI_ENCRYPT_IV_LENGTH) { -+ goto fail; -+ } -+ -+ /* Init and add hashid to g_gcm_aad */ -+ g_gcm_aad = kmalloc(sizeof(*g_gcm_aad), GFP_KERNEL); -+ if (!g_gcm_aad) { -+ goto fail; -+ } -+ g_gcm_aad->magic[0] = UI_ENCRYPT_MAGIC >> 24 & 0xFF; -+ g_gcm_aad->magic[1] = UI_ENCRYPT_MAGIC >> 16 & 0xFF; -+ g_gcm_aad->magic[2] = UI_ENCRYPT_MAGIC >> 8 & 0xFF; -+ g_gcm_aad->magic[3] = UI_ENCRYPT_MAGIC & 0xFF; -+ g_gcm_aad->version = UI_ENCRYPT_VERSION; -+ g_gcm_aad->flags[0] = 0; -+ g_gcm_aad->flags[1] = 0; -+ g_gcm_aad->flags[2] = 0; -+ g_gcm_aad->flags[3] = UI_ENCRYPT_ENABLE_FLAG; -+ -+ memcpy(g_gcm_aad->hashid, hashid, sizeof(g_gcm_aad->hashid)); -+ /* Initialize the IV */ -+ get_random_bytes(g_gcm_aad->iv, sizeof(g_gcm_aad->iv)); -+ -+ -+ aead_request_set_ad(g_ptr_req, sizeof(*g_gcm_aad)); -+ -+#ifndef UI_ENCRYPT_DEBUG -+ /* Hold off enabling encrypting to allow the print debug to happen -+ * prior to encrypting it is enabled in decrypt when debug is on */ -+ g_ui_encrypt_inited = 1; -+#endif -+ -+ return 0; -+ -+fail: -+ if (g_gcm_aad) { -+ kfree(g_gcm_aad); -+ g_gcm_aad = NULL; -+ } -+ if (g_ptr_req) { -+ aead_request_free(g_ptr_req); -+ g_ptr_req = NULL; -+ } -+ if (g_ptr_tfm) { -+ crypto_free_aead(g_ptr_tfm); -+ g_ptr_tfm = NULL; -+ } -+ return -1; -+} -+ -+static int ui_encrypt(const char *plaindata, unsigned int len_in, unsigned char **cipherdata, int *cipherdata_len) -+{ -+ struct scatterlist plaintext[2]; -+ struct scatterlist ciphertext; -+ char *plaindata_buf = NULL; -+ int rc = -1; -+#ifdef UI_ENCRYPT_DEBUG -+ int ii; -+ static int once = 0; -+#endif -+ -+ if (!plaindata || !cipherdata || !cipherdata_len) { -+ return -1; -+ } -+ *cipherdata_len = sizeof(*g_gcm_aad) + len_in + UI_ENCRYPT_AUTH_TAG_LENGTH; -+ *cipherdata = kmalloc(*cipherdata_len, GFP_ATOMIC); -+ if (!*cipherdata) { -+ goto fail; -+ } -+ -+ /* ARM especially on the UAP-HD wants all sg buffers to be in low memory */ -+ plaindata_buf = kmalloc(len_in, GFP_ATOMIC); -+ if (!plaindata_buf) { -+ goto fail; -+ } -+ -+ ui_bump_gcm_iv(); -+ -+ memcpy(*cipherdata, g_gcm_aad, sizeof(*g_gcm_aad)); -+ memcpy(plaindata_buf, plaindata, len_in); -+ -+ /* Src AAD | plaindata */ -+ sg_init_table(plaintext, 2); -+ sg_set_buf(&plaintext[0], g_gcm_aad, sizeof(*g_gcm_aad)); -+ sg_set_buf(&plaintext[1], plaindata_buf, len_in); -+ -+ /* Dst AAD | cipherdata | Auth Tag -+ * Note: aead encryption adds authentication tag (UI_ENCRYPT_AUTH_TAG_LENGTH bytes) -+ * at end of cipherdata. The decrypt will need this. -+ * &sg, buffer, ptbuflen + (encrypt ? authsize : 0) */ -+ sg_init_one(&ciphertext, *cipherdata, *cipherdata_len); -+ -+#ifdef UI_ENCRYPT_DEBUG -+ if (!once) { -+ UI_ENCRYPT_DEBUG_PRINT("g_gcm_aad:%p plaindata:%p ciphertext:%p\n", -+ g_gcm_aad, plaindata, *cipherdata); -+ for (ii = 0; ii < 2; ii++) { -+ UI_ENCRYPT_DEBUG_PRINT("in %d pl:%lx off:%x len:%x addr:%x\n", ii, -+ plaintext[ii].page_link, -+ plaintext[ii].offset, -+ plaintext[ii].length, -+ plaintext[ii].dma_address); -+ } -+ UI_ENCRYPT_DEBUG_PRINT("plaintext in: %s\n", plaindata); -+ UI_ENCRYPT_DEBUG_PRINT("out 0 pl:%lx off:%x len:%x addr:%x\n", -+ ciphertext.page_link, -+ ciphertext.offset, -+ ciphertext.length, -+ ciphertext.dma_address); -+ -+ /* only print on the first pass */ -+ once = 1; -+ } -+#endif -+ -+ /* This was done in ui_init_crypt and we reuse the g_ptr_req: -+ * aead_request_set_ad(g_ptr_req, sizeof(*g_gcm_aad)); */ -+ aead_request_set_crypt(g_ptr_req, plaintext, &ciphertext, len_in, g_gcm_aad->iv); -+ -+ rc = crypto_wait_req(crypto_aead_encrypt(g_ptr_req), &g_ui_result); -+ kfree(plaindata_buf); -+ if (rc == 0) { -+ return 0; -+ } -+ -+fail: -+ if (*cipherdata) { -+ kfree(*cipherdata); -+ *cipherdata = NULL; -+ } -+ *cipherdata_len = 0; -+ return rc; -+} -+ -+static int ui_send_encrypted(struct netpoll *np, const char *plaindata, unsigned int len_in) -+{ -+ int rc = 0; -+ u8 *cipher_out = NULL; -+ int cipher_out_len = 0; -+ -+ if (!g_ui_encrypt_inited) -+ return -1; -+ -+ rc = ui_encrypt(plaindata, len_in, &cipher_out, &cipher_out_len); -+ if (rc == 0) { -+ netpoll_send_udp(np, cipher_out, cipher_out_len); -+ kfree(cipher_out); -+ } -+ -+ return rc; -+} -+ -+#ifdef UI_ENCRYPT_DEBUG -+static int ui_decrypt(u8 *cipherdata, int cipherlen) -+{ -+ struct scatterlist plaintext; -+ struct scatterlist ciphertext; -+ int ret; -+ unsigned char *plaindata2 = NULL; -+ int plainlen2 = cipherlen - UI_ENCRYPT_AUTH_TAG_LENGTH; -+ -+ plaindata2 = kmalloc(plainlen2, GFP_KERNEL); -+ if (!plaindata2) { -+ return -1; -+ } -+ -+ UI_ENCRYPT_DEBUG_DUMP("cipherdata aad: ", DUMP_PREFIX_NONE, cipherdata, sizeof(*g_gcm_aad)); -+ -+ /* Src AAD | cipherdata | AuthTag (UI_ENCRYPT_AUTH_TAG_LENGTH) */ -+ sg_init_one(&ciphertext, cipherdata, cipherlen); -+ /* Dst must include space for AAD */ -+ sg_init_one(&plaintext, plaindata2, plainlen2); -+ -+ /* We are reusing the req so this only needs to be set once: -+ * aead_request_set_ad(g_ptr_req, sizeof(*g_gcm_aad)); */ -+ -+ aead_request_set_crypt(g_ptr_req, &ciphertext, &plaintext, -+ cipherlen - sizeof(*g_gcm_aad), g_gcm_aad->iv); -+ UI_ENCRYPT_DEBUG_PRINT("plaindata2:%p\n", plaindata2); -+ ret = crypto_aead_decrypt(g_ptr_req); -+ UI_ENCRYPT_DEBUG_PRINT("crypto_aead_decrypt ret:%d\n", ret); -+ /* compare plaintexts */ -+ if (ret == 0) { -+ UI_ENCRYPT_DEBUG_PRINT("decrypted string: %s\n", plaindata2 + sizeof(*g_gcm_aad)); -+ } else { -+ UI_ENCRYPT_DEBUG_PRINT("decrypt failed\n"); -+ } -+ if (plaindata2) { -+ kfree(plaindata2); -+ } -+ /* We delay the init flag setting in debug to allow for prints */ -+ g_ui_encrypt_inited = 1; -+ return ret; -+} -+#endif -+ - static uint16_t random_id; - static uint16_t (*ubnthal_get_systemid)(void) = NULL; - static char netconsole_msg[270]; - - static void write_msg(struct console *con, const char *msg, unsigned int len) - { - int frag, left; -@@ -890,15 +1152,19 @@ static void write_msg(struct console *co - * so that we're able to get as much logging out to - * at least one target if we die inside here, instead - * of unnecessarily keeping all targets in lock-step. - */ - tmp = msg; - for (left = len; left;) { - frag = min(left, MAX_PRINT_CHUNK); -- netpoll_send_udp(&nt->np, tmp, frag); -+ if (nt->np.encrypt) { -+ ui_send_encrypted(&nt->np, tmp, frag); -+ } else { -+ netpoll_send_udp(&nt->np, tmp, frag); -+ } - tmp += frag; - left -= frag; - } - } - } - spin_unlock_irqrestore(&target_list_lock, flags); - } -@@ -918,17 +1184,25 @@ static struct console netconsole = { - static int __init init_netconsole(void) - { - int err; - struct netconsole_target *nt, *tmp; - unsigned long flags; - char *target_config; - char *input = config; -+#ifdef UI_ENCRYPT_DEBUG -+ const char testbuf[] = "This is a test!"; -+ u8 *cipher = NULL; -+ int cipherdata_len = 0; -+ ui_aad_t * cipher_aad; -+ int ret; -+#endif - - if (strnlen(input, MAX_PARAM_LENGTH)) { - while ((target_config = strsep(&input, ";"))) { -+ UI_ENCRYPT_DEBUG_PRINT("target_config:%s\n", target_config); - nt = alloc_param_target(target_config); - if (IS_ERR(nt)) { - err = PTR_ERR(nt); - goto fail; - } - /* Dump existing printks when we register */ - if (nt->extended) -@@ -939,14 +1213,38 @@ static int __init init_netconsole(void) - - spin_lock_irqsave(&target_list_lock, flags); - list_add(&nt->list, &target_list); - spin_unlock_irqrestore(&target_list_lock, flags); - } - } - -+ if (nt->np.encrypt) { -+ ui_init_crypt(nt->np.gcm_keyval, nt->np.hashid); -+#ifdef UI_ENCRYPT_DEBUG -+ -+ UI_ENCRYPT_DEBUG_PRINT("perform test encryption and decryption\n"); -+ ret = ui_encrypt(testbuf, sizeof(testbuf), &cipher, &cipherdata_len); -+ UI_ENCRYPT_DEBUG_PRINT("ret:%d plainlen:%d cipher:%p ciph_len:%d\n", -+ ret, sizeof(testbuf), cipher, cipherdata_len); -+ UI_ENCRYPT_DEBUG_DUMP("cipher: ", DUMP_PREFIX_NONE, cipher, cipherdata_len); -+ -+ cipher_aad = (ui_aad_t *)cipher; -+ ret = ui_decrypt(cipher, cipherdata_len); -+ UI_ENCRYPT_DEBUG_PRINT("ui_decrypt ret:%d\n", ret); -+ cipher_aad->iv[UI_ENCRYPT_IV_LENGTH-1] += 55; -+ ret = ui_decrypt(cipher, cipherdata_len); -+ UI_ENCRYPT_DEBUG_PRINT("ui_decrypt modified gcm_iv LSB ret:%d\n", ret); -+ cipher_aad->iv[UI_ENCRYPT_IV_LENGTH-1] -= 55; -+ cipher_aad->iv[7] += 55; -+ ret = ui_decrypt(cipher, cipherdata_len); -+ UI_ENCRYPT_DEBUG_PRINT("ui_decrypt modified gcm_iv [7] ret:%d\n", ret); -+ kfree(cipher); -+#endif -+ } -+ - err = register_netdevice_notifier(&netconsole_netdev_notifier); - if (err) - goto fail; - - err = dynamic_netconsole_init(); - if (err) - goto undonotifier; -@@ -960,14 +1258,25 @@ static int __init init_netconsole(void) - - undonotifier: - unregister_netdevice_notifier(&netconsole_netdev_notifier); - - fail: - pr_err("cleaning up\n"); - -+ g_ui_encrypt_inited = 0; -+ if (g_gcm_aad) { -+ kfree(g_gcm_aad); -+ } -+ if (g_ptr_req) { -+ aead_request_free(g_ptr_req); -+ } -+ if (g_ptr_tfm) { -+ crypto_free_aead(g_ptr_tfm); -+ } -+ - /* - * Remove all targets and destroy them (only targets created - * from the boot/module option exist here). Skipping the list - * lock is safe here, and netpoll_cleanup() will sleep. - */ - list_for_each_entry_safe(nt, tmp, &target_list, list) { - list_del(&nt->list); -@@ -977,19 +1286,30 @@ fail: - return err; - } - - static void __exit cleanup_netconsole(void) - { - struct netconsole_target *nt, *tmp; - -+ g_ui_encrypt_inited = 0; - unregister_console(&netconsole_ext); - unregister_console(&netconsole); - dynamic_netconsole_exit(); - unregister_netdevice_notifier(&netconsole_netdev_notifier); - -+ if (g_gcm_aad) { -+ kfree(g_gcm_aad); -+ } -+ if (g_ptr_req) { -+ aead_request_free(g_ptr_req); -+ } -+ if (g_ptr_tfm) { -+ crypto_free_aead(g_ptr_tfm); -+ } -+ - /* - * Targets created via configfs pin references on our module - * and would first be rmdir(2)'ed from userspace. We reach - * here only when they are already destroyed, and only those - * created from the boot/module option are left, so remove and - * destroy them. Skipping the list lock is safe here, and - * netpoll_cleanup() will sleep. ---- a/include/linux/netpoll.h -+++ b/include/linux/netpoll.h -@@ -8,14 +8,41 @@ - #define _LINUX_NETPOLL_H - - #include - #include - #include - #include - -+/* #define UI_ENCRYPT_DEBUG */ -+#ifdef UI_ENCRYPT_DEBUG -+#define UI_ENCRYPT_DEBUG_PRINT(_fmt, ...) pr_info("UI ENCRYPT %s:%d:" _fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__) -+#define UI_ENCRYPT_DEBUG_DUMP(_prefix, _prefix_type, _buf, _len) \ -+ print_hex_dump(KERN_INFO, "UI ENCRYPT: " _prefix, _prefix_type, 16, 1, _buf, _len, 0) -+#else -+#define UI_ENCRYPT_DEBUG_PRINT(...) -+#define UI_ENCRYPT_DEBUG_DUMP(...) -+#endif /* UI_ENCRYPT_DEBUG */ -+ -+#define UI_ENCRYPT_KEY_LENGTH 32 -+#define UI_ENCRYPT_ID_LENGTH 8 -+#define UI_ENCRYPT_IV_LENGTH 12 -+#define UI_ENCRYPT_AUTH_TAG_LENGTH 16 -+ -+#define UI_ENCRYPT_MAGIC 0xABCDDCBA -+#define UI_ENCRYPT_VERSION 0x01 -+#define UI_ENCRYPT_ENABLE_FLAG 0x00000001 -+ -+typedef struct { -+ u8 magic[4]; -+ u8 version; -+ u8 flags[4]; -+ u8 hashid[UI_ENCRYPT_ID_LENGTH]; -+ u8 iv[UI_ENCRYPT_IV_LENGTH]; -+} ui_aad_t; -+ - union inet_addr { - __u32 all[4]; - __be32 ip; - __be32 ip6[4]; - struct in_addr in; - struct in6_addr in6; - }; -@@ -25,14 +52,17 @@ struct netpoll { - char dev_name[IFNAMSIZ]; - const char *name; - - union inet_addr local_ip, remote_ip; - bool ipv6; - u16 local_port, remote_port; - u8 remote_mac[ETH_ALEN]; -+ bool encrypt; -+ u8 gcm_keyval[UI_ENCRYPT_KEY_LENGTH]; -+ u8 hashid[UI_ENCRYPT_ID_LENGTH]; - - struct work_struct cleanup_work; - }; - - struct netpoll_info { - atomic_t refcnt; - ---- a/net/core/netpoll.c -+++ b/net/core/netpoll.c -@@ -494,14 +494,19 @@ void netpoll_print_options(struct netpol - np_info(np, "interface '%s'\n", np->dev_name); - np_info(np, "remote port %d\n", np->remote_port); - if (np->ipv6) - np_info(np, "remote IPv6 address %pI6c\n", &np->remote_ip.in6); - else - np_info(np, "remote IPv4 address %pI4\n", &np->remote_ip.ip); - np_info(np, "remote ethernet address %pM\n", np->remote_mac); -+ np_info(np, "encrypted: %d\n", np->encrypt); -+ if (np->encrypt) { -+ UI_ENCRYPT_DEBUG_DUMP("gcm key value: ", DUMP_PREFIX_NONE, np->gcm_keyval, sizeof(np->gcm_keyval)); -+ UI_ENCRYPT_DEBUG_DUMP("hashid: ", DUMP_PREFIX_NONE, np->hashid, sizeof(np->hashid)); -+ } - } - EXPORT_SYMBOL(netpoll_print_options); - - static int netpoll_parse_ip_addr(const char *str, union inet_addr *addr) - { - const char *end; - -@@ -583,20 +588,47 @@ int netpoll_parse_options(struct netpoll - goto parse_failed; - else if (ipversion_set && np->ipv6 != (bool)ipv6) - goto parse_failed; - else - np->ipv6 = (bool)ipv6; - cur = delim + 1; - -+ /* UI optional params [,GCM_KEY,HASHID] */ -+ if ((delim = strchr(cur, ',')) != NULL) { -+ *delim = 0; -+ } -+ - if (*cur != 0) { - /* MAC address */ - if (!mac_pton(cur, np->remote_mac)) - goto parse_failed; - } - -+ if (delim) { -+ cur = delim + 1; -+ if ((delim = strchr(cur, ',')) == NULL) -+ goto parse_failed; /* hashid required */ -+ *delim = 0; -+ -+ /* AES GCM encryption with 256-bit key */ -+ if (strlen(cur) != sizeof(np->gcm_keyval) * 2) -+ goto parse_failed; /* key not right size */ -+ if (hex2bin(np->gcm_keyval, cur, sizeof(np->gcm_keyval)) != 0) -+ goto parse_failed; /* valid key required */ -+ -+ cur = delim + 1; -+ /* 8-byte hashid */ -+ if (strlen(cur) != sizeof(np->hashid) * 2) -+ goto parse_failed; /* hashid not right size */ -+ if (hex2bin(np->hashid, cur, sizeof(np->hashid)) != 0) -+ goto parse_failed; /* valid hashid required */ -+ -+ np->encrypt = 1; -+ } -+ - netpoll_print_options(np); - - return 0; - - parse_failed: - np_info(np, "couldn't parse config at '%s'!\n", cur); - return -1; diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-751-mtd-cb.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-751-mtd-cb.patch deleted file mode 100644 index c5e8cc6..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-751-mtd-cb.patch +++ /dev/null @@ -1,43 +0,0 @@ ---- a/drivers/mtd/mtdcore.c -+++ b/drivers/mtd/mtdcore.c -@@ -1742,14 +1742,27 @@ void *mtd_kmalloc_up_to(const struct mtd - * For the last resort allocation allow 'kmalloc()' to do all sorts of - * things (write-back, dropping caches, etc) by using GFP_KERNEL. - */ - return kmalloc(*size, GFP_KERNEL); - } - EXPORT_SYMBOL_GPL(mtd_kmalloc_up_to); - -+void mtd_callback_for_each(mtd_callback cb, void *priv) -+{ -+ struct mtd_info *mtd; -+ if(cb) { -+ mutex_lock(&mtd_table_mutex); -+ mtd_for_each_device(mtd) { -+ cb(mtd, priv); -+ } -+ mutex_unlock(&mtd_table_mutex); -+ } -+} -+EXPORT_SYMBOL(mtd_callback_for_each); -+ - #ifdef CONFIG_PROC_FS - - /*====================================================================*/ - /* Support for /proc/mtd */ - - static int mtd_proc_show(struct seq_file *m, void *v) - { ---- a/include/linux/mtd/mtd.h -+++ b/include/linux/mtd/mtd.h -@@ -497,8 +497,10 @@ static inline int mtd_is_eccerr(int err) - - static inline int mtd_is_bitflip_or_eccerr(int err) { - return mtd_is_bitflip(err) || mtd_is_eccerr(err); - } - - unsigned mtd_mmap_capabilities(struct mtd_info *mtd); - -+typedef void (*mtd_callback)(struct mtd_info* mtd, void * priv); -+void mtd_callback_for_each(mtd_callback cb, void *priv); - #endif /* __MTD_MTD_H__ */ diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-755-pinctrl-memleak-fix.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-755-pinctrl-memleak-fix.patch deleted file mode 100644 index b0b4f3c..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-755-pinctrl-memleak-fix.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c -+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c -@@ -745,14 +745,15 @@ static int mtk_pctrl_dt_node_to_map(stru - reserved_maps = 0; - - for_each_child_of_node(np_config, np) { - ret = mtk_pctrl_dt_subnode_to_map(pctldev, np, map, - &reserved_maps, num_maps); - if (ret < 0) { - pinctrl_utils_dt_free_map(pctldev, *map, *num_maps); -+ of_node_put(np); - return ret; - } - } - - return 0; - } - diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-756-conntrack-no-udp-eth-mcast.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-756-conntrack-no-udp-eth-mcast.patch deleted file mode 100644 index 030566c..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-756-conntrack-no-udp-eth-mcast.patch +++ /dev/null @@ -1,75 +0,0 @@ -Do not track Ethernet multicasts to avoid conntrack table exhaustion -by UDP traffic such as the discovery protocol. - ---- a/net/netfilter/nf_conntrack_proto_udp.c -+++ b/net/netfilter/nf_conntrack_proto_udp.c -@@ -22,14 +22,16 @@ - #include - #include - #include - #include - #include - #include - -+#include -+ - static unsigned int udp_timeouts[UDP_CT_MAX] = { - [UDP_CT_UNREPLIED] = 30*HZ, - [UDP_CT_REPLIED] = 180*HZ, - }; - - static inline struct nf_udp_net *udp_pernet(struct net *net) - { -@@ -73,23 +75,34 @@ static void udp_print_tuple(struct seq_f - } - - static unsigned int *udp_get_timeouts(struct net *net) - { - return udp_pernet(net)->timeouts; - } - -+static inline bool skb_is_eth_mcast(const struct sk_buff *skb) -+{ -+ if (skb->dev == NULL || skb->dev->type != ARPHRD_ETHER) -+ return false; -+ -+ return is_multicast_ether_addr(eth_hdr(skb)->h_dest); -+} -+ - /* Returns verdict for packet, and may modify conntracktype */ - static int udp_packet(struct nf_conn *ct, - const struct sk_buff *skb, - unsigned int dataoff, - enum ip_conntrack_info ctinfo, - u_int8_t pf, - unsigned int hooknum, - unsigned int *timeouts) - { -+ if (skb_is_eth_mcast(skb)) -+ return NF_ACCEPT; -+ - /* If we've seen traffic both ways, this is some kind of UDP - stream. Extend timeout. */ - if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) { - nf_ct_refresh_acct(ct, ctinfo, skb, - timeouts[UDP_CT_REPLIED]); - /* Also, more likely to be important, and not a probe */ - if (!test_and_set_bit(IPS_ASSURED_BIT, &ct->status)) -@@ -101,14 +114,17 @@ static int udp_packet(struct nf_conn *ct - return NF_ACCEPT; - } - - /* Called when a new connection for this protocol found. */ - static bool udp_new(struct nf_conn *ct, const struct sk_buff *skb, - unsigned int dataoff, unsigned int *timeouts) - { -+ if (skb_is_eth_mcast(skb)) -+ return false; -+ - return true; - } - - static int udp_error(struct net *net, struct nf_conn *tmpl, struct sk_buff *skb, - unsigned int dataoff, enum ip_conntrack_info *ctinfo, - u_int8_t pf, - unsigned int hooknum) diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-757-netconsole-always.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-757-netconsole-always.patch deleted file mode 100644 index 9c9a4c1..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-757-netconsole-always.patch +++ /dev/null @@ -1,63 +0,0 @@ -If netconsole is enabled, all messages should be sent to it, regardless of console loglevel. - ---- a/drivers/net/netconsole.c -+++ b/drivers/net/netconsole.c -@@ -1247,14 +1247,15 @@ static int __init init_netconsole(void) - - err = dynamic_netconsole_init(); - if (err) - goto undonotifier; - - if (netconsole_ext.flags & CON_ENABLED) - register_console(&netconsole_ext); -+ netconsole.flags |= CON_ALWAYS; - register_console(&netconsole); - pr_info("network logging started\n"); - - return err; - - undonotifier: - unregister_netdevice_notifier(&netconsole_netdev_notifier); ---- a/include/linux/console.h -+++ b/include/linux/console.h -@@ -112,14 +112,15 @@ static inline int con_debug_leave(void) - #define CON_PRINTBUFFER (1) - #define CON_CONSDEV (2) /* Last on the command line */ - #define CON_ENABLED (4) - #define CON_BOOT (8) - #define CON_ANYTIME (16) /* Safe to call when cpu is offline */ - #define CON_BRL (32) /* Used for a braille device */ - #define CON_EXTENDED (64) /* Use the extended output format a la /dev/kmsg */ -+#define CON_ALWAYS BIT(7) /* Ignore loglevel for this console */ - - struct console { - char name[16]; - void (*write)(struct console *, const char *, unsigned); - int (*read)(struct console *, char *, unsigned); - struct tty_driver *(*device)(struct console *, int *); - void (*unblank)(void); ---- a/kernel/printk/printk.c -+++ b/kernel/printk/printk.c -@@ -1434,20 +1434,20 @@ static void call_console_drivers(int lev - const char *ext_text, size_t ext_len, - const char *text, size_t len) - { - struct console *con; - - trace_console_rcuidle(text, len); - -- if (level >= console_loglevel && !ignore_loglevel) -- return; - if (!console_drivers) - return; - - for_each_console(con) { -+ if (level >= console_loglevel && !(con->flags & CON_ALWAYS) && !ignore_loglevel) -+ continue; - if (exclusive_console && con != exclusive_console) - continue; - if (!(con->flags & CON_ENABLED)) - continue; - if (!con->write) - continue; - if (!cpu_online(smp_processor_id()) && diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-758-fix-netconsole-crash-issue.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-758-fix-netconsole-crash-issue.patch deleted file mode 100644 index dcaca17..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-758-fix-netconsole-crash-issue.patch +++ /dev/null @@ -1,65 +0,0 @@ ---- a/drivers/net/netconsole.c -+++ b/drivers/net/netconsole.c -@@ -863,14 +863,15 @@ static void cipher_work_done(struct cryp - - #ifdef UI_ENCRYPT_DEBUG - if (!once) { - UI_ENCRYPT_DEBUG_PRINT("\n"); - once = 1; - } - #endif -+ result->err = error; - complete(&result->completion); - } - - static void ui_bump_gcm_iv(void) - { - int i; - for (i = sizeof(g_gcm_aad->iv) - 1; i >= 0; i--) { -@@ -883,21 +884,22 @@ static void ui_bump_gcm_iv(void) - static int ui_init_crypt(u8 *key, u8 *hashid) - { - int ret; - - /* Init transformation object and request object */ - g_ptr_tfm = crypto_alloc_aead("gcm(aes)", 0, 0); - if (IS_ERR(g_ptr_tfm)) { -- return PTR_ERR(g_ptr_tfm); -- } -+ g_ptr_tfm = NULL; -+ goto fail; -+ } - crypto_init_wait(&g_ui_result); - g_ptr_req = aead_request_alloc(g_ptr_tfm, GFP_KERNEL); - if (IS_ERR(g_ptr_req)) { -- crypto_free_aead(g_ptr_tfm); -- return PTR_ERR(g_ptr_req); -+ g_ptr_req = NULL; -+ goto fail; - } - aead_request_set_callback(g_ptr_req, CRYPTO_TFM_REQ_MAY_BACKLOG, - cipher_work_done, &g_ui_result); - /* Init set_authsize generate IV */ - /* Init g_gcm_aad Data - * A. Magic Number Version Flags - * B. add hashid */ -@@ -1214,15 +1216,18 @@ static int __init init_netconsole(void) - spin_lock_irqsave(&target_list_lock, flags); - list_add(&nt->list, &target_list); - spin_unlock_irqrestore(&target_list_lock, flags); - } - } - - if (nt->np.encrypt) { -- ui_init_crypt(nt->np.gcm_keyval, nt->np.hashid); -+ err = ui_init_crypt(nt->np.gcm_keyval, nt->np.hashid); -+ if (err) -+ goto fail; -+ - #ifdef UI_ENCRYPT_DEBUG - - UI_ENCRYPT_DEBUG_PRINT("perform test encryption and decryption\n"); - ret = ui_encrypt(testbuf, sizeof(testbuf), &cipher, &cipherdata_len); - UI_ENCRYPT_DEBUG_PRINT("ret:%d plainlen:%d cipher:%p ciph_len:%d\n", - ret, sizeof(testbuf), cipher, cipherdata_len); - UI_ENCRYPT_DEBUG_DUMP("cipher: ", DUMP_PREFIX_NONE, cipher, cipherdata_len); diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-760-backport-netpoll-make-ndo_poll_controller-optional.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-760-backport-netpoll-make-ndo_poll_controller-optional.patch deleted file mode 100644 index 811b928..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-760-backport-netpoll-make-ndo_poll_controller-optional.patch +++ /dev/null @@ -1,128 +0,0 @@ -commit ac3d9dd034e565df2c034ab2ca71f0a9f69153c1 -Author: Eric Dumazet -Date: Fri Sep 21 15:27:38 2018 -0700 - - netpoll: make ndo_poll_controller() optional - - As diagnosed by Song Liu, ndo_poll_controller() can - be very dangerous on loaded hosts, since the cpu - calling ndo_poll_controller() might steal all NAPI - contexts (for all RX/TX queues of the NIC). This capture - can last for unlimited amount of time, since one - cpu is generally not able to drain all the queues under load. - - It seems that all networking drivers that do use NAPI - for their TX completions, should not provide a ndo_poll_controller(). - - NAPI drivers have netpoll support already handled - in core networking stack, since netpoll_poll_dev() - uses poll_napi(dev) to iterate through registered - NAPI contexts for a device. - - This patch allows netpoll_poll_dev() to process NAPI - contexts even for drivers not providing ndo_poll_controller(), - allowing for following patches in NAPI drivers. - - Also we export netpoll_poll_dev() so that it can be called - by bonding/team drivers in following patches. - - Reported-by: Song Liu - Signed-off-by: Eric Dumazet - Tested-by: Song Liu - Signed-off-by: David S. Miller - ---- a/include/linux/netpoll.h -+++ b/include/linux/netpoll.h -@@ -73,16 +73,17 @@ struct netpoll_info { - struct delayed_work tx_work; - - struct netpoll *netpoll; - struct rcu_head rcu; - }; - - #ifdef CONFIG_NETPOLL --extern void netpoll_poll_disable(struct net_device *dev); --extern void netpoll_poll_enable(struct net_device *dev); -+void netpoll_poll_dev(struct net_device *dev); -+void netpoll_poll_disable(struct net_device *dev); -+void netpoll_poll_enable(struct net_device *dev); - #else - static inline void netpoll_poll_disable(struct net_device *dev) { return; } - static inline void netpoll_poll_enable(struct net_device *dev) { return; } - #endif - - void netpoll_send_udp(struct netpoll *np, const char *msg, int len); - void netpoll_print_options(struct netpoll *np); ---- a/net/core/netpoll.c -+++ b/net/core/netpoll.c -@@ -183,46 +183,42 @@ static void poll_napi(struct net_device - spin_trylock(&napi->poll_lock)) { - poll_one_napi(napi); - spin_unlock(&napi->poll_lock); - } - } - } - --static void netpoll_poll_dev(struct net_device *dev) -+void netpoll_poll_dev(struct net_device *dev) - { -- const struct net_device_ops *ops; - struct netpoll_info *ni = rcu_dereference_bh(dev->npinfo); -+ const struct net_device_ops *ops; - - /* Don't do any rx activity if the dev_lock mutex is held - * the dev_open/close paths use this to block netpoll activity - * while changing device state - */ -- if (down_trylock(&ni->dev_lock)) -+ if (!ni || down_trylock(&ni->dev_lock)) - return; - - if (!netif_running(dev)) { - up(&ni->dev_lock); - return; - } - - ops = dev->netdev_ops; -- if (!ops->ndo_poll_controller) { -- up(&ni->dev_lock); -- return; -- } -- -- /* Process pending work on NIC */ -- ops->ndo_poll_controller(dev); -+ if (ops->ndo_poll_controller) -+ ops->ndo_poll_controller(dev); - - poll_napi(dev); - - up(&ni->dev_lock); - - zap_completion_queue(); - } -+EXPORT_SYMBOL(netpoll_poll_dev); - - void netpoll_poll_disable(struct net_device *dev) - { - struct netpoll_info *ni; - int idx; - might_sleep(); - idx = srcu_read_lock(&netpoll_srcu); -@@ -641,16 +637,15 @@ int __netpoll_setup(struct netpoll *np, - const struct net_device_ops *ops; - int err; - - np->dev = ndev; - strlcpy(np->dev_name, ndev->name, IFNAMSIZ); - INIT_WORK(&np->cleanup_work, netpoll_async_cleanup); - -- if ((ndev->priv_flags & IFF_DISABLE_NETPOLL) || -- !ndev->netdev_ops->ndo_poll_controller) { -+ if (ndev->priv_flags & IFF_DISABLE_NETPOLL) { - np_err(np, "%s doesn't support polling, aborting\n", - np->dev_name); - err = -ENOTSUPP; - goto out; - } - - if (!ndev->npinfo) { diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-761-backport-net-disable-netpoll-on-fresh-napis.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-761-backport-net-disable-netpoll-on-fresh-napis.patch deleted file mode 100644 index d7f3708..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-761-backport-net-disable-netpoll-on-fresh-napis.patch +++ /dev/null @@ -1,67 +0,0 @@ -commit 96e97bc07e90f175a8980a22827faf702ca4cb30 -Author: Jakub Kicinski -Date: Wed Aug 26 12:40:06 2020 -0700 - - net: disable netpoll on fresh napis - - napi_disable() makes sure to set the NAPI_STATE_NPSVC bit to prevent - netpoll from accessing rings before init is complete. However, the - same is not done for fresh napi instances in netif_napi_add(), - even though we expect NAPI instances to be added as disabled. - - This causes crashes during driver reconfiguration (enabling XDP, - changing the channel count) - if there is any printk() after - netif_napi_add() but before napi_enable(). - - To ensure memory ordering is correct we need to use RCU accessors. - - Reported-by: Rob Sherwood - Fixes: 2d8bff12699a ("netpoll: Close race condition between poll_one_napi and napi_disable") - Signed-off-by: Jakub Kicinski - Signed-off-by: David S. Miller - ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -4865,21 +4865,22 @@ void netif_napi_add(struct net_device *d - napi->gro_list = NULL; - napi->skb = NULL; - napi->poll = poll; - if (weight > NAPI_POLL_WEIGHT) - pr_err_once("netif_napi_add() called with weight %d on device %s\n", - weight, dev->name); - napi->weight = weight; -- list_add(&napi->dev_list, &dev->napi_list); - napi->dev = dev; - #ifdef CONFIG_NETPOLL - spin_lock_init(&napi->poll_lock); - napi->poll_owner = -1; - #endif - set_bit(NAPI_STATE_SCHED, &napi->state); -+ set_bit(NAPI_STATE_NPSVC, &napi->state); -+ list_add_rcu(&napi->dev_list, &dev->napi_list); - } - EXPORT_SYMBOL(netif_napi_add); - - void napi_disable(struct napi_struct *n) - { - might_sleep(); - set_bit(NAPI_STATE_DISABLE, &n->state); ---- a/net/core/netpoll.c -+++ b/net/core/netpoll.c -@@ -174,15 +174,15 @@ static void poll_one_napi(struct napi_st - clear_bit(NAPI_STATE_NPSVC, &napi->state); - } - - static void poll_napi(struct net_device *dev) - { - struct napi_struct *napi; - -- list_for_each_entry(napi, &dev->napi_list, dev_list) { -+ list_for_each_entry_rcu(napi, &dev->napi_list, dev_list) { - if (napi->poll_owner != smp_processor_id() && - spin_trylock(&napi->poll_lock)) { - poll_one_napi(napi); - spin_unlock(&napi->poll_lock); - } - } - } diff --git a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-763-mips-sigfpe-debug.patch b/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-763-mips-sigfpe-debug.patch deleted file mode 100644 index d189e2b..0000000 --- a/src/bases/udr-2.2.12/linux-patches/001-999-ubnt-763-mips-sigfpe-debug.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/arch/mips/kernel/traps.c -+++ b/arch/mips/kernel/traps.c -@@ -910,14 +910,17 @@ void do_trap_or_bp(struct pt_regs *regs, - die_if_kernel(b, regs); - if (code == BRK_DIVZERO) - info.si_code = FPE_INTDIV; - else - info.si_code = FPE_INTOVF; - info.si_signo = SIGFPE; - info.si_addr = (void __user *) regs->cp0_epc; -+ pr_err("SIGFPE(%s) in %s: epc: 0x%lx, ra: 0x%lx\n", -+ (code == BRK_DIVZERO) ? "div0" : "overflow", -+ current->comm, regs->cp0_epc, regs->regs[31]); - force_sig_info(SIGFPE, &info, current); - break; - case BRK_BUG: - die_if_kernel("Kernel bug detected", regs); - force_sig(SIGTRAP, current); - break; - case BRK_MEMU: diff --git a/src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-01-nfbypass.patch b/src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-01-nfbypass.patch deleted file mode 100644 index cf05a62..0000000 --- a/src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-01-nfbypass.patch +++ /dev/null @@ -1,132 +0,0 @@ ---- a/include/linux/netfilter.h -+++ b/include/linux/netfilter.h -@@ -217,28 +217,58 @@ static inline int nf_hook(u_int8_t pf, u - static inline int - NF_HOOK_THRESH(uint8_t pf, unsigned int hook, struct net *net, struct sock *sk, - struct sk_buff *skb, struct net_device *in, - struct net_device *out, - int (*okfn)(struct net *, struct sock *, struct sk_buff *), - int thresh) - { -- int ret = nf_hook_thresh(pf, hook, net, sk, skb, in, out, okfn, thresh); -+ int ret; -+ -+ if ((in != NULL && UBNT_IS_NFBYPASS_ENABLE(in)) || -+ (out != NULL && UBNT_IS_NFBYPASS_ENABLE(out))) { -+ if (hook != NF_INET_PRE_ROUTING && -+ hook != NF_INET_POST_ROUTING) { -+ return okfn(net, sk, skb); -+ } else { -+ if ((in != NULL && UBNT_IS_NFBYPASS_MARK(in)) || -+ (out != NULL && UBNT_IS_NFBYPASS_MARK(out))) -+ return okfn(net, sk, skb); -+ else if (ubnt_nfbypass_handler((struct ethhdr *)skb_mac_header(skb))) -+ return okfn(net, sk, skb); -+ } -+ } -+ -+ ret = nf_hook_thresh(pf, hook, net, sk, skb, in, out, okfn, thresh); - if (ret == 1) - ret = okfn(net, sk, skb); - return ret; - } - - static inline int - NF_HOOK_COND(uint8_t pf, unsigned int hook, struct net *net, struct sock *sk, - struct sk_buff *skb, struct net_device *in, struct net_device *out, - int (*okfn)(struct net *, struct sock *, struct sk_buff *), - bool cond) - { - int ret; - -+ if ((in != NULL && UBNT_IS_NFBYPASS_ENABLE(in)) || -+ (out != NULL && UBNT_IS_NFBYPASS_ENABLE(out))) { -+ if (hook != NF_INET_PRE_ROUTING && -+ hook != NF_INET_POST_ROUTING) { -+ return okfn(net, sk, skb); -+ } else { -+ if ((in != NULL && UBNT_IS_NFBYPASS_MARK(in)) || -+ (out != NULL && UBNT_IS_NFBYPASS_MARK(out))) -+ return okfn(net, sk, skb); -+ else if (ubnt_nfbypass_handler((struct ethhdr *)skb_mac_header(skb))) -+ return okfn(net, sk, skb); -+ } -+ } -+ - if (!cond || - ((ret = nf_hook_thresh(pf, hook, net, sk, skb, in, out, okfn, INT_MIN)) == 1)) - ret = okfn(net, sk, skb); - return ret; - } - - static inline int ---- a/include/linux/skbuff.h -+++ b/include/linux/skbuff.h -@@ -795,14 +795,16 @@ static inline bool skb_dst_is_noref(cons - return (skb->_skb_refdst & SKB_DST_NOREF) && skb_dst(skb); - } - - static inline struct rtable *skb_rtable(const struct sk_buff *skb) - { - return (struct rtable *)skb_dst(skb); - } -+//: UBNT NFBYPASS -+extern int ubnt_nfbypass_handler(struct ethhdr *mac); - - void kfree_skb(struct sk_buff *skb); - void kfree_skb_list(struct sk_buff *segs); - void skb_tx_error(struct sk_buff *skb); - void consume_skb(struct sk_buff *skb); - void __kfree_skb(struct sk_buff *skb); - extern struct kmem_cache *skbuff_head_cache; ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -3204,19 +3204,20 @@ static int __dev_queue_xmit(struct sk_bu - txq = netdev_pick_tx(dev, skb, accel_priv); - q = rcu_dereference_bh(txq->qdisc); - - #ifdef CONFIG_NET_CLS_ACT - skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_EGRESS); - #endif - trace_net_dev_queue(skb); -- if (q->enqueue) { -- rc = __dev_xmit_skb(skb, q, dev, txq); -- goto out; -+ if (likely(!UBNT_IS_NFBYPASS_MARK(dev))) { -+ if (likely(q->enqueue) && unlikely(!ubnt_nfbypass_handler((struct ethhdr *)skb_mac_header(skb)))) { -+ rc = __dev_xmit_skb(skb, q, dev, txq); -+ goto out; -+ } - } -- - /* The device has no queue. Common case for software devices: - loopback, all the sorts of tunnels... - - Really, it is unlikely that netif_tx_lock protection is necessary - here. (f.e. loopback and IP tunnels are clean ignoring statistics - counters.) - However, it is possible, that they rely on protection ---- a/net/core/skbuff.c -+++ b/net/core/skbuff.c -@@ -4651,7 +4651,21 @@ fill_page: - return skb; - - failure: - kfree_skb(skb); - return NULL; - } - EXPORT_SYMBOL(alloc_skb_with_frags); -+ -+//: UBNT NFBYPASS -+int (*ubnt_nfbypass_hook)(struct ethhdr *mac); -+EXPORT_SYMBOL(ubnt_nfbypass_hook); -+ -+int ubnt_nfbypass_handler(struct ethhdr *mac) { -+ int ret = 0; -+ -+ if (likely(ubnt_nfbypass_hook)) -+ ret = ubnt_nfbypass_hook(mac); -+ -+ return ret; -+} -+EXPORT_SYMBOL(ubnt_nfbypass_handler); diff --git a/src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-02-fix-iwreq-ifreq-64bit-issue.patch b/src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-02-fix-iwreq-ifreq-64bit-issue.patch deleted file mode 100644 index 8c96040..0000000 --- a/src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-02-fix-iwreq-ifreq-64bit-issue.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- a/net/core/dev_ioctl.c -+++ b/net/core/dev_ioctl.c -@@ -547,14 +547,29 @@ int dev_ioctl(struct net *net, unsigned - * Unknown or private ioctl. - */ - default: - if (cmd == SIOCWANDEV || - cmd == SIOCGHWTSTAMP || - (cmd >= SIOCDEVPRIVATE && - cmd <= SIOCDEVPRIVATE + SIOC_PRIVATE_IOCTLS)) { -+ /* Since the size of iwreq is not same as ifreq for 64bit platform -+ * , it may cause copy_to_user size not consistent with user space */ -+ { -+ struct net_device *dev = NULL; -+ rcu_read_lock(); -+ dev = dev_get_by_name_rcu(net, ifr.ifr_name); -+ rcu_read_unlock(); -+ if (dev && (dev->ieee80211_ptr != NULL)) { -+ if (cmd >= SIOCDEVPRIVATE && -+ cmd <= SIOCDEVPRIVATE + SIOC_PRIVATE_IOCTLS) { -+ return wext_handle_ioctl(net, &ifr, cmd, arg); -+ } -+ } -+ } -+ - dev_load(net, ifr.ifr_name); - rtnl_lock(); - ret = dev_ifsioc(net, &ifr, cmd); - rtnl_unlock(); - if (!ret && copy_to_user(arg, &ifr, - sizeof(struct ifreq))) - ret = -EFAULT; diff --git a/src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-fix-mt7622-wdt-reset-setting.patch b/src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-fix-mt7622-wdt-reset-setting.patch deleted file mode 100644 index 1eafcdc..0000000 --- a/src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-fix-mt7622-wdt-reset-setting.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- a/drivers/watchdog/mtk_wdt.c -+++ b/drivers/watchdog/mtk_wdt.c -@@ -63,14 +63,15 @@ - #define WDT_MODE_EXT_POL_LOW (0 << 1) - #define WDT_MODE_EXT_POL_HIGH (1 << 1) - #define WDT_MODE_EXRST_EN (1 << 2) - #define WDT_MODE_IRQ_EN (1 << 3) - #define WDT_MODE_AUTO_START (1 << 4) - #define WDT_MODE_IRQ_LVL (1 << 5) - #define WDT_MODE_DUAL_EN (1 << 6) -+#define WDT_MODE_DDR_RESV_MODE (1 << 7) - #define WDT_MODE_KEY 0x22000000 - - #define WDT_STATUS 0x0c - #define WDT_NONRST_REG 0x20 - #define WDT_NONRST_REG2 0x24 - - #define WDT_SWRST 0x14 -@@ -293,16 +294,16 @@ static int mtk_wdt_start(struct watchdog - int ret; - - ret = mtk_wdt_set_timeout(wdt_dev, wdt_dev->timeout); - if (ret < 0) - return ret; - - reg = ioread32(wdt_base + WDT_MODE); -- reg |= (WDT_MODE_DUAL_EN | WDT_MODE_IRQ_EN | WDT_MODE_EXRST_EN); -- reg &= ~(WDT_MODE_IRQ_LVL | WDT_MODE_EXT_POL_HIGH); -+ reg |= (WDT_MODE_DDR_RESV_MODE | WDT_MODE_DUAL_EN | WDT_MODE_IRQ_EN); -+ reg &= ~(WDT_MODE_IRQ_LVL | WDT_MODE_EXT_POL_HIGH | WDT_MODE_EXRST_EN); - reg |= (WDT_MODE_EN | WDT_MODE_KEY); - iowrite32(reg, wdt_base + WDT_MODE); - - return 0; - } - - static const struct watchdog_info mtk_wdt_info = { diff --git a/src/bases/udr-2.2.12/linux-patches/003-dtc-lexer.patch b/src/bases/udr-2.2.12/linux-patches/003-dtc-lexer.patch deleted file mode 100644 index 0c554cb..0000000 --- a/src/bases/udr-2.2.12/linux-patches/003-dtc-lexer.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- a/scripts/dtc/dtc-lexer.l 2021-02-03 05:03:13.000000000 -0700 -+++ b/scripts/dtc/dtc-lexer.l 2021-06-21 15:08:33.265930996 -0600 -@@ -38,7 +38,7 @@ - #include "srcpos.h" - #include "dtc-parser.tab.h" - --YYLTYPE yylloc; -+extern YYLTYPE yylloc; - extern bool treesource_error; - - /* CAUTION: this will stop working if we ever use yyless() or yyunput() */ - ---- a/scripts/dtc/dtc-lexer.lex.c_shipped 2021-06-21 16:04:48.890865860 -0600 -+++ b/scripts/dtc/dtc-lexer.lex.c_shipped 2021-06-21 16:05:13.163909071 -0600 -@@ -631,7 +631,7 @@ - #include "srcpos.h" - #include "dtc-parser.tab.h" - --YYLTYPE yylloc; -+extern YYLTYPE yylloc; - extern bool treesource_error; - - /* CAUTION: this will stop working if we ever use yyless() or yyunput() */ diff --git a/src/bases/udr-2.2.12/patches/wireguard-linux-compat/fix-compile-errors.patch b/src/bases/udr-2.2.12/patches/wireguard-linux-compat/fix-compile-errors.patch deleted file mode 100644 index 1b4cb39..0000000 --- a/src/bases/udr-2.2.12/patches/wireguard-linux-compat/fix-compile-errors.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/src/compat/compat.h 2021-06-06 03:29:55.000000000 -0600 -+++ b/src/compat/compat.h 2021-11-02 17:56:06.379943874 -0600 -@@ -664,15 +664,6 @@ - #define genl_dump_check_consistent(a, b) genl_dump_check_consistent(a, b, &genl_family) - #endif - --#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) --static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) --{ -- void *tmp = skb_put(skb, len); -- memcpy(tmp, data, len); -- return tmp; --} --#endif -- - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) && !defined(ISRHEL7) - #define napi_complete_done(n, work_done) napi_complete(n) - #endif diff --git a/src/bases/udr-2.2.12/buildroot-config.txt b/src/bases/udr-3.0.13/buildroot-config.txt similarity index 99% rename from src/bases/udr-2.2.12/buildroot-config.txt rename to src/bases/udr-3.0.13/buildroot-config.txt index cec5421..f45d37b 100644 --- a/src/bases/udr-2.2.12/buildroot-config.txt +++ b/src/bases/udr-3.0.13/buildroot-config.txt @@ -367,7 +367,7 @@ BR2_LINUX_KERNEL_CUSTOM_TARBALL=y # BR2_LINUX_KERNEL_CUSTOM_GIT is not set # BR2_LINUX_KERNEL_CUSTOM_HG is not set # BR2_LINUX_KERNEL_CUSTOM_SVN is not set -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file://$(TOPDIR)/../bases/linux-udr-2.2.12.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file://$(TOPDIR)/../bases/linux-udr-3.0.13.tar.gz" BR2_LINUX_KERNEL_VERSION="custom" BR2_LINUX_KERNEL_PATCH="linux-patches" # BR2_LINUX_KERNEL_USE_DEFCONFIG is not set diff --git a/src/bases/udr-2.2.12/kernel-config b/src/bases/udr-3.0.13/kernel-config similarity index 100% rename from src/bases/udr-2.2.12/kernel-config rename to src/bases/udr-3.0.13/kernel-config diff --git a/src/bases/udr-3.0.13/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch new file mode 100644 index 0000000..dcce17f --- /dev/null +++ b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch @@ -0,0 +1,14 @@ +--- a/src/compat/compat.h ++++ b/src/compat/compat.h +@@ -664,7 +664,8 @@ struct __compat_dummy_container { char dev; }; + #define genl_dump_check_consistent(a, b) genl_dump_check_consistent(a, b, &genl_family) + #endif + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) && \ ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) + static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) + { + void *tmp = skb_put(skb, len); + + diff --git a/src/bases/udr-3.0.13/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch new file mode 100644 index 0000000..6115f8d --- /dev/null +++ b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch @@ -0,0 +1,14 @@ +diff --git a/src/compat/compat.h b/src/compat/compat.h +index 7acbfc6..845238c 100644 +--- a/src/compat/compat.h ++++ b/src/compat/compat.h +@@ -665,7 +665,8 @@ struct __compat_dummy_container { char dev; }; + #endif + + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) && \ +- LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 198) && \ ++ LINUX_VERSION_CODE != KERNEL_VERSION(4, 4, 60) + static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) + { + void *tmp = skb_put(skb, len); diff --git a/src/bases/udr-3.0.13/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch new file mode 100644 index 0000000..ac823bf --- /dev/null +++ b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch @@ -0,0 +1,73 @@ +diff --git a/src/compat/udp_tunnel/udp_tunnel_partial_compat.h b/src/compat/udp_tunnel/udp_tunnel_partial_compat.h +index 0605896..ca810fd 100644 +--- a/src/compat/udp_tunnel/udp_tunnel_partial_compat.h ++++ b/src/compat/udp_tunnel/udp_tunnel_partial_compat.h +@@ -168,15 +168,15 @@ struct __compat_udp_port_cfg { + struct in_addr peer_ip; + #if IS_ENABLED(CONFIG_IPV6) + struct in6_addr peer_ip6; + #endif + }; + __be16 local_udp_port; + __be16 peer_udp_port; +- unsigned int use_udp_checksums:1, use_udp6_tx_checksums:1, use_udp6_rx_checksums:1, ipv6_v6only:1; ++ unsigned int use_udp_checksums:1, use_udp6_tx_checksums:1, use_udp6_rx_checksums:1, reuse_addr:1, reuse_port:1, ipv6_v6only:1; + }; + static inline int __maybe_unused __compat_udp_sock_create(struct net *net, struct __compat_udp_port_cfg *cfg, struct socket **sockp) + { + struct udp_port_cfg old_cfg = { + .family = cfg->family, + .local_ip = cfg->local_ip, + #if IS_ENABLED(CONFIG_IPV6) +@@ -186,15 +186,17 @@ static inline int __maybe_unused __compat_udp_sock_create(struct net *net, struc + #if IS_ENABLED(CONFIG_IPV6) + .peer_ip6 = cfg->peer_ip6, + #endif + .local_udp_port = cfg->local_udp_port, + .peer_udp_port = cfg->peer_udp_port, + .use_udp_checksums = cfg->use_udp_checksums, + .use_udp6_tx_checksums = cfg->use_udp6_tx_checksums, +- .use_udp6_rx_checksums = cfg->use_udp6_rx_checksums ++ .use_udp6_rx_checksums = cfg->use_udp6_rx_checksums, ++ .reuse_addr = cfg->reuse_addr, ++ .reuse_port = cfg->reuse_port + }; + if (cfg->family == AF_INET) + return udp_sock_create4(net, &old_cfg, sockp); + + #if IS_ENABLED(CONFIG_IPV6) + if (cfg->family == AF_INET6) { + int ret; +diff --git a/src/socket.c b/src/socket.c +index e8eceeb..dcc4088 100644 +--- a/src/socket.c ++++ b/src/socket.c +@@ -355,23 +355,27 @@ int wg_socket_init(struct wg_device *wg, u16 port) + .encap_rcv = wg_receive + }; + struct socket *new4 = NULL, *new6 = NULL; + struct udp_port_cfg port4 = { + .family = AF_INET, + .local_ip.s_addr = htonl(INADDR_ANY), + .local_udp_port = htons(port), +- .use_udp_checksums = true ++ .use_udp_checksums = true, ++ .reuse_addr = true, ++ .reuse_port = true + }; + #if IS_ENABLED(CONFIG_IPV6) + int retries = 0; + struct udp_port_cfg port6 = { + .family = AF_INET6, + .local_ip6 = IN6ADDR_ANY_INIT, + .use_udp6_tx_checksums = true, + .use_udp6_rx_checksums = true, ++ .reuse_addr = true, ++ .reuse_port = true, + .ipv6_v6only = true + }; + #endif + + rcu_read_lock(); + net = rcu_dereference(wg->creating_net); + net = net ? maybe_get_net(net) : NULL; diff --git a/src/bases/udr-3.0.13/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch new file mode 100644 index 0000000..12b5891 --- /dev/null +++ b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch @@ -0,0 +1,31 @@ +diff --git a/src/device.c b/src/device.c +index c673446..25aac06 100644 +--- a/src/device.c ++++ b/src/device.c +@@ -127,14 +127,26 @@ static netdev_tx_t wg_xmit(struct sk_buff *skb, struct net_device *dev) + struct sk_buff_head packets; + struct wg_peer *peer; + struct sk_buff *next; + sa_family_t family; + u32 mtu; + int ret; + ++ if (unlikely(skb->mark & wg->fwmark)) { ++ ret = -ENETDOWN; ++ net_crit_ratelimited("%s: loop detected, dropping skb of length %u\n", dev->name, skb->len); ++ goto err; ++ } ++ ++ if (unlikely(skb_end_offset(skb) > 33000)) { ++ ret = -ENETDOWN; ++ net_crit_ratelimited("%s: possible loop detected, dropping skb of size %u\n", dev->name, skb_end_offset(skb)); ++ goto err; ++ } ++ + if (unlikely(!wg_check_packet_protocol(skb))) { + ret = -EPROTONOSUPPORT; + net_dbg_ratelimited("%s: Invalid IP packet\n", dev->name); + goto err; + } + + peer = wg_allowedips_lookup_dst(&wg->peer_allowedips, skb); diff --git a/src/bases/udr-3.0.13/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch new file mode 100644 index 0000000..8e4cb75 --- /dev/null +++ b/src/bases/udr-3.0.13/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch @@ -0,0 +1,233 @@ +--- a/src/netlink.c ++++ b/src/netlink.c +@@ -34,15 +34,17 @@ static const struct nla_policy peer_poli + [WGPEER_A_FLAGS] = { .type = NLA_U32 }, + [WGPEER_A_ENDPOINT] = NLA_POLICY_MIN_LEN(sizeof(struct sockaddr)), + [WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL] = { .type = NLA_U16 }, + [WGPEER_A_LAST_HANDSHAKE_TIME] = NLA_POLICY_EXACT_LEN(sizeof(struct __kernel_timespec)), + [WGPEER_A_RX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_TX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_ALLOWEDIPS] = { .type = NLA_NESTED }, +- [WGPEER_A_PROTOCOL_VERSION] = { .type = NLA_U32 } ++ [WGPEER_A_PROTOCOL_VERSION] = { .type = NLA_U32 }, ++ [WGPEER_A_FORCED_HANDSHAKE_INTERVAL] = { .type = NLA_U16 }, ++ [WGPEER_A_LAST_RECEIVE_TIME] = NLA_POLICY_EXACT_LEN(sizeof(struct __kernel_timespec)), + }; + + static const struct nla_policy allowedip_policy[WGALLOWEDIP_A_MAX + 1] = { + [WGALLOWEDIP_A_FAMILY] = { .type = NLA_U16 }, + [WGALLOWEDIP_A_IPADDR] = NLA_POLICY_MIN_LEN(sizeof(struct in_addr)), + [WGALLOWEDIP_A_CIDR_MASK] = { .type = NLA_U8 } + }; +@@ -119,31 +121,39 @@ get_peer(struct wg_peer *peer, struct sk + goto err; + + if (!allowedips_node) { + const struct __kernel_timespec last_handshake = { + .tv_sec = peer->walltime_last_handshake.tv_sec, + .tv_nsec = peer->walltime_last_handshake.tv_nsec + }; ++ const struct __kernel_timespec last_receive = { ++ .tv_sec = peer->walltime_last_receive.tv_sec, ++ .tv_nsec = peer->walltime_last_receive.tv_nsec ++ }; + + down_read(&peer->handshake.lock); + fail = nla_put(skb, WGPEER_A_PRESHARED_KEY, + NOISE_SYMMETRIC_KEY_LEN, + peer->handshake.preshared_key); + up_read(&peer->handshake.lock); + if (fail) + goto err; + + if (nla_put(skb, WGPEER_A_LAST_HANDSHAKE_TIME, + sizeof(last_handshake), &last_handshake) || ++ nla_put(skb, WGPEER_A_LAST_RECEIVE_TIME, ++ sizeof(last_receive), &last_receive) || + nla_put_u16(skb, WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL, + peer->persistent_keepalive_interval) || + nla_put_u64_64bit(skb, WGPEER_A_TX_BYTES, peer->tx_bytes, + WGPEER_A_UNSPEC) || + nla_put_u64_64bit(skb, WGPEER_A_RX_BYTES, peer->rx_bytes, + WGPEER_A_UNSPEC) || ++ nla_put_u16(skb, WGPEER_A_FORCED_HANDSHAKE_INTERVAL, ++ peer->forced_handshake_interval) || + nla_put_u32(skb, WGPEER_A_PROTOCOL_VERSION, 1)) + goto err; + + read_lock_bh(&peer->endpoint_lock); + if (peer->endpoint.addr.sa_family == AF_INET) + fail = nla_put(skb, WGPEER_A_ENDPOINT, + sizeof(peer->endpoint.addr4), +@@ -474,14 +484,19 @@ static int set_peer(struct wg_device *wg + netif_running(wg->dev); + + peer->persistent_keepalive_interval = persistent_keepalive_interval; + if (send_keepalive) + wg_packet_send_keepalive(peer); + } + ++ if (attrs[WGPEER_A_FORCED_HANDSHAKE_INTERVAL]) { ++ peer->forced_handshake_interval = nla_get_u16( ++ attrs[WGPEER_A_FORCED_HANDSHAKE_INTERVAL]); ++ } ++ + if (netif_running(wg->dev)) + wg_packet_send_staged_packets(peer); + + out: + wg_peer_put(peer); + if (attrs[WGPEER_A_PRESHARED_KEY]) + memzero_explicit(nla_data(attrs[WGPEER_A_PRESHARED_KEY]), +--- a/src/peer.h ++++ b/src/peer.h +@@ -60,14 +60,17 @@ struct wg_peer { + struct timespec64 walltime_last_handshake; + struct kref refcount; + struct rcu_head rcu; + struct list_head peer_list; + struct list_head allowedips_list; + struct napi_struct napi; + u64 internal_id; ++ u16 forced_handshake_interval; ++ struct timer_list timer_forced_handshake; ++ struct timespec64 walltime_last_receive; + }; + + struct wg_peer *wg_peer_create(struct wg_device *wg, + const u8 public_key[NOISE_PUBLIC_KEY_LEN], + const u8 preshared_key[NOISE_SYMMETRIC_KEY_LEN]); + + struct wg_peer *__must_check wg_peer_get_maybe_zero(struct wg_peer *peer); +--- a/src/timers.c ++++ b/src/timers.c +@@ -137,14 +137,31 @@ static void wg_expired_send_persistent_k + struct wg_peer *peer = from_timer(peer, timer, + timer_persistent_keepalive); + + if (likely(peer->persistent_keepalive_interval)) + wg_packet_send_keepalive(peer); + } + ++static void wg_expired_forced_handshake(struct timer_list *timer) ++{ ++ struct wg_peer *peer = from_timer(peer, timer, timer_forced_handshake); ++ ++ if (!likely(peer->forced_handshake_interval)) ++ return; ++ ++ pr_debug("%s: Retrying handshake with peer %llu (%pISpfsc) because we stopped hearing back after forced handshake timeout %d seconds\n", ++ peer->device->dev->name, peer->internal_id, ++ &peer->endpoint.addr, peer->forced_handshake_interval); ++ /* We clear the endpoint address src address, in case this is the cause ++ * of trouble. ++ */ ++ wg_socket_clear_peer_endpoint_src(peer); ++ wg_packet_send_queued_handshake_initiation(peer, false); ++} ++ + /* Should be called after an authenticated data packet is sent. */ + void wg_timers_data_sent(struct wg_peer *peer) + { + if (!timer_pending(&peer->timer_new_handshake)) + mod_peer_timer(peer, &peer->timer_new_handshake, + jiffies + (KEEPALIVE_TIMEOUT + REKEY_TIMEOUT) * HZ + + prandom_u32_max(REKEY_TIMEOUT_JITTER_MAX_JIFFIES)); +@@ -172,14 +189,19 @@ void wg_timers_any_authenticated_packet_ + + /* Should be called after any type of authenticated packet is received, whether + * keepalive, data, or handshake. + */ + void wg_timers_any_authenticated_packet_received(struct wg_peer *peer) + { + del_timer(&peer->timer_new_handshake); ++ ktime_get_real_ts64(&peer->walltime_last_receive); ++ if (likely(peer->forced_handshake_interval)) { ++ mod_peer_timer(peer, &peer->timer_forced_handshake, ++ jiffies + peer->forced_handshake_interval * HZ); ++ } + } + + /* Should be called after a handshake initiation message is sent. */ + void wg_timers_handshake_initiated(struct wg_peer *peer) + { + mod_peer_timer(peer, &peer->timer_retransmit_handshake, + jiffies + REKEY_TIMEOUT * HZ + +@@ -222,22 +244,25 @@ void wg_timers_init(struct wg_peer *peer + wg_expired_retransmit_handshake, 0); + timer_setup(&peer->timer_send_keepalive, wg_expired_send_keepalive, 0); + timer_setup(&peer->timer_new_handshake, wg_expired_new_handshake, 0); + timer_setup(&peer->timer_zero_key_material, + wg_expired_zero_key_material, 0); + timer_setup(&peer->timer_persistent_keepalive, + wg_expired_send_persistent_keepalive, 0); ++ timer_setup(&peer->timer_forced_handshake, ++ wg_expired_forced_handshake, 0); + INIT_WORK(&peer->clear_peer_work, wg_queued_expired_zero_key_material); + peer->timer_handshake_attempts = 0; + peer->sent_lastminute_handshake = false; + peer->timer_need_another_keepalive = false; + } + + void wg_timers_stop(struct wg_peer *peer) + { + del_timer_sync(&peer->timer_retransmit_handshake); + del_timer_sync(&peer->timer_send_keepalive); + del_timer_sync(&peer->timer_new_handshake); ++ del_timer_sync(&peer->timer_forced_handshake); + del_timer_sync(&peer->timer_zero_key_material); + del_timer_sync(&peer->timer_persistent_keepalive); + flush_work(&peer->clear_peer_work); + } +--- a/src/uapi/wireguard.h ++++ b/src/uapi/wireguard.h +@@ -45,14 +45,16 @@ + * WGALLOWEDIP_A_CIDR_MASK: NLA_U8 + * 0: NLA_NESTED + * ... + * 0: NLA_NESTED + * ... + * ... + * WGPEER_A_PROTOCOL_VERSION: NLA_U32 ++ * WGPEER_A_FORCED_HANDSHAKE_INTERVAL: NLA_U16 ++ * WGPEER_A_LAST_RECEIVE_TIME: NLA_EXACT_LEN, struct __kernel_timespec + * 0: NLA_NESTED + * ... + * ... + * + * It is possible that all of the allowed IPs of a single peer will not + * fit within a single netlink message. In that case, the same peer will + * be written in the following message, except it will only contain +@@ -107,14 +109,15 @@ + * ... + * ... + * WGPEER_A_PROTOCOL_VERSION: NLA_U32, should not be set or used at + * all by most users of this API, as the + * most recent protocol will be used when + * this is unset. Otherwise, must be set + * to 1. ++ * WGPEER_A_FORCED_HANDSHAKE_INTERVAL: NLA_U16, 0 to disable + * 0: NLA_NESTED + * ... + * ... + * + * It is possible that the amount of configuration data exceeds that of + * the maximum message length accepted by the kernel. In that case, several + * messages should be sent one after another, with each successive one +@@ -176,14 +179,16 @@ enum wgpeer_attribute { + WGPEER_A_ENDPOINT, + WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL, + WGPEER_A_LAST_HANDSHAKE_TIME, + WGPEER_A_RX_BYTES, + WGPEER_A_TX_BYTES, + WGPEER_A_ALLOWEDIPS, + WGPEER_A_PROTOCOL_VERSION, ++ WGPEER_A_FORCED_HANDSHAKE_INTERVAL, ++ WGPEER_A_LAST_RECEIVE_TIME, + __WGPEER_A_LAST + }; + #define WGPEER_A_MAX (__WGPEER_A_LAST - 1) + + enum wgallowedip_attribute { + WGALLOWEDIP_A_UNSPEC, + WGALLOWEDIP_A_FAMILY, diff --git a/src/bases/udr-2.2.12/prefix b/src/bases/udr-3.0.13/prefix similarity index 100% rename from src/bases/udr-2.2.12/prefix rename to src/bases/udr-3.0.13/prefix diff --git a/src/bases/udr-3.0.13/versions.txt b/src/bases/udr-3.0.13/versions.txt new file mode 100644 index 0000000..7edb2fa --- /dev/null +++ b/src/bases/udr-3.0.13/versions.txt @@ -0,0 +1 @@ +,