From 9eb3281f9f8e4ac0d1050a0e03ad70dd933ccb85 Mon Sep 17 00:00:00 2001 From: peacey Date: Thu, 2 Mar 2023 14:32:19 -0700 Subject: [PATCH] Add wireguard patches from Unifi GPL sources Wireguard patches allow module to work better with teleport and other Ubiquiti specific kernel changes. Also add UDM base module, and upgrade UDR sources to 3.0.13 --- src/bases/linux-udr-2.2.12.tar.gz | 3 - src/bases/linux-udr-3.0.13.tar.gz | 3 + src/bases/udm-1.11.0/buildroot-config.txt | 2 +- ...ude-skb_put_data-for-kernel-v4.4.198.patch | 14 + ...lude-skb_put_data-for-kernel-v4.4.60.patch | 14 + ...t-reuse-addr-and-port-for-udp-tunnel.patch | 73 + ...1-ubnt-protection-from-routing-loops.patch | 31 + ...99-ubnt-add-get-last-receive-timeout.patch | 233 + src/bases/udm-2.4/buildroot-config.txt | 2 +- ...ude-skb_put_data-for-kernel-v4.4.198.patch | 14 + ...lude-skb_put_data-for-kernel-v4.4.60.patch | 14 + ...t-reuse-addr-and-port-for-udp-tunnel.patch | 73 + ...1-ubnt-protection-from-routing-loops.patch | 31 + ...99-ubnt-add-get-last-receive-timeout.patch | 233 + src/bases/udm-base-2.4/buildroot-config.txt | 3557 ++++++++++++++ src/bases/udm-base-2.4/kernel-config | 4194 +++++++++++++++++ .../linux-0001-localversion.patch | 4 + ...ude-skb_put_data-for-kernel-v4.4.198.patch | 14 + ...lude-skb_put_data-for-kernel-v4.4.60.patch | 14 + ...t-reuse-addr-and-port-for-udp-tunnel.patch | 73 + ...1-ubnt-protection-from-routing-loops.patch | 31 + ...99-ubnt-add-get-last-receive-timeout.patch | 233 + src/bases/udm-base-2.4/prefix | 1 + .../{udr-2.2.12 => udm-base-2.4}/versions.txt | 0 ...s-generic-drop-alignment-requirement.patch | 216 - ...001-647-bridge_netfilter_add_ebt_set.patch | 46 - ...ays-create-console-node-in-initramfs.patch | 46 - .../linux-patches/001-930-crashlog.patch | 381 -- ...e-filenames-from-deps_initramfs-list.patch | 34 - .../001-999-fix-build-errors.patch | 33 - ...99-ubnt-100-wireless-max-frequencies.patch | 19 - .../001-999-ubnt-104-disable-bql.patch | 19 - ...999-ubnt-106-ioctl-private-extension.patch | 90 - ...999-ubnt-107-reenable-slaved-netpoll.patch | 24 - .../001-999-ubnt-108-netconsole-id.patch | 56 - .../001-999-ubnt-110-random_input_words.patch | 62 - ...001-999-ubnt-111-no-initramfs-ccache.patch | 18 - ...01-999-ubnt-709-ledtrig-ext-makefile.patch | 29 - ...01-999-ubnt-710-increase-wevent-size.patch | 19 - ...e-magic-sysrq-serial-enable-password.patch | 48 - ...99-ubnt-715-fix-ble-disconnect-issue.patch | 21 - .../001-999-ubnt-719-send-phy-event.patch | 81 - .../001-999-ubnt-721-bridge-log-fix.patch | 178 - ...01-999-ubnt-722-use-pfifo-by-default.patch | 74 - .../001-999-ubnt-728-ifindex-cache.patch | 258 - .../001-999-ubnt-729-cve-2019-8912.patch | 22 - ...730-add-memory-double-free-detection.patch | 18 - .../001-999-ubnt-747-remove-warn-log.patch | 19 - .../001-999-ubnt-748-encrypt-netconsole.patch | 589 --- .../001-999-ubnt-751-mtd-cb.patch | 43 - ...001-999-ubnt-755-pinctrl-memleak-fix.patch | 18 - ...-ubnt-756-conntrack-no-udp-eth-mcast.patch | 75 - .../001-999-ubnt-757-netconsole-always.patch | 63 - ...-ubnt-758-fix-netconsole-crash-issue.patch | 65 - ...ll-make-ndo_poll_controller-optional.patch | 128 - ...t-net-disable-netpoll-on-fresh-napis.patch | 67 - .../001-999-ubnt-763-mips-sigfpe-debug.patch | 20 - .../002-0999-UBNT-01-nfbypass.patch | 132 - ...-UBNT-02-fix-iwreq-ifreq-64bit-issue.patch | 32 - ...99-UBNT-fix-mt7622-wdt-reset-setting.patch | 37 - .../linux-patches/003-dtc-lexer.patch | 23 - .../fix-compile-errors.patch | 18 - .../buildroot-config.txt | 2 +- .../{udr-2.2.12 => udr-3.0.13}/kernel-config | 0 ...ude-skb_put_data-for-kernel-v4.4.198.patch | 14 + ...lude-skb_put_data-for-kernel-v4.4.60.patch | 14 + ...t-reuse-addr-and-port-for-udp-tunnel.patch | 73 + ...1-ubnt-protection-from-routing-loops.patch | 31 + ...99-ubnt-add-get-last-receive-timeout.patch | 233 + src/bases/{udr-2.2.12 => udr-3.0.13}/prefix | 0 src/bases/udr-3.0.13/versions.txt | 1 + 71 files changed, 9223 insertions(+), 3127 deletions(-) delete mode 100644 src/bases/linux-udr-2.2.12.tar.gz create mode 100644 src/bases/linux-udr-3.0.13.tar.gz create mode 100644 src/bases/udm-1.11.0/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch create mode 100644 src/bases/udm-1.11.0/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch create mode 100644 src/bases/udm-1.11.0/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch create mode 100644 src/bases/udm-1.11.0/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch create mode 100644 src/bases/udm-1.11.0/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch create mode 100644 src/bases/udm-2.4/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch create mode 100644 src/bases/udm-2.4/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch create mode 100644 src/bases/udm-2.4/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch create mode 100644 src/bases/udm-2.4/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch create mode 100644 src/bases/udm-2.4/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch create mode 100644 src/bases/udm-base-2.4/buildroot-config.txt create mode 100644 src/bases/udm-base-2.4/kernel-config create mode 100644 src/bases/udm-base-2.4/linux-patches/linux-0001-localversion.patch create mode 100644 src/bases/udm-base-2.4/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch create mode 100644 src/bases/udm-base-2.4/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch create mode 100644 src/bases/udm-base-2.4/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch create mode 100644 src/bases/udm-base-2.4/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch create mode 100644 src/bases/udm-base-2.4/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch create mode 100644 src/bases/udm-base-2.4/prefix rename src/bases/{udr-2.2.12 => udm-base-2.4}/versions.txt (100%) delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-087-crypto-aes-generic-drop-alignment-requirement.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-647-bridge_netfilter_add_ebt_set.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-922-always-create-console-node-in-initramfs.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-930-crashlog.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-970-remove-unsane-filenames-from-deps_initramfs-list.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-fix-build-errors.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-100-wireless-max-frequencies.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-104-disable-bql.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-106-ioctl-private-extension.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-107-reenable-slaved-netpoll.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-108-netconsole-id.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-110-random_input_words.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-111-no-initramfs-ccache.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-709-ledtrig-ext-makefile.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-710-increase-wevent-size.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-714-serial_core-magic-sysrq-serial-enable-password.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-715-fix-ble-disconnect-issue.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-719-send-phy-event.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-721-bridge-log-fix.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-722-use-pfifo-by-default.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-728-ifindex-cache.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-729-cve-2019-8912.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-730-add-memory-double-free-detection.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-747-remove-warn-log.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-748-encrypt-netconsole.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-751-mtd-cb.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-755-pinctrl-memleak-fix.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-756-conntrack-no-udp-eth-mcast.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-757-netconsole-always.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-758-fix-netconsole-crash-issue.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-760-backport-netpoll-make-ndo_poll_controller-optional.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-761-backport-net-disable-netpoll-on-fresh-napis.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/001-999-ubnt-763-mips-sigfpe-debug.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-01-nfbypass.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-02-fix-iwreq-ifreq-64bit-issue.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/002-0999-UBNT-fix-mt7622-wdt-reset-setting.patch delete mode 100644 src/bases/udr-2.2.12/linux-patches/003-dtc-lexer.patch delete mode 100644 src/bases/udr-2.2.12/patches/wireguard-linux-compat/fix-compile-errors.patch rename src/bases/{udr-2.2.12 => udr-3.0.13}/buildroot-config.txt (99%) rename src/bases/{udr-2.2.12 => udr-3.0.13}/kernel-config (100%) create mode 100644 src/bases/udr-3.0.13/patches/wireguard-linux-compat/0001-exclude-skb_put_data-for-kernel-v4.4.198.patch create mode 100644 src/bases/udr-3.0.13/patches/wireguard-linux-compat/0002-exclude-skb_put_data-for-kernel-v4.4.60.patch create mode 100644 src/bases/udr-3.0.13/patches/wireguard-linux-compat/021-ubnt-reuse-addr-and-port-for-udp-tunnel.patch create mode 100644 src/bases/udr-3.0.13/patches/wireguard-linux-compat/041-ubnt-protection-from-routing-loops.patch create mode 100644 src/bases/udr-3.0.13/patches/wireguard-linux-compat/099-ubnt-add-get-last-receive-timeout.patch rename src/bases/{udr-2.2.12 => udr-3.0.13}/prefix (100%) create mode 100644 src/bases/udr-3.0.13/versions.txt 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 @@ +,