diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 2f6d2790b1..107246aefd 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -2,9 +2,9 @@ LINUX_RELEASE?=1 -LINUX_VERSION-3.18 = .45 +LINUX_VERSION-3.18 = .71 -LINUX_KERNEL_MD5SUM-3.18.45 = c527bae0aa1a5d6f3ebe31ad348c5339 +LINUX_KERNEL_MD5SUM-3.18.71 = 98875fe779041e89c37e51b0208011ea ifdef KERNEL_PATCHVER LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER))) diff --git a/package/base-files/files/bin/login.sh b/package/base-files/files/bin/login.sh index 25627b66b2..754d290857 100755 --- a/package/base-files/files/bin/login.sh +++ b/package/base-files/files/bin/login.sh @@ -10,8 +10,7 @@ then else cat << EOF === IMPORTANT ============================ - Use 'passwd' to set your login password - this will disable telnet and enable SSH + Use 'passwd' to set your login password! ------------------------------------------ EOF fi diff --git a/package/base-files/files/lib/preinit/99_10_failsafe_login b/package/base-files/files/lib/preinit/99_10_failsafe_login index 15dcbd884f..b12e31702a 100644 --- a/package/base-files/files/lib/preinit/99_10_failsafe_login +++ b/package/base-files/files/lib/preinit/99_10_failsafe_login @@ -1,9 +1,10 @@ #!/bin/sh -# Copyright (C) 2006 OpenWrt.org +# Copyright (C) 2006-2015 OpenWrt.org # Copyright (C) 2010 Vertical Communications failsafe_netlogin () { - telnetd -l /bin/login.sh <> /dev/null 2>&1 + dropbearkey -t rsa -s 1024 -f /tmp/dropbear_failsafe_host_key + dropbear -r /tmp/dropbear_failsafe_host_key <> /dev/null 2>&1 } failsafe_shell() { diff --git a/package/kernel/mac80211/patches/090-remove-cred.patch b/package/kernel/mac80211/patches/090-remove-cred.patch new file mode 100644 index 0000000000..3adb2afb86 --- /dev/null +++ b/package/kernel/mac80211/patches/090-remove-cred.patch @@ -0,0 +1,15 @@ +This is only needed for kernel < 2.6.29 and conflicts with kernel 4.4.42 + +--- a/backport-include/linux/cred.h ++++ /dev/null +@@ -1,10 +0,0 @@ +-#ifndef __BACKPORT_LINUX_CRED_H +-#define __BACKPORT_LINUX_CRED_H +-#include_next +-#include +- +-#ifndef current_user_ns +-#define current_user_ns() (current->nsproxy->user_ns) +-#endif +- +-#endif /* __BACKPORT_LINUX_CRED_H */ diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile index 19a8df9009..80ac42a5dc 100644 --- a/package/network/services/dnsmasq/Makefile +++ b/package/network/services/dnsmasq/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dnsmasq -PKG_VERSION:=2.73 +PKG_VERSION:=2.77 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq -PKG_MD5SUM:=b8bfe96d22945c8cf4466826ba9b21bd +PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq/ +PKG_MD5SUM:=5b973fea8e66e76a0e6bb44adefc6f9b PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING @@ -24,6 +24,7 @@ PKG_INSTALL:=1 PKG_BUILD_PARALLEL:=1 PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dhcpv6 \ CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dnssec \ + CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_noid \ CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_auth \ CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_ipset @@ -50,7 +51,7 @@ endef define Package/dnsmasq-full $(call Package/dnsmasq/Default) - TITLE += (with DNSSEC, DHCPv6, Auth DNS, IPset enabled by default) + TITLE += (with DNSSEC, DHCPv6, Auth DNS, IPset, NO_ID enabled by default) DEPENDS:=+PACKAGE_dnsmasq_full_dnssec:libnettle \ +PACKAGE_dnsmasq_full_dhcpv6:kmod-ipv6 \ +PACKAGE_dnsmasq_full_ipset:kmod-ipt-ipset @@ -70,8 +71,8 @@ endef define Package/dnsmasq-full/description $(call Package/dnsmasq/description) -This is a fully configurable variant with DHCPv6, DNSSEC, Authroitative DNS and -IPset support enabled by default. +This is a fully configurable variant with DHCPv6, DNSSEC, Authoritative DNS and +IPset, NO_ID support enabled by default. endef define Package/dnsmasq/conffiles @@ -88,6 +89,9 @@ define Package/dnsmasq-full/config config PACKAGE_dnsmasq_full_dnssec bool "Build with DNSSEC support." default y + config PACKAGE_dnsmasq_full_noid + bool "Build with NO_ID. (hide *.bind pseudo domain)" + default y config PACKAGE_dnsmasq_full_auth bool "Build with the facility to act as an authoritative DNS server." default y @@ -113,10 +117,11 @@ ifeq ($(BUILD_VARIANT),full) COPTS += $(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dhcpv6),,-DNO_DHCP6) \ $(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dnssec),-DHAVE_DNSSEC) \ $(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_auth),,-DNO_AUTH) \ + $(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_noid),-DNO_ID,) \ $(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_ipset),,-DNO_IPSET) COPTS += $(if $(CONFIG_LIBNETTLE_MINI),-DNO_GMP,) else - COPTS += -DNO_AUTH -DNO_IPSET + COPTS += -DNO_AUTH -DNO_IPSET -DNO_ID endif MAKE_FLAGS := \ diff --git a/package/network/services/dnsmasq/patches/025-fix-CVE-2017-13704.patch b/package/network/services/dnsmasq/patches/025-fix-CVE-2017-13704.patch new file mode 100644 index 0000000000..8848131dac --- /dev/null +++ b/package/network/services/dnsmasq/patches/025-fix-CVE-2017-13704.patch @@ -0,0 +1,37 @@ +From 38af9b1ac3242a4128e88069c495024caa565f0e Mon Sep 17 00:00:00 2001 +From: Kevin Darbyshire-Bryant +Date: Tue, 29 Aug 2017 12:35:40 +0100 +Subject: [PATCH] forward.c: fix CVE-2017-13704 + +Fix SIGSEGV in rfc1035.c answer_request() line 1228 where memset() +is called with header & limit pointing at the same address and thus +tries to clear memory from before the buffer begins. + +answer_request() is called with an invalid edns packet size provided by +the client. Ensure the udp_size provided by the client is bounded by +512 and configured maximum as per RFC 6891 6.2.3 "Values lower than 512 +MUST be treated as equal to 512" + +The client that exposed the problem provided a payload udp size of 0. + +Signed-off-by: Kevin Darbyshire-Bryant +--- + src/forward.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/forward.c b/src/forward.c +index f22556a..62c5a5a 100644 +--- a/src/forward.c ++++ b/src/forward.c +@@ -1408,6 +1408,8 @@ void receive_query(struct listener *listen, time_t now) + defaults to 512 */ + if (udp_size > daemon->edns_pktsz) + udp_size = daemon->edns_pktsz; ++ if (udp_size < 512) ++ udp_size = 512; /* RFC 6891 6.2.3 */ + } + + #ifdef HAVE_AUTH +-- +2.7.4 + diff --git a/package/network/services/dnsmasq/patches/100-fix-dhcp-no-address-warning.patch b/package/network/services/dnsmasq/patches/100-fix-dhcp-no-address-warning.patch deleted file mode 100644 index a502a60aee..0000000000 --- a/package/network/services/dnsmasq/patches/100-fix-dhcp-no-address-warning.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- a/src/dhcp.c -+++ b/src/dhcp.c -@@ -146,7 +146,7 @@ void dhcp_packet(time_t now, int pxe_fd) - struct iovec iov; - ssize_t sz; - int iface_index = 0, unicast_dest = 0, is_inform = 0; -- struct in_addr iface_addr; -+ struct in_addr iface_addr, *addrp = NULL; - struct iface_param parm; - #ifdef HAVE_LINUX_NETWORK - struct arpreq arp_req; -@@ -272,11 +272,9 @@ void dhcp_packet(time_t now, int pxe_fd) - { - ifr.ifr_addr.sa_family = AF_INET; - if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) != -1 ) -- iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr; -- else - { -- my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name); -- return; -+ addrp = &iface_addr; -+ iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr; - } - - for (tmp = daemon->dhcp_except; tmp; tmp = tmp->next) -@@ -295,7 +293,7 @@ void dhcp_packet(time_t now, int pxe_fd) - parm.relay_local.s_addr = 0; - parm.ind = iface_index; - -- if (!iface_check(AF_INET, (struct all_addr *)&iface_addr, ifr.ifr_name, NULL)) -+ if (!iface_check(AF_INET, (struct all_addr *)addrp, ifr.ifr_name, NULL)) - { - /* If we failed to match the primary address of the interface, see if we've got a --listen-address - for a secondary */ -@@ -315,6 +313,12 @@ void dhcp_packet(time_t now, int pxe_fd) - complete_context(match.addr, iface_index, NULL, match.netmask, match.broadcast, &parm); - } - -+ if (!addrp) -+ { -+ my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name); -+ return; -+ } -+ - if (!iface_enumerate(AF_INET, &parm, complete_context)) - return; - diff --git a/package/network/services/dnsmasq/patches/110-ipset-remove-old-kernel-support.patch b/package/network/services/dnsmasq/patches/110-ipset-remove-old-kernel-support.patch index 61b09d5b2c..88e334b0fc 100644 --- a/package/network/services/dnsmasq/patches/110-ipset-remove-old-kernel-support.patch +++ b/package/network/services/dnsmasq/patches/110-ipset-remove-old-kernel-support.patch @@ -44,67 +44,22 @@ (buffer = safe_malloc(BUFF_SZ)) && (ipset_sock = socket(AF_NETLINK, SOCK_RAW, NETLINK_NETFILTER)) != -1 && (bind(ipset_sock, (struct sockaddr *)&snl, sizeof(snl)) != -1)) -@@ -168,62 +149,16 @@ static int new_add_to_ipset(const char * - } - - --static int old_add_to_ipset(const char *setname, const struct all_addr *ipaddr, int remove) --{ -- socklen_t size; -- struct ip_set_req_adt_get { -- unsigned op; -- unsigned version; -- union { -- char name[IPSET_MAXNAMELEN]; -- uint16_t index; -- } set; -- char typename[IPSET_MAXNAMELEN]; -- } req_adt_get; -- struct ip_set_req_adt { -- unsigned op; -- uint16_t index; -- uint32_t ip; -- } req_adt; -- -- if (strlen(setname) >= sizeof(req_adt_get.set.name)) -- { -- errno = ENAMETOOLONG; -- return -1; -- } -- -- req_adt_get.op = 0x10; -- req_adt_get.version = 3; -- strcpy(req_adt_get.set.name, setname); -- size = sizeof(req_adt_get); -- if (getsockopt(ipset_sock, SOL_IP, 83, &req_adt_get, &size) < 0) -- return -1; -- req_adt.op = remove ? 0x102 : 0x101; -- req_adt.index = req_adt_get.set.index; -- req_adt.ip = ntohl(ipaddr->addr.addr4.s_addr); -- if (setsockopt(ipset_sock, SOL_IP, 83, &req_adt, sizeof(req_adt)) < 0) -- return -1; -- -- return 0; --} -- -- -- - int add_to_ipset(const char *setname, const struct all_addr *ipaddr, int flags, int remove) - { - int af = AF_INET; - - #ifdef HAVE_IPV6 +@@ -217,17 +198,10 @@ int add_to_ipset(const char *setname, co if (flags & F_IPV6) -- { + { af = AF_INET6; - /* old method only supports IPv4 */ - if (old_kernel) -- return -1; -- } +- { +- errno = EAFNOSUPPORT ; +- ret = -1; +- } + } #endif -- return old_kernel ? old_add_to_ipset(setname, ipaddr, remove) : new_add_to_ipset(setname, ipaddr, af, remove); -+ return new_add_to_ipset(setname, ipaddr, af, remove); - } +- if (ret != -1) +- ret = old_kernel ? old_add_to_ipset(setname, ipaddr, remove) : new_add_to_ipset(setname, ipaddr, af, remove); ++ ret = new_add_to_ipset(setname, ipaddr, af, remove); - #endif + if (ret == -1) + my_syslog(LOG_ERR, _("failed to update ipset %s: %s"), setname, strerror(errno)); diff --git a/package/network/services/dnsmasq/patches/210-dnssec-improve-timestamp-heuristic.patch b/package/network/services/dnsmasq/patches/210-dnssec-improve-timestamp-heuristic.patch index 97dfe3bdbf..2f854d490b 100644 --- a/package/network/services/dnsmasq/patches/210-dnssec-improve-timestamp-heuristic.patch +++ b/package/network/services/dnsmasq/patches/210-dnssec-improve-timestamp-heuristic.patch @@ -10,40 +10,38 @@ Signed-off-by: Steven Barth --- a/src/dnssec.c +++ b/src/dnssec.c -@@ -432,17 +432,24 @@ static int back_to_the_future; +@@ -462,17 +462,24 @@ static time_t timestamp_time; int setup_timestamp(void) { struct stat statbuf; -- + time_t now; + time_t base = 1420070400; /* 1-1-2015 */ -+ - back_to_the_future = 0; + + daemon->back_to_the_future = 0; if (!daemon->timestamp_file) return 0; -- + + now = time(NULL); + + if (!stat("/proc/self/exe", &statbuf) && difftime(statbuf.st_mtime, base) > 0) + base = statbuf.st_mtime; -+ + if (stat(daemon->timestamp_file, &statbuf) != -1) { timestamp_time = statbuf.st_mtime; check_and_exit: - if (difftime(timestamp_time, time(0)) <= 0) -+ if (difftime(now, base) >= 0 && difftime(timestamp_time, now) <= 0) ++ if (difftime(now, base) >= 0 && difftime(timestamp_time, now) <= 0) { /* time already OK, update timestamp, and do key checking from the start. */ - if (utime(daemon->timestamp_file, NULL) == -1) -@@ -463,7 +470,7 @@ int setup_timestamp(void) + if (utimes(daemon->timestamp_file, NULL) == -1) +@@ -493,7 +500,7 @@ int setup_timestamp(void) close(fd); -- timestamp_time = timbuf.actime = timbuf.modtime = 1420070400; /* 1-1-2015 */ -+ timestamp_time = timbuf.actime = timbuf.modtime = base; - if (utime(daemon->timestamp_file, &timbuf) == 0) - goto check_and_exit; - } +- timestamp_time = 1420070400; /* 1-1-2015 */ ++ timestamp_time = base; /* 1-1-2015 */ + tv[0].tv_sec = tv[1].tv_sec = timestamp_time; + tv[0].tv_usec = tv[1].tv_usec = 0; + if (utimes(daemon->timestamp_file, tv) == 0) diff --git a/package/network/services/dnsmasq/patches/230-fix-poll-h-include-warning-on-musl.patch b/package/network/services/dnsmasq/patches/230-fix-poll-h-include-warning-on-musl.patch new file mode 100644 index 0000000000..19300f7d66 --- /dev/null +++ b/package/network/services/dnsmasq/patches/230-fix-poll-h-include-warning-on-musl.patch @@ -0,0 +1,18 @@ +dnsmasq: fix warning with poll.h include on musl + +Warning is: + #warning redirecting incorrect #include to + +Signed-off-by: Kevin Darbyshire-Bryant + +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -82,7 +82,7 @@ typedef unsigned long long u64; + #if defined(HAVE_SOLARIS_NETWORK) + # include + #endif +-#include ++#include + #include + #include + #include diff --git a/package/network/services/dropbear/Config.in b/package/network/services/dropbear/Config.in index e2a761034f..7c2edd79f2 100644 --- a/package/network/services/dropbear/Config.in +++ b/package/network/services/dropbear/Config.in @@ -1,6 +1,15 @@ menu "Configuration" depends on PACKAGE_dropbear +config DROPBEAR_CURVE25519 + bool "Curve25519 support" + default y + help + This enables the following key exchange algorithm: + curve25519-sha256@libssh.org + + Increases binary size by about 13 kB uncompressed (MIPS). + config DROPBEAR_ECC bool "Elliptic curve cryptography (ECC)" default n @@ -12,7 +21,6 @@ config DROPBEAR_ECC ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 - curve25519-sha256@libssh.org Public key algorithms: ecdsa-sha2-nistp256 @@ -22,6 +30,21 @@ config DROPBEAR_ECC Does not generate ECC host keys by default (ECC key exchange will not be used, only ECC public key auth). - Increases binary size by about 36 kB (MIPS). + Increases binary size by about 23 kB (MIPS). + +config DROPBEAR_UTMP + bool "Utmp support" + default n + depends on BUSYBOX_CONFIG_FEATURE_UTMP + help + This enables dropbear utmp support, the file /var/run/utmp is used to + track who is currently logged in. + +config DROPBEAR_PUTUTLINE + bool "Pututline support" + default n + depends on DROPBEAR_UTMP + help + Dropbear will use pututline() to write the utmp structure into the utmp file. endmenu diff --git a/package/network/services/dropbear/Makefile b/package/network/services/dropbear/Makefile index 35958d332c..55b39d1700 100644 --- a/package/network/services/dropbear/Makefile +++ b/package/network/services/dropbear/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2006-2014 OpenWrt.org +# Copyright (C) 2006-2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -8,14 +8,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dropbear -PKG_VERSION:=2015.67 +PKG_VERSION:=2017.75 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:= \ http://matt.ucc.asn.au/dropbear/releases/ \ https://dropbear.nl/mirror/releases/ -PKG_MD5SUM:=e967e320344cd4bfebe321e3ab8514d6 +PKG_MD5SUM:=e57e9b9d25705dcb073ba15c416424fd PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE libtomcrypt/LICENSE libtommath/LICENSE @@ -23,10 +23,14 @@ PKG_LICENSE_FILES:=LICENSE libtomcrypt/LICENSE libtommath/LICENSE PKG_BUILD_PARALLEL:=1 PKG_USE_MIPS16:=0 -PKG_CONFIG_DEPENDS:=CONFIG_DROPBEAR_ECC +PKG_CONFIG_DEPENDS:=CONFIG_TARGET_INIT_PATH CONFIG_DROPBEAR_ECC CONFIG_DROPBEAR_CURVE25519 include $(INCLUDE_DIR)/package.mk +ifneq ($(DUMP),1) + STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell $(SH_FUNC) echo $(CONFIG_TARGET_INIT_PATH) | md5s) +endif + define Package/dropbear/Default URL:=http://matt.ucc.asn.au/dropbear/ endef @@ -48,7 +52,6 @@ endef define Package/dropbear/conffiles /etc/dropbear/dropbear_rsa_host_key -/etc/dropbear/dropbear_dss_host_key /etc/config/dropbear endef @@ -65,25 +68,34 @@ CONFIGURE_ARGS += \ --enable-syslog \ $(if $(CONFIG_SHADOW_PASSWORDS),,--disable-shadow) \ --disable-lastlog \ - --disable-utmp \ - --disable-utmpx \ + $(if $(CONFIG_DROPBEAR_UTMP),,--disable-utmp) \ --disable-wtmp \ --disable-wtmpx \ --disable-loginfunc \ - --disable-pututline \ + $(if $(CONFIG_DROPBEAR_PUTUTLINE),,--disable-pututline) \ --disable-pututxline \ --disable-zlib \ --enable-bundled-libtom -TARGET_CFLAGS += -DARGTYPE=3 -ffunction-sections -fdata-sections +TARGET_CFLAGS += -DDEFAULT_PATH=\\\"$(TARGET_INIT_PATH)\\\" -DARGTYPE=3 -ffunction-sections -fdata-sections TARGET_LDFLAGS += -Wl,--gc-sections define Build/Configure $(Build/Configure/Default) + $(SED) 's,^#define DEFAULT_PATH .*$$$$,#define DEFAULT_PATH "$(TARGET_INIT_PATH)",g' \ + $(PKG_BUILD_DIR)/options.h + + awk 'BEGIN { rc = 1 } \ + /'DROPBEAR_CURVE25519'/ { $$$$0 = "$(if $(CONFIG_DROPBEAR_CURVE25519),,// )#define 'DROPBEAR_CURVE25519'"; rc = 0 } \ + { print } \ + END { exit(rc) }' $(PKG_BUILD_DIR)/options.h \ + >$(PKG_BUILD_DIR)/options.h.new && \ + mv $(PKG_BUILD_DIR)/options.h.new $(PKG_BUILD_DIR)/options.h + # Enforce that all replacements are made, otherwise options.h has changed # format and this logic is broken. - for OPTION in DROPBEAR_ECDSA DROPBEAR_ECDH DROPBEAR_CURVE25519; do \ + for OPTION in DROPBEAR_ECDSA DROPBEAR_ECDH; do \ awk 'BEGIN { rc = 1 } \ /'$$$$OPTION'/ { $$$$0 = "$(if $(CONFIG_DROPBEAR_ECC),,// )#define '$$$$OPTION'"; rc = 0 } \ { print } \ @@ -91,6 +103,13 @@ define Build/Configure >$(PKG_BUILD_DIR)/options.h.new && \ mv $(PKG_BUILD_DIR)/options.h.new $(PKG_BUILD_DIR)/options.h || exit 1; \ done + + # remove protocol idented software version number + $(SED) 's,^#define LOCAL_IDENT .*$$$$,#define LOCAL_IDENT "SSH-2.0-dropbear",g' \ + $(PKG_BUILD_DIR)/sysoptions.h + + # Enforce rebuild of svr-chansession.c + rm -f $(PKG_BUILD_DIR)/svr-chansession.o endef define Build/Compile @@ -118,7 +137,6 @@ define Package/dropbear/install $(INSTALL_DIR) $(1)/usr/lib/opkg/info $(INSTALL_DIR) $(1)/etc/dropbear touch $(1)/etc/dropbear/dropbear_rsa_host_key - touch $(1)/etc/dropbear/dropbear_dss_host_key endef define Package/dropbearconvert/install diff --git a/package/network/services/dropbear/files/dropbear.init b/package/network/services/dropbear/files/dropbear.init index 6de0142728..5c3345d40c 100755 --- a/package/network/services/dropbear/files/dropbear.init +++ b/package/network/services/dropbear/files/dropbear.init @@ -37,7 +37,6 @@ validate_section_dropbear() 'RootPasswordAuth:bool:1' \ 'RootLogin:bool:1' \ 'rsakeyfile:file' \ - 'dsskeyfile:file' \ 'BannerFile:file' \ 'Port:list(port):22' \ 'SSHKeepAlive:uinteger:300' \ @@ -49,7 +48,7 @@ dropbear_instance() { local PasswordAuth enable Interface GatewayPorts \ RootPasswordAuth RootLogin rsakeyfile \ - dsskeyfile BannerFile Port SSHKeepAlive IdleTimeout \ + BannerFile Port SSHKeepAlive IdleTimeout \ mdns ipaddrs validate_section_dropbear "${1}" || { @@ -75,18 +74,18 @@ dropbear_instance() [ "${RootPasswordAuth}" -eq 0 ] && procd_append_param command -g [ "${RootLogin}" -eq 0 ] && procd_append_param command -w [ -n "${rsakeyfile}" ] && procd_append_param command -r "${rsakeyfile}" - [ -n "${dsskeyfile}" ] && procd_append_param command -d "${dsskeyfile}" [ -n "${BannerFile}" ] && procd_append_param command -b "${BannerFile}" append_ports "${ipaddrs}" "${Port}" [ "${IdleTimeout}" -ne 0 ] && procd_append_param command -I "${IdleTimeout}" [ "${SSHKeepAlive}" -ne 0 ] && procd_append_param command -K "${SSHKeepAlive}" [ "${mdns}" -ne 0 ] && procd_add_mdns "ssh" "tcp" "$Port" "daemon=dropbear" + procd_set_param respawn procd_close_instance } keygen() { - for keytype in rsa dss; do + for keytype in rsa; do # check for keys key=dropbear/dropbear_${keytype}_host_key [ -f /tmp/$key -o -s /etc/$key ] || { @@ -107,10 +106,15 @@ keygen() chmod 0700 /etc/dropbear } +load_interfaces() +{ + config_get interface "$1" Interface + interfaces=" ${interface} ${interfaces}" +} + start_service() { - [ -s /etc/dropbear/dropbear_rsa_host_key -a \ - -s /etc/dropbear/dropbear_dss_host_key ] || keygen + [ -s /etc/dropbear/dropbear_rsa_host_key ] || keygen . /lib/functions.sh . /lib/functions/network.sh @@ -121,7 +125,21 @@ start_service() service_triggers() { - procd_add_reload_trigger "dropbear" + local interfaces + + procd_open_trigger + procd_add_config_trigger "config.change" "dropbear" /etc/init.d/dropbear reload + + config_load "${NAME}" + config_foreach load_interfaces dropbear + + [ -n "${interfaces}" ] & { + for n in $interfaces ; do + procd_add_interface_trigger "interface.*" $n /etc/init.d/dropbear reload + done + } + procd_close_trigger + procd_add_validation validate_section_dropbear } diff --git a/package/network/services/dropbear/patches/100-pubkey_path.patch b/package/network/services/dropbear/patches/100-pubkey_path.patch index 456874b730..401c7e1ba5 100644 --- a/package/network/services/dropbear/patches/100-pubkey_path.patch +++ b/package/network/services/dropbear/patches/100-pubkey_path.patch @@ -1,6 +1,6 @@ --- a/svr-authpubkey.c +++ b/svr-authpubkey.c -@@ -208,17 +208,21 @@ static int checkpubkey(unsigned char* al +@@ -220,14 +220,20 @@ static int checkpubkey(char* algo, unsig goto out; } @@ -12,9 +12,6 @@ - filename = m_malloc(len + 22); - snprintf(filename, len + 22, "%s/.ssh/authorized_keys", - ses.authstate.pw_dir); -- -- /* open the file */ -- authfile = fopen(filename, "r"); + if (ses.authstate.pw_uid != 0) { + /* we don't need to check pw and pw_dir for validity, since + * its been done in checkpubkeyperms. */ @@ -22,18 +19,17 @@ + /* allocate max required pathname storage, + * = path + "/.ssh/authorized_keys" + '\0' = pathlen + 22 */ + filename = m_malloc(len + 22); -+ snprintf(filename, len + 22, "%s/.ssh/authorized_keys", -+ ses.authstate.pw_dir); -+ -+ /* open the file */ -+ authfile = fopen(filename, "r"); ++ snprintf(filename, len + 22, "%s/.ssh/authorized_keys", ++ ses.authstate.pw_dir); + } else { -+ authfile = fopen("/etc/dropbear/authorized_keys","r"); ++ filename = m_malloc(30); ++ strncpy(filename, "/etc/dropbear/authorized_keys", 30); + } - if (authfile == NULL) { - goto out; - } -@@ -371,26 +375,35 @@ static int checkpubkeyperms() { ++ + + /* open the file as the authenticating user. */ + origuid = getuid(); +@@ -396,26 +402,35 @@ static int checkpubkeyperms() { goto out; } diff --git a/package/network/services/dropbear/patches/110-change_user.patch b/package/network/services/dropbear/patches/110-change_user.patch index 7982af6315..4b5c1cb51b 100644 --- a/package/network/services/dropbear/patches/110-change_user.patch +++ b/package/network/services/dropbear/patches/110-change_user.patch @@ -1,6 +1,6 @@ --- a/svr-chansession.c +++ b/svr-chansession.c -@@ -920,12 +920,12 @@ static void execchild(void *user_data) { +@@ -922,12 +922,12 @@ static void execchild(void *user_data) { /* We can only change uid/gid as root ... */ if (getuid() == 0) { diff --git a/package/network/services/dropbear/patches/120-openwrt_options.patch b/package/network/services/dropbear/patches/120-openwrt_options.patch index 48dae73b1f..b49a95ce93 100644 --- a/package/network/services/dropbear/patches/120-openwrt_options.patch +++ b/package/network/services/dropbear/patches/120-openwrt_options.patch @@ -18,20 +18,49 @@ /* Whether to support "-c" and "-m" flags to choose ciphers/MACs at runtime */ #define ENABLE_USER_ALGO_LIST -@@ -126,9 +126,9 @@ much traffic. */ +@@ -91,16 +91,16 @@ much traffic. */ + * Including multiple keysize variants the same cipher + * (eg AES256 as well as AES128) will result in a minimal size increase.*/ + #define DROPBEAR_AES128 +-#define DROPBEAR_3DES ++/*#define DROPBEAR_3DES*/ + #define DROPBEAR_AES256 + /* Compiling in Blowfish will add ~6kB to runtime heap memory usage */ + /*#define DROPBEAR_BLOWFISH*/ +-#define DROPBEAR_TWOFISH256 +-#define DROPBEAR_TWOFISH128 ++/*#define DROPBEAR_TWOFISH256*/ ++/*#define DROPBEAR_TWOFISH128*/ + + /* Enable CBC mode for ciphers. This has security issues though + * is the most compatible with older SSH implementations */ +-#define DROPBEAR_ENABLE_CBC_MODE ++/*#define DROPBEAR_ENABLE_CBC_MODE*/ + + /* Enable "Counter Mode" for ciphers. This is more secure than normal + * CBC mode against certain attacks. It is recommended for security +@@ -131,9 +131,9 @@ If you test it please contact the Dropbe * If you disable MD5, Dropbear will fall back to SHA1 fingerprints, * which are not the standard form. */ #define DROPBEAR_SHA1_HMAC -#define DROPBEAR_SHA1_96_HMAC --#define DROPBEAR_SHA2_256_HMAC --#define DROPBEAR_SHA2_512_HMAC +/*#define DROPBEAR_SHA1_96_HMAC*/ -+/*#define DROPBEAR_SHA2_256_HMAC*/ + #define DROPBEAR_SHA2_256_HMAC +-#define DROPBEAR_SHA2_512_HMAC +/*#define DROPBEAR_SHA2_512_HMAC*/ #define DROPBEAR_MD5_HMAC /* You can also disable integrity. Don't bother disabling this if you're -@@ -184,7 +184,7 @@ much traffic. */ +@@ -146,7 +146,7 @@ If you test it please contact the Dropbe + * Removing either of these won't save very much space. + * SSH2 RFC Draft requires dss, recommends rsa */ + #define DROPBEAR_RSA +-#define DROPBEAR_DSS ++/*#define DROPBEAR_DSS*/ + /* ECDSA is significantly faster than RSA or DSS. Compiling in ECC + * code (either ECDSA or ECDH) increases binary size - around 30kB + * on x86-64 */ +@@ -194,7 +194,7 @@ If you test it please contact the Dropbe /* Whether to print the message of the day (MOTD). This doesn't add much code * size */ @@ -40,7 +69,7 @@ /* The MOTD file path */ #ifndef MOTD_FILENAME -@@ -226,7 +226,7 @@ much traffic. */ +@@ -242,7 +242,7 @@ Homedir is prepended unless path begins * note that it will be provided for all "hidden" client-interactive * style prompts - if you want something more sophisticated, use * SSH_ASKPASS instead. Comment out this var to remove this functionality.*/ diff --git a/package/network/services/dropbear/patches/130-ssh_ignore_o_and_x_args.patch b/package/network/services/dropbear/patches/130-ssh_ignore_o_and_x_args.patch deleted file mode 100644 index edb29093ae..0000000000 --- a/package/network/services/dropbear/patches/130-ssh_ignore_o_and_x_args.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/cli-runopts.c -+++ b/cli-runopts.c -@@ -315,6 +315,10 @@ void cli_getopts(int argc, char ** argv) - debug_trace = 1; - break; - #endif -+ case 'o': -+ next = &dummy; -+ case 'x': -+ break; - case 'F': - case 'e': - #ifndef ENABLE_USER_ALGO_LIST -@@ -332,7 +336,6 @@ void cli_getopts(int argc, char ** argv) - print_version(); - exit(EXIT_SUCCESS); - break; -- case 'o': - case 'b': - next = &dummy; - default: diff --git a/package/network/services/dropbear/patches/130-ssh_ignore_x_args.patch b/package/network/services/dropbear/patches/130-ssh_ignore_x_args.patch new file mode 100644 index 0000000000..ab09c2f3dc --- /dev/null +++ b/package/network/services/dropbear/patches/130-ssh_ignore_x_args.patch @@ -0,0 +1,11 @@ +--- a/cli-runopts.c ++++ b/cli-runopts.c +@@ -296,6 +296,8 @@ void cli_getopts(int argc, char ** argv) + debug_trace = 1; + break; + #endif ++ case 'x': ++ break; + case 'F': + case 'e': + #ifndef ENABLE_USER_ALGO_LIST diff --git a/package/network/services/dropbear/patches/140-disable_assert.patch b/package/network/services/dropbear/patches/140-disable_assert.patch index 0717228ef3..78b54acfa0 100644 --- a/package/network/services/dropbear/patches/140-disable_assert.patch +++ b/package/network/services/dropbear/patches/140-disable_assert.patch @@ -1,6 +1,6 @@ --- a/dbutil.h +++ b/dbutil.h -@@ -101,7 +101,11 @@ int m_str_to_uint(const char* str, unsig +@@ -78,7 +78,11 @@ int m_str_to_uint(const char* str, unsig #define DEF_MP_INT(X) mp_int X = {0, 0, 0, NULL} /* Dropbear assertion */ diff --git a/package/network/services/dropbear/patches/150-dbconvert_standalone.patch b/package/network/services/dropbear/patches/150-dbconvert_standalone.patch index 367dc2c681..ccc2cb7925 100644 --- a/package/network/services/dropbear/patches/150-dbconvert_standalone.patch +++ b/package/network/services/dropbear/patches/150-dbconvert_standalone.patch @@ -1,8 +1,8 @@ --- a/options.h +++ b/options.h @@ -5,6 +5,11 @@ - #ifndef _OPTIONS_H_ - #define _OPTIONS_H_ + #ifndef DROPBEAR_OPTIONS_H_ + #define DROPBEAR_OPTIONS_H_ +#if !defined(DROPBEAR_CLIENT) && !defined(DROPBEAR_SERVER) +#define DROPBEAR_SERVER diff --git a/package/network/services/dropbear/patches/500-set-default-path.patch b/package/network/services/dropbear/patches/500-set-default-path.patch index e2add9415f..da6b9ae0ce 100644 --- a/package/network/services/dropbear/patches/500-set-default-path.patch +++ b/package/network/services/dropbear/patches/500-set-default-path.patch @@ -1,11 +1,12 @@ --- a/options.h +++ b/options.h -@@ -336,7 +336,7 @@ be overridden at runtime with -I. 0 disa +@@ -352,7 +352,9 @@ be overridden at runtime with -I. 0 disa #define DEFAULT_IDLE_TIMEOUT 0 /* The default path. This will often get replaced by the shell */ --#define DEFAULT_PATH "/usr/bin:/bin" -+#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin" ++#ifndef DEFAULT_PATH + #define DEFAULT_PATH "/usr/bin:/bin" ++#endif /* Some other defines (that mostly should be left alone) are defined * in sysoptions.h */ diff --git a/package/network/services/dropbear/patches/600-allow-blank-root-password.patch b/package/network/services/dropbear/patches/600-allow-blank-root-password.patch new file mode 100644 index 0000000000..7c67b086bb --- /dev/null +++ b/package/network/services/dropbear/patches/600-allow-blank-root-password.patch @@ -0,0 +1,11 @@ +--- a/svr-auth.c ++++ b/svr-auth.c +@@ -149,7 +149,7 @@ void recv_msg_userauth_request() { + AUTH_METHOD_NONE_LEN) == 0) { + TRACE(("recv_msg_userauth_request: 'none' request")) + if (valid_user +- && svr_opts.allowblankpass ++ && (svr_opts.allowblankpass || !strcmp(ses.authstate.pw_name, "root")) + && !svr_opts.noauthpass + && !(svr_opts.norootpass && ses.authstate.pw_uid == 0) + && ses.authstate.pw_passwd[0] == '\0') diff --git a/package/network/services/dropbear/patches/610-skip-default-keys-in-custom-runs.patch b/package/network/services/dropbear/patches/610-skip-default-keys-in-custom-runs.patch new file mode 100644 index 0000000000..f6453a4626 --- /dev/null +++ b/package/network/services/dropbear/patches/610-skip-default-keys-in-custom-runs.patch @@ -0,0 +1,18 @@ +--- a/svr-runopts.c ++++ b/svr-runopts.c +@@ -488,6 +488,7 @@ void load_all_hostkeys() { + m_free(hostkey_file); + } + ++ if (svr_opts.num_hostkey_files <= 0) { + #ifdef DROPBEAR_RSA + loadhostkey(RSA_PRIV_FILENAME, 0); + #endif +@@ -499,6 +500,7 @@ void load_all_hostkeys() { + #ifdef DROPBEAR_ECDSA + loadhostkey(ECDSA_PRIV_FILENAME, 0); + #endif ++ } + + #ifdef DROPBEAR_DELAY_HOSTKEY + if (svr_opts.delay_hostkey) { diff --git a/package/network/services/samba36/Makefile b/package/network/services/samba36/Makefile index 98ab31cab8..2e6518336e 100644 --- a/package/network/services/samba36/Makefile +++ b/package/network/services/samba36/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=samba PKG_VERSION:=3.6.25 -PKG_RELEASE:=5 +PKG_RELEASE:=6 PKG_SOURCE_URL:=http://ftp.samba.org/pub/samba \ http://ftp.samba.org/pub/samba/stable diff --git a/package/network/services/samba36/patches/028-CVE-2017-7494-v3-6.patch b/package/network/services/samba36/patches/028-CVE-2017-7494-v3-6.patch new file mode 100644 index 0000000000..17b020d88a --- /dev/null +++ b/package/network/services/samba36/patches/028-CVE-2017-7494-v3-6.patch @@ -0,0 +1,29 @@ +From d2bc9f3afe23ee04d237ae9f4511fbe59a27ff54 Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Mon, 8 May 2017 21:40:40 +0200 +Subject: [PATCH] CVE-2017-7494: rpc_server3: Refuse to open pipe names with / + inside + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=12780 + +Signed-off-by: Volker Lendecke +Reviewed-by: Jeremy Allison +Reviewed-by: Stefan Metzmacher +--- + source3/rpc_server/srv_pipe.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/source3/rpc_server/srv_pipe.c ++++ b/source3/rpc_server/srv_pipe.c +@@ -473,6 +473,11 @@ bool is_known_pipename(const char *cli_f + pipename += 1; + } + ++ if (strchr(pipename, '/')) { ++ DEBUG(1, ("Refusing open on pipe %s\n", pipename)); ++ return false; ++ } ++ + if (lp_disable_spoolss() && strequal(pipename, "spoolss")) { + DEBUG(10, ("refusing spoolss access\n")); + return false; diff --git a/package/network/services/samba36/patches/310-remove_error_strings.patch b/package/network/services/samba36/patches/310-remove_error_strings.patch index ee3460dfdb..596a327f6f 100644 --- a/package/network/services/samba36/patches/310-remove_error_strings.patch +++ b/package/network/services/samba36/patches/310-remove_error_strings.patch @@ -303,7 +303,7 @@ --- a/source3/rpc_server/srv_pipe.c +++ b/source3/rpc_server/srv_pipe.c -@@ -991,7 +991,6 @@ static bool api_pipe_bind_req(struct pip +@@ -996,7 +996,6 @@ static bool api_pipe_bind_req(struct pip if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("api_pipe_bind_req: invalid pdu: %s\n", nt_errstr(status))); @@ -311,7 +311,7 @@ goto err_exit; } -@@ -1325,7 +1324,6 @@ bool api_pipe_bind_auth3(struct pipes_st +@@ -1330,7 +1329,6 @@ bool api_pipe_bind_auth3(struct pipes_st if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("api_pipe_bind_auth3: invalid pdu: %s\n", nt_errstr(status))); @@ -319,7 +319,7 @@ goto err; } -@@ -1483,7 +1481,6 @@ static bool api_pipe_alter_context(struc +@@ -1488,7 +1486,6 @@ static bool api_pipe_alter_context(struc if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("api_pipe_alter_context: invalid pdu: %s\n", nt_errstr(status))); @@ -327,7 +327,7 @@ goto err_exit; } -@@ -2057,7 +2054,6 @@ static bool process_request_pdu(struct p +@@ -2062,7 +2059,6 @@ static bool process_request_pdu(struct p if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("process_request_pdu: invalid pdu: %s\n", nt_errstr(status))); diff --git a/package/network/utils/tcpdump/Makefile b/package/network/utils/tcpdump/Makefile index 8e33a2bb7b..3a760c1a48 100644 --- a/package/network/utils/tcpdump/Makefile +++ b/package/network/utils/tcpdump/Makefile @@ -8,15 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=tcpdump -PKG_VERSION:=4.5.1 -PKG_RELEASE:=4 +PKG_VERSION:=4.9.2 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://www.tcpdump.org/release/ \ - http://ftp.gwdg.de/pub/misc/tcpdump/ \ - http://www.at.tcpdump.org/ \ - http://www.br.tcpdump.org/ -PKG_MD5SUM:=973a2513d0076e34aa9da7e15ed98e1b + http://www.at.tcpdump.org/ +PKG_MD5SUM:=9bbc1ee33dab61302411b02dd0515576 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) PKG_BUILD_PARALLEL:=1 diff --git a/package/network/utils/tcpdump/patches/001-remove_pcap_debug.patch b/package/network/utils/tcpdump/patches/001-remove_pcap_debug.patch index d2c724d509..0588f39cca 100644 --- a/package/network/utils/tcpdump/patches/001-remove_pcap_debug.patch +++ b/package/network/utils/tcpdump/patches/001-remove_pcap_debug.patch @@ -1,23 +1,100 @@ ---- a/tcpdump.c -+++ b/tcpdump.c -@@ -1095,20 +1095,6 @@ main(int argc, char **argv) - error("invalid data link type %s", gndo->ndo_dltname); - break; +--- a/configure ++++ b/configure +@@ -6259,97 +6259,6 @@ $as_echo "no" >&6; } + fi + fi --#if defined(HAVE_PCAP_DEBUG) || defined(HAVE_YYDEBUG) -- case 'Y': -- { -- /* Undocumented flag */ --#ifdef HAVE_PCAP_DEBUG -- extern int pcap_debug; -- pcap_debug = 1; --#else +-# +-# Check for special debugging functions +-# +-for ac_func in pcap_set_parser_debug +-do : +- ac_fn_c_check_func "$LINENO" "pcap_set_parser_debug" "ac_cv_func_pcap_set_parser_debug" +-if test "x$ac_cv_func_pcap_set_parser_debug" = xyes; then : +- cat >>confdefs.h <<_ACEOF +-#define HAVE_PCAP_SET_PARSER_DEBUG 1 +-_ACEOF +- +-fi +-done +- +-if test "$ac_cv_func_pcap_set_parser_debug" = "no" ; then +- # +- # OK, we don't have pcap_set_parser_debug() to set the libpcap +- # filter expression parser debug flag; can we directly set the +- # flag? +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pcap_debug is defined by libpcap" >&5 +-$as_echo_n "checking whether pcap_debug is defined by libpcap... " >&6; } +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- extern int pcap_debug; +- +- return pcap_debug; +- +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_link "$LINENO"; then : +- ac_lbl_cv_pcap_debug_defined=yes +-else +- ac_lbl_cv_pcap_debug_defined=no +-fi +-rm -f core conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- if test "$ac_lbl_cv_pcap_debug_defined" = yes ; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +-$as_echo "yes" >&6; } +- +-$as_echo "#define HAVE_PCAP_DEBUG 1" >>confdefs.h +- +- else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } +- # +- # OK, what about "yydebug"? +- # +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yydebug is defined by libpcap" >&5 +-$as_echo_n "checking whether yydebug is defined by libpcap... " >&6; } +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +- +-int +-main () +-{ +- - extern int yydebug; -- yydebug = 1; --#endif -- } -- break; --#endif - case 'z': - if (optarg) { - zflag = strdup(optarg); +- +- return yydebug; +- +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_link "$LINENO"; then : +- ac_lbl_cv_yydebug_defined=yes +-else +- ac_lbl_cv_yydebug_defined=no +-fi +-rm -f core conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- if test "$ac_lbl_cv_yydebug_defined" = yes ; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +-$as_echo "yes" >&6; } +- +-$as_echo "#define HAVE_YYDEBUG 1" >>confdefs.h +- +- else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } +- fi +- fi +-fi + for ac_func in pcap_set_optimizer_debug + do : + ac_fn_c_check_func "$LINENO" "pcap_set_optimizer_debug" "ac_cv_func_pcap_set_optimizer_debug" diff --git a/package/network/utils/tcpdump/patches/002-remove_static_libpcap_check.patch b/package/network/utils/tcpdump/patches/002-remove_static_libpcap_check.patch index c8bdf1499e..6d96c2eacd 100644 --- a/package/network/utils/tcpdump/patches/002-remove_static_libpcap_check.patch +++ b/package/network/utils/tcpdump/patches/002-remove_static_libpcap_check.patch @@ -1,35 +1,44 @@ --- a/configure +++ b/configure -@@ -5813,28 +5813,6 @@ $as_echo "Using $pfopen" >&6; } +@@ -5471,37 +5471,6 @@ $as_echo "Using $pfopen" >&6; } LIBS="$LIBS $pfopen" fi fi -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local pcap library" >&5 +- libpcap=FAIL +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local pcap library" >&5 -$as_echo_n "checking for local pcap library... " >&6; } -- libpcap=FAIL -- lastdir=FAIL -- places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ -- egrep '/libpcap-[0-9]+\.[0-9]+(\.[0-9]*)?([ab][0-9]*|-PRE-GIT)?$'` -- for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do -- basedir=`echo $dir | sed -e 's/[ab][0-9]*$//' | \ -- sed -e 's/-PRE-GIT$//' ` -- if test $lastdir = $basedir ; then -- continue; -- fi -- lastdir=$dir -- if test -r $dir/libpcap.a ; then -- libpcap=$dir/libpcap.a -- d=$dir -- fi -- done +- +-# Check whether --with-system-libpcap was given. +-if test "${with_system_libpcap+set}" = set; then : +- withval=$with_system_libpcap; +-fi +- +- if test "x$with_system_libpcap" != xyes ; then +- lastdir=FAIL +- places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ +- egrep '/libpcap-[0-9]+\.[0-9]+(\.[0-9]*)?([ab][0-9]*|-PRE-GIT)?$'` +- places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \ +- egrep '/libpcap-[0-9]+\.[0-9]+(\.[0-9]*)?([ab][0-9]*|-PRE-GIT)?$'` +- for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do +- basedir=`echo $dir | sed -e 's/[ab][0-9]*$//' | \ +- sed -e 's/-PRE-GIT$//' ` +- if test $lastdir = $basedir ; then +- continue; +- fi +- lastdir=$dir +- if test -r $dir/libpcap.a ; then +- libpcap=$dir/libpcap.a +- d=$dir +- fi +- done +- fi - if test $libpcap = FAIL ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } -- + # # Look for pcap-config. - # -@@ -5989,41 +5967,6 @@ if test "x$ac_cv_lib_pcap_main" = xyes; +@@ -5657,51 +5626,6 @@ if test "x$ac_cv_lib_pcap_main" = xyes; libpcap="-lpcap" fi @@ -59,13 +68,23 @@ - V_PCAPDEP=$libpcap - places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ - egrep '/libpcap-[0-9]*.[0-9]*(.[0-9]*)?([ab][0-9]*)?$'` +- places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \ +- egrep '/libpcap-[0-9]*.[0-9]*(.[0-9]*)?([ab][0-9]*)?$'` +- pcapH=FAIL - if test -r $d/pcap.h; then -- V_INCLS="-I$d $V_INCLS" -- elif test -r $places/pcap.h; then -- V_INCLS="-I$places $V_INCLS" +- pcapH=$d - else -- as_fn_error see INSTALL "cannot find pcap.h" "$LINENO" 5 +- for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do +- if test -r $dir/pcap.h ; then +- pcapH=$dir +- fi +- done +- fi +- +- if test $pcapH = FAIL ; then +- as_fn_error $? "cannot find pcap.h: see INSTALL" "$LINENO" 5 - fi +- V_INCLS="-I$pcapH $V_INCLS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libpcap" >&5 -$as_echo "$libpcap" >&6; } # Extract the first word of "pcap-config", so it can be a program name with args. diff --git a/package/network/utils/tcpdump/patches/100-tcpdump_mini.patch b/package/network/utils/tcpdump/patches/100-tcpdump_mini.patch index 8d07be6b40..5d8a269075 100644 --- a/package/network/utils/tcpdump/patches/100-tcpdump_mini.patch +++ b/package/network/utils/tcpdump/patches/100-tcpdump_mini.patch @@ -1,74 +1,117 @@ --- a/Makefile.in +++ b/Makefile.in -@@ -71,6 +71,22 @@ DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG@ - @rm -f $@ - $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c +@@ -72,6 +72,80 @@ DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG@ + + CSRC = setsignal.c tcpdump.c +ifdef TCPDUMP_MINI + -+CSRC = addrtoname.c af.c checksum.c cpack.c gmpls.c oui.c gmt2local.c ipproto.c \ -+ nlpid.c l2vpn.c machdep.c parsenfsfh.c in_cksum.c \ -+ print-802_11.c print-aodv.c print-arp.c print-ascii.c \ -+ print-bgp.c print-bootp.c print-cdp.c print-domain.c print-eap.c print-ether.c \ -+ print-gre.c print-icmp.c print-igmp.c print-ip.c \ -+ print-l2tp.c print-lldp.c print-llc.c \ -+ print-nfs.c print-ntp.c print-null.c print-olsr.c print-ospf.c \ -+ print-ppp.c print-pppoe.c print-pptp.c print-radius.c print-raw.c print-rsvp.c \ -+ print-sctp.c print-sip.c print-sll.c print-snmp.c print-stp.c print-sunrpc.c \ -+ print-syslog.c print-tcp.c print-telnet.c print-tftp.c print-udp.c \ -+ setsignal.c tcpdump.c util.c signature.c print-ipnet.c print-forces.c ++LIBNETDISSECT_SRC=\ ++ netdissect.c \ ++ addrtoname.c \ ++ addrtostr.c \ ++ af.c \ ++ ascii_strcasecmp.c \ ++ checksum.c \ ++ cpack.c \ ++ gmpls.c \ ++ gmt2local.c \ ++ in_cksum.c \ ++ ipproto.c \ ++ l2vpn.c \ ++ machdep.c \ ++ nlpid.c \ ++ oui.c \ ++ parsenfsfh.c \ ++ print.c \ ++ print-802_11.c \ ++ print-aodv.c \ ++ print-arp.c \ ++ print-ascii.c \ ++ print-bootp.c \ ++ print-dhcp6.c \ ++ print-domain.c \ ++ print-eap.c \ ++ print-ether.c \ ++ print-ftp.c \ ++ print-gre.c \ ++ print-http.c \ ++ print-icmp.c \ ++ print-icmp6.c \ ++ print-igmp.c \ ++ print-ip.c \ ++ print-ip6.c \ ++ print-ip6opts.c \ ++ print-ipnet.c \ ++ print-l2tp.c \ ++ print-llc.c \ ++ print-lldp.c \ ++ print-loopback.c \ ++ print-nfs.c \ ++ print-ntp.c \ ++ print-null.c \ ++ print-olsr.c \ ++ print-ospf.c \ ++ print-ospf6.c \ ++ print-ppp.c \ ++ print-pppoe.c \ ++ print-pptp.c \ ++ print-radius.c \ ++ print-raw.c \ ++ print-rsvp.c \ ++ print-rt6.c \ ++ print-rtsp.c \ ++ print-sip.c \ ++ print-sll.c \ ++ print-smtp.c \ ++ print-snmp.c \ ++ print-stp.c \ ++ print-sunrpc.c \ ++ print-syslog.c \ ++ print-tcp.c \ ++ print-telnet.c \ ++ print-tftp.c \ ++ print-udp.c \ ++ signature.c \ ++ strtoaddr.c \ ++ util-print.c + +else + - CSRC = addrtoname.c af.c checksum.c cpack.c gmpls.c oui.c gmt2local.c ipproto.c \ - nlpid.c l2vpn.c machdep.c parsenfsfh.c in_cksum.c \ - print-802_11.c print-802_15_4.c print-ap1394.c print-ah.c \ -@@ -103,6 +119,8 @@ LIBNETDISSECT_SRC=print-isakmp.c - LIBNETDISSECT_OBJ=$(LIBNETDISSECT_SRC:.c=.o) - LIBNETDISSECT=libnetdissect.a + LIBNETDISSECT_SRC=\ + addrtoname.c \ + addrtostr.c \ +@@ -237,6 +311,8 @@ LIBNETDISSECT_SRC=\ + strtoaddr.c \ + util-print.c +endif + LOCALSRC = @LOCALSRC@ GENSRC = version.c LIBOBJS = @LIBOBJS@ -@@ -286,10 +304,12 @@ $(PROG): $(OBJ) @V_PCAPDEP@ - @rm -f $@ - $(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) - -+ifndef TCPDUMP_MINI - $(LIBNETDISSECT): $(LIBNETDISSECT_OBJ) - @rm -f $@ - $(AR) cr $@ $(LIBNETDISSECT_OBJ) - $(RANLIB) $@ -+endif - - datalinks.o: $(srcdir)/missing/datalinks.c - $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/datalinks.c --- a/addrtoname.c +++ b/addrtoname.c -@@ -556,10 +556,10 @@ linkaddr_string(const u_char *ep, const - +@@ -578,8 +578,10 @@ linkaddr_string(netdissect_options *ndo, if (type == LINKADDR_ETHER && len == ETHER_ADDR_LEN) - return (etheraddr_string(ep)); -- + return (etheraddr_string(ndo, ep)); + +#ifndef TCPDUMP_MINI if (type == LINKADDR_FRELAY) - return (q922_string(ep)); -- + return (q922_string(ndo, ep, len)); +#endif - tp = lookup_bytestring(ep, len); - if (tp->e_name) - return (tp->e_name); -@@ -1159,6 +1159,7 @@ init_addrtoname(u_int32_t localnet, u_in - init_ipxsaparray(); + + tp = lookup_bytestring(ndo, ep, len); + if (tp->bs_name) +@@ -1214,6 +1216,7 @@ init_addrtoname(netdissect_options *ndo, + init_ipxsaparray(ndo); } +#ifndef TCPDUMP_MINI const char * - dnaddr_string(u_short dnaddr) + dnaddr_string(netdissect_options *ndo, u_short dnaddr) { -@@ -1178,6 +1179,7 @@ dnaddr_string(u_short dnaddr) +@@ -1233,6 +1236,7 @@ dnaddr_string(netdissect_options *ndo, u return(tp->name); } @@ -76,727 +119,9 @@ /* Return a zero'ed hnamemem struct and cuts down on calloc() overhead */ struct hnamemem * ---- a/print-ether.c -+++ b/print-ether.c -@@ -342,6 +342,7 @@ ethertype_print(netdissect_options *ndo, - arp_print(ndo, p, length, caplen); - return (1); - -+#ifndef TCPDUMP_MINI - case ETHERTYPE_DN: - decnet_print(/*ndo,*/p, length, caplen); - return (1); -@@ -360,10 +361,13 @@ ethertype_print(netdissect_options *ndo, - ND_PRINT((ndo, "(NOV-ETHII) ")); - ipx_print(/*ndo,*/p, length); - return (1); -+#endif - -+#ifndef TCPDUMP_MINI - case ETHERTYPE_ISO: - isoclns_print(/*ndo,*/p+1, length-1, length-1); - return(1); -+#endif - - case ETHERTYPE_PPPOED: - case ETHERTYPE_PPPOES: -@@ -376,9 +380,11 @@ ethertype_print(netdissect_options *ndo, - eap_print(ndo, p, length); - return (1); - -+#ifndef TCPDUMP_MINI - case ETHERTYPE_RRCP: - rrcp_print(ndo, p - 14 , length + 14); - return (1); -+#endif - - case ETHERTYPE_PPP: - if (length) { -@@ -387,6 +393,7 @@ ethertype_print(netdissect_options *ndo, - } - return (1); - -+#ifndef TCPDUMP_MINI - case ETHERTYPE_MPCP: - mpcp_print(/*ndo,*/p, length); - return (1); -@@ -399,7 +406,7 @@ ethertype_print(netdissect_options *ndo, - case ETHERTYPE_CFM_OLD: - cfm_print(/*ndo,*/p, length); - return (1); -- -+#endif - case ETHERTYPE_LLDP: - lldp_print(/*ndo,*/p, length); - return (1); -@@ -407,6 +414,7 @@ ethertype_print(netdissect_options *ndo, - case ETHERTYPE_LOOPBACK: - return (1); - -+#ifndef TCPDUMP_MINI - case ETHERTYPE_MPLS: - case ETHERTYPE_MPLS_MULTI: - mpls_print(/*ndo,*/p, length); -@@ -428,6 +436,7 @@ ethertype_print(netdissect_options *ndo, - case ETHERTYPE_CALM_FAST: - calm_fast_print(ndo, p-14, p, length); - return (1); -+#endif - - case ETHERTYPE_LAT: - case ETHERTYPE_SCA: ---- a/print-gre.c -+++ b/print-gre.c -@@ -213,6 +213,7 @@ gre_print_0(const u_char *bp, u_int leng - ip6_print(gndo, bp, len); - break; - #endif -+#ifndef TCPDUMP_MINI - case ETHERTYPE_MPLS: - mpls_print(bp, len); - break; -@@ -228,6 +229,7 @@ gre_print_0(const u_char *bp, u_int leng - case ETHERTYPE_TEB: - ether_print(gndo, bp, len, len, NULL, NULL); - break; -+#endif - default: - printf("gre-proto-0x%x", prot); - } ---- a/print-igmp.c -+++ b/print-igmp.c -@@ -309,6 +309,7 @@ igmp_print(register const u_char *bp, re - TCHECK2(bp[4], 4); - (void)printf("igmp leave %s", ipaddr_string(&bp[4])); - break; -+#ifndef TCPDUMP_MINI - case 0x13: - (void)printf("igmp dvmrp"); - if (len < 8) -@@ -320,6 +321,7 @@ igmp_print(register const u_char *bp, re - (void)printf("igmp pimv1"); - pimv1_print(bp, len); - break; -+#endif - case 0x1e: - print_mresp(bp, len); - break; ---- a/print-ip.c -+++ b/print-ip.c -@@ -328,6 +328,7 @@ ip_print_demux(netdissect_options *ndo, - again: - switch (ipds->nh) { - -+#ifndef TCPDUMP_MINI - case IPPROTO_AH: - ipds->nh = *ipds->cp; - ipds->advance = ah_print(ipds->cp); -@@ -362,15 +363,15 @@ again: - ipds->nh = enh & 0xff; - goto again; - } -- -+#endif - case IPPROTO_SCTP: - sctp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len); - break; -- -+#ifndef TCPDUMP_MINI - case IPPROTO_DCCP: - dccp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len); - break; -- -+#endif - case IPPROTO_TCP: - /* pass on the MF bit plus the offset to detect fragments */ - tcp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip, -@@ -388,7 +389,7 @@ again: - icmp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip, - ipds->off & (IP_MF|IP_OFFMASK)); - break; -- -+#ifndef TCPDUMP_MINI - case IPPROTO_PIGP: - /* - * XXX - the current IANA protocol number assignments -@@ -409,15 +410,15 @@ again: - case IPPROTO_EIGRP: - eigrp_print(ipds->cp, ipds->len); - break; -- -+#endif - case IPPROTO_ND: - ND_PRINT((ndo, " nd %d", ipds->len)); - break; -- -+#ifndef TCPDUMP_MINI - case IPPROTO_EGP: - egp_print(ipds->cp, ipds->len); - break; -- -+#endif - case IPPROTO_OSPF: - ospf_print(ipds->cp, ipds->len, (const u_char *)ipds->ip); - break; -@@ -451,10 +452,10 @@ again: - gre_print(ipds->cp, ipds->len); - break; - -+#ifndef TCPDUMP_MINI - case IPPROTO_MOBILE: - mobile_print(ipds->cp, ipds->len); - break; -- - case IPPROTO_PIM: - vec[0].ptr = ipds->cp; - vec[0].len = ipds->len; -@@ -480,7 +481,7 @@ again: - case IPPROTO_PGM: - pgm_print(ipds->cp, ipds->len, (const u_char *)ipds->ip); - break; -- -+#endif - default: - if (ndo->ndo_nflag==0 && (proto = getprotobynumber(ipds->nh)) != NULL) - ND_PRINT((ndo, " %s", proto->p_name)); ---- a/print-ip6.c -+++ b/print-ip6.c -@@ -192,9 +192,11 @@ ip6_print(netdissect_options *ndo, const - case IPPROTO_SCTP: - sctp_print(cp, (const u_char *)ip6, len); - return; -+#ifndef TCPDUMP_MINI - case IPPROTO_DCCP: - dccp_print(cp, (const u_char *)ip6, len); - return; -+#endif - case IPPROTO_TCP: - tcp_print(cp, len, (const u_char *)ip6, fragmented); - return; -@@ -204,6 +206,7 @@ ip6_print(netdissect_options *ndo, const - case IPPROTO_ICMPV6: - icmp6_print(ndo, cp, len, (const u_char *)ip6, fragmented); - return; -+#ifndef TCPDUMP_MINI - case IPPROTO_AH: - advance = ah_print(cp); - nh = *cp; -@@ -228,7 +231,7 @@ ip6_print(netdissect_options *ndo, const - pim_print(cp, len, nextproto6_cksum(ip6, cp, len, - IPPROTO_PIM)); - return; -- -+#endif - case IPPROTO_OSPF: - ospf6_print(cp, len); - return; -@@ -240,11 +243,11 @@ ip6_print(netdissect_options *ndo, const - case IPPROTO_IPV4: - ip_print(ndo, cp, len); - return; -- -+#ifndef TCPDUMP_MINI - case IPPROTO_PGM: - pgm_print(cp, len, (const u_char *)ip6); - return; -- -+#endif - case IPPROTO_GRE: - gre_print(cp, len); - return; ---- a/print-llc.c -+++ b/print-llc.c -@@ -196,7 +196,7 @@ llc_print(const u_char *p, u_int length, - control = EXTRACT_LE_16BITS(p + 2); - is_u = 0; - } -- -+#ifndef TCPDUMP_MINI - if (ssap_field == LLCSAP_GLOBAL && dsap_field == LLCSAP_GLOBAL) { - /* - * This is an Ethernet_802.3 IPX frame; it has an -@@ -219,6 +219,7 @@ llc_print(const u_char *p, u_int length, - ipx_print(p, length); - return (1); - } -+#endif - - dsap = dsap_field & ~LLC_IG; - ssap = ssap_field & ~LLC_GSAP; -@@ -251,6 +252,7 @@ llc_print(const u_char *p, u_int length, - return (1); - } - -+#ifndef TCPDUMP_MINI - if (ssap == LLCSAP_IPX && dsap == LLCSAP_IPX && - control == LLC_UI) { - /* -@@ -266,6 +268,7 @@ llc_print(const u_char *p, u_int length, - ipx_print(p+3, length-3); - return (1); - } -+#endif - - #ifdef TCPDUMP_DO_SMB - if (ssap == LLCSAP_NETBEUI && dsap == LLCSAP_NETBEUI -@@ -297,11 +300,13 @@ llc_print(const u_char *p, u_int length, - return (1); - } - #endif -+#ifndef TCPDUMP_MINI - if (ssap == LLCSAP_ISONS && dsap == LLCSAP_ISONS - && control == LLC_UI) { - isoclns_print(p + 3, length - 3, caplen - 3); - return (1); - } -+#endif - - if (ssap == LLCSAP_SNAP && dsap == LLCSAP_SNAP - && control == LLC_UI) { -@@ -444,6 +449,7 @@ snap_print(const u_char *p, u_int length - case PID_CISCO_CDP: - cdp_print(p, length, caplen); - return (1); -+#ifndef TCPDUMP_MINI - case PID_CISCO_DTP: - dtp_print(p, length); - return (1); -@@ -453,6 +459,7 @@ snap_print(const u_char *p, u_int length - case PID_CISCO_VTP: - vtp_print(p, length); - return (1); -+#endif - case PID_CISCO_PVST: - case PID_CISCO_VLANBRIDGE: - stp_print(p, length); -@@ -484,6 +491,7 @@ snap_print(const u_char *p, u_int length - ether_print(gndo, p, length, caplen, NULL, NULL); - return (1); - -+#ifndef TCPDUMP_MINI - case PID_RFC2684_802_5_FCS: - case PID_RFC2684_802_5_NOFCS: - /* -@@ -525,6 +533,7 @@ snap_print(const u_char *p, u_int length - */ - fddi_print(p, length, caplen); - return (1); -+#endif - - case PID_RFC2684_BPDU: - stp_print(p, length); ---- a/print-null.c -+++ b/print-null.c -@@ -128,7 +128,7 @@ null_if_print(const struct pcap_pkthdr * - ip6_print(gndo, p, length); - break; - #endif -- -+#ifndef TCPDUMP_MINI - case BSD_AFNUM_ISO: - isoclns_print(p, length, caplen); - break; -@@ -140,7 +140,7 @@ null_if_print(const struct pcap_pkthdr * - case BSD_AFNUM_IPX: - ipx_print(p, length); - break; -- -+#endif - default: - /* unknown AF_ value */ - if (!eflag) ---- a/print-ppp.c -+++ b/print-ppp.c -@@ -1262,7 +1262,7 @@ trunc: - return 0; - } - -- -+#ifndef TCPDUMP_MINI - static void - ppp_hdlc(const u_char *p, int length) - { -@@ -1327,17 +1327,19 @@ cleanup: - free(b); - return; - } -+#endif - - - /* PPP */ - static void - handle_ppp(u_int proto, const u_char *p, int length) - { -+#ifndef TCPDUMP_MINI - if ((proto & 0xff00) == 0x7e00) {/* is this an escape code ? */ - ppp_hdlc(p-1, length); - return; - } -- -+#endif - switch (proto) { - case PPP_LCP: /* fall through */ - case PPP_IPCP: -@@ -1371,6 +1373,7 @@ handle_ppp(u_int proto, const u_char *p, - ip6_print(gndo, p, length); - break; - #endif -+#ifndef TCPDUMP_MINI - case ETHERTYPE_IPX: /*XXX*/ - case PPP_IPX: - ipx_print(p, length); -@@ -1382,6 +1385,7 @@ handle_ppp(u_int proto, const u_char *p, - case PPP_MPLS_MCAST: - mpls_print(p, length); - break; -+#endif - case PPP_COMP: - printf("compressed PPP data"); - break; -@@ -1520,6 +1524,7 @@ ppp_if_print(const struct pcap_pkthdr *h - return (0); - } - -+#ifndef TCPDUMP_MINI - /* - * PPP I/F printer to use if we know that RFC 1662-style PPP in HDLC-like - * framing, or Cisco PPP with HDLC framing as per section 4.3.1 of RFC 1547, -@@ -1747,7 +1752,7 @@ printx: - #endif /* __bsdi__ */ - return (hdrlength); - } -- -+#endif - - /* - * Local Variables: ---- a/print-tcp.c -+++ b/print-tcp.c -@@ -573,14 +573,14 @@ tcp_print(register const u_char *bp, reg - utoval >>= 1; - (void)printf(" %u", utoval); - break; -- -+#ifndef TCPDUMP_MINI - case TCPOPT_MPTCP: - datalen = len - 2; - LENCHECK(datalen); - if (!mptcp_print(cp-2, len, flags)) - goto bad; - break; -- -+#endif - case TCPOPT_EXPERIMENT2: - datalen = len - 2; - LENCHECK(datalen); -@@ -659,8 +659,8 @@ tcp_print(register const u_char *bp, reg - if ((flags & TH_RST) && vflag) { - print_tcp_rst_data(bp, length); - return; -- } -- -+ } -+#ifndef TCPDUMP_MINI - if (packettype) { - switch (packettype) { - case PT_ZMTP1: -@@ -669,7 +669,7 @@ tcp_print(register const u_char *bp, reg - } - return; - } -- -+#endif - if (sport == TELNET_PORT || dport == TELNET_PORT) { - if (!qflag && vflag) - telnet_print(bp, length); -@@ -683,10 +683,12 @@ tcp_print(register const u_char *bp, reg - else if (sport == SMB_PORT || dport == SMB_PORT) - smb_tcp_print(bp, length); - #endif -+#ifndef TCPDUMP_MINI - else if (sport == BEEP_PORT || dport == BEEP_PORT) - beep_print(bp, length); - else if (sport == OPENFLOW_PORT || dport == OPENFLOW_PORT) - openflow_print(bp, length); -+#endif - else if (length > 2 && - (sport == NAMESERVER_PORT || dport == NAMESERVER_PORT || - sport == MULTICASTDNS_PORT || dport == MULTICASTDNS_PORT)) { -@@ -695,6 +697,7 @@ tcp_print(register const u_char *bp, reg - * XXX packet could be unaligned, it can go strange - */ - ns_print(bp + 2, length - 2, 0); -+#ifndef TCPDUMP_MINI - } else if (sport == MSDP_PORT || dport == MSDP_PORT) { - msdp_print(bp, length); - } else if (sport == RPKI_RTR_PORT || dport == RPKI_RTR_PORT) { -@@ -702,6 +705,7 @@ tcp_print(register const u_char *bp, reg - } - else if (length > 0 && (sport == LDP_PORT || dport == LDP_PORT)) { - ldp_print(bp, length); -+#endif - } - else if ((sport == NFS_PORT || dport == NFS_PORT) && - length >= 4 && TTEST2(*bp, 4)) { ---- a/print-udp.c -+++ b/print-udp.c -@@ -418,11 +418,12 @@ udp_print(register const u_char *bp, u_i - vat_print((void *)(up + 1), up); - break; - -+#ifndef TCPDUMP_MINI - case PT_WB: - udpipaddr_print(ip, sport, dport); - wb_print((void *)(up + 1), length); - break; -- -+#endif - case PT_RPC: - rp = (struct sunrpc_msg *)(up + 1); - direction = (enum sunrpc_msg_type)EXTRACT_32BITS(&rp->rm_direction); -@@ -450,11 +451,12 @@ udp_print(register const u_char *bp, u_i - snmp_print((const u_char *)(up + 1), length); - break; - -+#ifndef TCPDUMP_MINI - case PT_CNFP: - udpipaddr_print(ip, sport, dport); - cnfp_print(cp, (const u_char *)ip); - break; -- -+#endif - case PT_TFTP: - udpipaddr_print(ip, sport, dport); - tftp_print(cp, length); -@@ -475,6 +477,7 @@ udp_print(register const u_char *bp, u_i - radius_print(cp, length); - break; - -+#ifndef TCPDUMP_MINI - case PT_VXLAN: - udpipaddr_print(ip, sport, dport); - vxlan_print((const u_char *)(up + 1), length); -@@ -489,6 +492,7 @@ udp_print(register const u_char *bp, u_i - udpipaddr_print(ip, sport, dport); - lmp_print(cp, length); - break; -+#endif - } - return; - } -@@ -517,6 +521,7 @@ udp_print(register const u_char *bp, u_i - } - #endif - } -+#ifndef TCPDUMP_MINI - if (TTEST(((struct LAP *)cp)->type) && - ((struct LAP *)cp)->type == lapDDP && - (atalk_port(sport) || atalk_port(dport))) { -@@ -525,6 +530,7 @@ udp_print(register const u_char *bp, u_i - llap_print(cp, length); - return; - } -+#endif - } - udpipaddr_print(ip, sport, dport); - -@@ -575,14 +581,18 @@ udp_print(register const u_char *bp, u_i - ns_print((const u_char *)(up + 1), length, 0); - else if (ISPORT(MULTICASTDNS_PORT)) - ns_print((const u_char *)(up + 1), length, 1); -+#ifndef TCPDUMP_MINI - else if (ISPORT(TIMED_PORT)) - timed_print((const u_char *)(up + 1)); -+#endif - else if (ISPORT(TFTP_PORT)) - tftp_print((const u_char *)(up + 1), length); - else if (ISPORT(IPPORT_BOOTPC) || ISPORT(IPPORT_BOOTPS)) - bootp_print((const u_char *)(up + 1), length); -+#ifndef TCPDUMP_MINI - else if (ISPORT(RIP_PORT)) - rip_print((const u_char *)(up + 1), length); -+#endif - else if (ISPORT(AODV_PORT)) - aodv_print((const u_char *)(up + 1), length, - #ifdef INET6 -@@ -590,6 +600,7 @@ udp_print(register const u_char *bp, u_i - #else - 0); - #endif -+#ifndef TCPDUMP_MINI - else if (ISPORT(ISAKMP_PORT)) - isakmp_print(gndo, (const u_char *)(up + 1), length, bp2); - else if (ISPORT(ISAKMP_PORT_NATT)) -@@ -598,12 +609,15 @@ udp_print(register const u_char *bp, u_i - else if (ISPORT(ISAKMP_PORT_USER1) || ISPORT(ISAKMP_PORT_USER2)) - isakmp_print(gndo, (const u_char *)(up + 1), length, bp2); - #endif -+#endif - else if (ISPORT(SNMP_PORT) || ISPORT(SNMPTRAP_PORT)) - snmp_print((const u_char *)(up + 1), length); - else if (ISPORT(NTP_PORT)) - ntp_print((const u_char *)(up + 1), length); -+#ifndef TCPDUMP_MINI - else if (ISPORT(KERBEROS_PORT) || ISPORT(KERBEROS_SEC_PORT)) - krb_print((const void *)(up + 1)); -+#endif - else if (ISPORT(L2TP_PORT)) - l2tp_print((const u_char *)(up + 1), length); - #ifdef TCPDUMP_DO_SMB -@@ -614,6 +628,7 @@ udp_print(register const u_char *bp, u_i - #endif - else if (dport == VAT_PORT) - vat_print((const void *)(up + 1), up); -+#ifndef TCPDUMP_MINI - else if (ISPORT(ZEPHYR_SRV_PORT) || ISPORT(ZEPHYR_CLT_PORT)) - zephyr_print((const void *)(up + 1), length); - /* -@@ -624,6 +639,7 @@ udp_print(register const u_char *bp, u_i - (dport >= RX_PORT_LOW && dport <= RX_PORT_HIGH)) - rx_print((const void *)(up + 1), length, sport, dport, - (u_char *) ip); -+#endif - #ifdef INET6 - else if (ISPORT(RIPNG_PORT)) - ripng_print((const u_char *)(up + 1), length); -@@ -635,21 +651,25 @@ udp_print(register const u_char *bp, u_i - /* - * Kludge in test for whiteboard packets. - */ -+#ifndef TCPDUMP_MINI - else if (dport == WB_PORT) - wb_print((const void *)(up + 1), length); - else if (ISPORT(CISCO_AUTORP_PORT)) - cisco_autorp_print((const void *)(up + 1), length); -+#endif - else if (ISPORT(RADIUS_PORT) || - ISPORT(RADIUS_NEW_PORT) || - ISPORT(RADIUS_ACCOUNTING_PORT) || - ISPORT(RADIUS_NEW_ACCOUNTING_PORT) ) - radius_print((const u_char *)(up+1), length); -+#ifndef TCPDUMP_MINI - else if (dport == HSRP_PORT) - hsrp_print((const u_char *)(up + 1), length); - else if (ISPORT(LWRES_PORT)) - lwres_print((const u_char *)(up + 1), length); - else if (ISPORT(LDP_PORT)) - ldp_print((const u_char *)(up + 1), length); -+#endif - else if (ISPORT(OLSR_PORT)) - olsr_print((const u_char *)(up + 1), length, - #if INET6 -@@ -657,6 +677,7 @@ udp_print(register const u_char *bp, u_i - #else - 0); - #endif -+#ifndef TCPDUMP_MINI - else if (ISPORT(MPLS_LSP_PING_PORT)) - lspping_print((const u_char *)(up + 1), length); - else if (dport == BFD_CONTROL_PORT || -@@ -674,14 +695,17 @@ udp_print(register const u_char *bp, u_i - lwapp_control_print((const u_char *)(up + 1), length, 0); - else if (ISPORT(LWAPP_DATA_PORT)) - lwapp_data_print((const u_char *)(up + 1), length); -+#endif - else if (ISPORT(SIP_PORT)) - sip_print((const u_char *)(up + 1), length); - else if (ISPORT(SYSLOG_PORT)) - syslog_print((const u_char *)(up + 1), length); -+#ifndef TCPDUMP_MINI - else if (ISPORT(OTV_PORT)) - otv_print((const u_char *)(up + 1), length); - else if (ISPORT(VXLAN_PORT)) - vxlan_print((const u_char *)(up + 1), length); -+#endif - else - (void)printf("UDP, length %u", - (u_int32_t)(ulen - sizeof(*up))); ---- a/tcpdump.c -+++ b/tcpdump.c -@@ -161,6 +161,7 @@ struct ndo_printer { - - - static struct printer printers[] = { -+#ifndef TCPDUMP_MINI - { arcnet_if_print, DLT_ARCNET }, - #ifdef DLT_ARCNET_LINUX - { arcnet_linux_if_print, DLT_ARCNET_LINUX }, -@@ -179,19 +180,23 @@ static struct printer printers[] = { - #ifdef DLT_SLIP_BSDOS - { sl_bsdos_if_print, DLT_SLIP_BSDOS }, - #endif -+#endif - { ppp_if_print, DLT_PPP }, - #ifdef DLT_PPP_WITHDIRECTION - { ppp_if_print, DLT_PPP_WITHDIRECTION }, - #endif -+#ifndef TCPDUMP_MINI - #ifdef DLT_PPP_BSDOS - { ppp_bsdos_if_print, DLT_PPP_BSDOS }, - #endif - { fddi_if_print, DLT_FDDI }, -+#endif - { null_if_print, DLT_NULL }, - #ifdef DLT_LOOP - { null_if_print, DLT_LOOP }, - #endif - { raw_if_print, DLT_RAW }, -+#ifndef TCPDUMP_MINI - { atm_if_print, DLT_ATM_RFC1483 }, - #ifdef DLT_C_HDLC - { chdlc_if_print, DLT_C_HDLC }, -@@ -202,6 +207,7 @@ static struct printer printers[] = { - #ifdef DLT_PPP_SERIAL - { ppp_hdlc_if_print, DLT_PPP_SERIAL }, - #endif -+#endif - #ifdef DLT_PPP_ETHER - { pppoe_if_print, DLT_PPP_ETHER }, - #endif -@@ -211,6 +217,7 @@ static struct printer printers[] = { - #ifdef DLT_IEEE802_11 - { ieee802_11_if_print, DLT_IEEE802_11}, - #endif -+#ifndef TCPDUMP_MINI - #ifdef DLT_LTALK - { ltalk_if_print, DLT_LTALK }, - #endif -@@ -229,12 +236,14 @@ static struct printer printers[] = { - #ifdef DLT_IP_OVER_FC - { ipfc_if_print, DLT_IP_OVER_FC }, - #endif -+#endif - #ifdef DLT_PRISM_HEADER - { prism_if_print, DLT_PRISM_HEADER }, - #endif - #ifdef DLT_IEEE802_11_RADIO - { ieee802_11_radio_if_print, DLT_IEEE802_11_RADIO }, - #endif -+#ifndef TCPDUMP_MINI - #ifdef DLT_ENC - { enc_if_print, DLT_ENC }, - #endif -@@ -244,9 +253,11 @@ static struct printer printers[] = { - #ifdef DLT_APPLE_IP_OVER_IEEE1394 - { ap1394_if_print, DLT_APPLE_IP_OVER_IEEE1394 }, - #endif -+#endif - #ifdef DLT_IEEE802_11_RADIO_AVS - { ieee802_11_radio_avs_if_print, DLT_IEEE802_11_RADIO_AVS }, - #endif -+#ifndef TCPDUMP_MINI - #ifdef DLT_JUNIPER_ATM1 - { juniper_atm1_print, DLT_JUNIPER_ATM1 }, - #endif -@@ -312,6 +323,7 @@ static struct printer printers[] = { - #ifdef DLT_IPV6 - { raw_if_print, DLT_IPV6 }, - #endif -+#endif - { NULL, 0 }, - }; - -@@ -320,6 +332,7 @@ static struct ndo_printer ndo_printers[] +--- a/print.c ++++ b/print.c +@@ -48,6 +48,7 @@ static const struct printer printers[] = #ifdef DLT_IPNET { ipnet_if_print, DLT_IPNET }, #endif @@ -804,7 +129,7 @@ #ifdef DLT_IEEE802_15_4 { ieee802_15_4_if_print, DLT_IEEE802_15_4 }, #endif -@@ -329,15 +342,18 @@ static struct ndo_printer ndo_printers[] +@@ -57,12 +58,14 @@ static const struct printer printers[] = #ifdef DLT_PPI { ppi_if_print, DLT_PPI }, #endif @@ -816,29 +141,717 @@ { netanalyzer_transparent_if_print, DLT_NETANALYZER_TRANSPARENT }, #endif +#ifndef TCPDUMP_MINI - #ifdef DLT_NFLOG + #if defined(DLT_NFLOG) && defined(HAVE_PCAP_NFLOG_H) { nflog_if_print, DLT_NFLOG}, #endif +@@ -75,10 +78,12 @@ static const struct printer printers[] = + #ifdef DLT_IP_OVER_FC + { ipfc_if_print, DLT_IP_OVER_FC }, + #endif ++#endif + { null_if_print, DLT_NULL }, + #ifdef DLT_LOOP + { null_if_print, DLT_LOOP }, + #endif ++#ifndef TCPDUMP_MINI + #ifdef DLT_APPLE_IP_OVER_IEEE1394 + { ap1394_if_print, DLT_APPLE_IP_OVER_IEEE1394 }, + #endif +@@ -92,7 +97,9 @@ static const struct printer printers[] = + #ifdef DLT_ARCNET_LINUX + { arcnet_linux_if_print, DLT_ARCNET_LINUX }, + #endif ++#endif + { raw_if_print, DLT_RAW }, ++#ifndef TCPDUMP_MINI + #ifdef DLT_IPV4 + { raw_if_print, DLT_IPV4 }, + #endif +@@ -116,17 +123,21 @@ static const struct printer printers[] = + #ifdef DLT_HDLC + { chdlc_if_print, DLT_HDLC }, + #endif ++#endif + #ifdef DLT_PPP_ETHER + { pppoe_if_print, DLT_PPP_ETHER }, + #endif ++#ifndef TCPDUMP_MINI + #if defined(DLT_PFLOG) && defined(HAVE_NET_IF_PFLOG_H) + { pflog_if_print, DLT_PFLOG }, + #endif + { token_if_print, DLT_IEEE802 }, + { fddi_if_print, DLT_FDDI }, ++#endif + #ifdef DLT_LINUX_SLL + { sll_if_print, DLT_LINUX_SLL }, + #endif ++#ifndef TCPDUMP_MINI + #ifdef DLT_FR + { fr_if_print, DLT_FR }, + #endif +@@ -198,6 +209,7 @@ static const struct printer printers[] = + #ifdef DLT_PKTAP + { pktap_if_print, DLT_PKTAP }, + #endif ++#endif + #ifdef DLT_IEEE802_11_RADIO + { ieee802_11_radio_if_print, DLT_IEEE802_11_RADIO }, + #endif +@@ -214,12 +226,14 @@ static const struct printer printers[] = + #ifdef DLT_PPP_WITHDIRECTION + { ppp_if_print, DLT_PPP_WITHDIRECTION }, + #endif ++#ifndef TCPDUMP_MINI + #ifdef DLT_PPP_BSDOS + { ppp_bsdos_if_print, DLT_PPP_BSDOS }, + #endif + #ifdef DLT_PPP_SERIAL + { ppp_hdlc_if_print, DLT_PPP_SERIAL }, + #endif +#endif { NULL, 0 }, }; +--- a/print-ether.c ++++ b/print-ether.c +@@ -342,6 +342,7 @@ ethertype_print(netdissect_options *ndo, + arp_print(ndo, p, length, caplen); + return (1); + ++#ifndef TCPDUMP_MINI + case ETHERTYPE_DN: + decnet_print(ndo, p, length, caplen); + return (1); +@@ -368,6 +369,7 @@ ethertype_print(netdissect_options *ndo, + } + isoclns_print(ndo, p + 1, length - 1); + return(1); ++#endif + + case ETHERTYPE_PPPOED: + case ETHERTYPE_PPPOES: +@@ -380,9 +382,11 @@ ethertype_print(netdissect_options *ndo, + eap_print(ndo, p, length); + return (1); + ++#ifndef TCPDUMP_MINI + case ETHERTYPE_RRCP: + rrcp_print(ndo, p, length, src, dst); + return (1); ++#endif + + case ETHERTYPE_PPP: + if (length) { +@@ -391,6 +395,7 @@ ethertype_print(netdissect_options *ndo, + } + return (1); + ++#ifndef TCPDUMP_MINI + case ETHERTYPE_MPCP: + mpcp_print(ndo, p, length); + return (1); +@@ -403,6 +408,7 @@ ethertype_print(netdissect_options *ndo, + case ETHERTYPE_CFM_OLD: + cfm_print(ndo, p, length); + return (1); ++#endif + + case ETHERTYPE_LLDP: + lldp_print(ndo, p, length); +@@ -412,6 +418,7 @@ ethertype_print(netdissect_options *ndo, + loopback_print(ndo, p, length); + return (1); + ++#ifndef TCPDUMP_MINI + case ETHERTYPE_MPLS: + case ETHERTYPE_MPLS_MULTI: + mpls_print(ndo, p, length); +@@ -441,6 +448,7 @@ ethertype_print(netdissect_options *ndo, + case ETHERTYPE_MEDSA: + medsa_print(ndo, p, length, caplen, src, dst); + return (1); ++#endif + + case ETHERTYPE_LAT: + case ETHERTYPE_SCA: +--- a/print-gre.c ++++ b/print-gre.c +@@ -216,6 +216,7 @@ gre_print_0(netdissect_options *ndo, con + case ETHERTYPE_IPV6: + ip6_print(ndo, bp, len); + break; ++#ifndef TCPDUMP_MINI + case ETHERTYPE_MPLS: + mpls_print(ndo, bp, len); + break; +@@ -231,6 +232,7 @@ gre_print_0(netdissect_options *ndo, con + case ETHERTYPE_TEB: + ether_print(ndo, bp, len, ndo->ndo_snapend - bp, NULL, NULL); + break; ++#endif + default: + ND_PRINT((ndo, "gre-proto-0x%x", prot)); + } +--- a/print-igmp.c ++++ b/print-igmp.c +@@ -306,6 +306,7 @@ igmp_print(netdissect_options *ndo, + ND_TCHECK2(bp[4], 4); + ND_PRINT((ndo, "igmp leave %s", ipaddr_string(ndo, &bp[4]))); + break; ++#ifndef TCPDUMP_MINI + case 0x13: + ND_PRINT((ndo, "igmp dvmrp")); + if (len < 8) +@@ -317,6 +318,7 @@ igmp_print(netdissect_options *ndo, + ND_PRINT((ndo, "igmp pimv1")); + pimv1_print(ndo, bp, len); + break; ++#endif + case 0x1e: + print_mresp(ndo, bp, len); + break; +--- a/print-ip6.c ++++ b/print-ip6.c +@@ -305,6 +305,7 @@ ip6_print(netdissect_options *ndo, const + return; + nh = *cp; + break; ++#ifndef TCPDUMP_MINI + case IPPROTO_FRAGMENT: + advance = frag6_print(ndo, cp, (const u_char *)ip6); + if (advance < 0 || ndo->ndo_snapend <= cp + advance) +@@ -328,6 +329,7 @@ ip6_print(netdissect_options *ndo, const + return; + nh = *cp; + return; ++#endif + case IPPROTO_ROUTING: + ND_TCHECK(*cp); + advance = rt6_print(ndo, cp, (const u_char *)ip6); +@@ -335,12 +337,14 @@ ip6_print(netdissect_options *ndo, const + return; + nh = *cp; + break; ++#ifndef TCPDUMP_MINI + case IPPROTO_SCTP: + sctp_print(ndo, cp, (const u_char *)ip6, len); + return; + case IPPROTO_DCCP: + dccp_print(ndo, cp, (const u_char *)ip6, len); + return; ++#endif + case IPPROTO_TCP: + tcp_print(ndo, cp, len, (const u_char *)ip6, fragmented); + return; +@@ -350,6 +354,7 @@ ip6_print(netdissect_options *ndo, const + case IPPROTO_ICMPV6: + icmp6_print(ndo, cp, len, (const u_char *)ip6, fragmented); + return; ++#ifndef TCPDUMP_MINI + case IPPROTO_AH: + advance = ah_print(ndo, cp); + if (advance < 0) +@@ -382,6 +387,7 @@ ip6_print(netdissect_options *ndo, const + case IPPROTO_PIM: + pim_print(ndo, cp, len, (const u_char *)ip6); + return; ++#endif + + case IPPROTO_OSPF: + ospf6_print(ndo, cp, len); +@@ -395,9 +401,11 @@ ip6_print(netdissect_options *ndo, const + ip_print(ndo, cp, len); + return; + ++#ifndef TCPDUMP_MINI + case IPPROTO_PGM: + pgm_print(ndo, cp, len, (const u_char *)ip6); + return; ++#endif + + case IPPROTO_GRE: + gre_print(ndo, cp, len); +--- a/print-ip.c ++++ b/print-ip.c +@@ -344,6 +344,7 @@ ip_print_demux(netdissect_options *ndo, + again: + switch (ipds->nh) { + ++#ifndef TCPDUMP_MINI + case IPPROTO_AH: + if (!ND_TTEST(*ipds->cp)) { + ND_PRINT((ndo, "[|AH]")); +@@ -382,7 +383,9 @@ again: + */ + break; + } ++#endif + ++#ifndef TCPDUMP_MINI + case IPPROTO_SCTP: + sctp_print(ndo, ipds->cp, (const u_char *)ipds->ip, ipds->len); + break; +@@ -390,6 +393,7 @@ again: + case IPPROTO_DCCP: + dccp_print(ndo, ipds->cp, (const u_char *)ipds->ip, ipds->len); + break; ++#endif + + case IPPROTO_TCP: + /* pass on the MF bit plus the offset to detect fragments */ +@@ -409,6 +413,7 @@ again: + ipds->off & (IP_MF|IP_OFFMASK)); + break; + ++#ifndef TCPDUMP_MINI + case IPPROTO_PIGP: + /* + * XXX - the current IANA protocol number assignments +@@ -429,14 +434,17 @@ again: + case IPPROTO_EIGRP: + eigrp_print(ndo, ipds->cp, ipds->len); + break; ++#endif + + case IPPROTO_ND: + ND_PRINT((ndo, " nd %d", ipds->len)); + break; + ++#ifndef TCPDUMP_MINI + case IPPROTO_EGP: + egp_print(ndo, ipds->cp, ipds->len); + break; ++#endif + + case IPPROTO_OSPF: + ospf_print(ndo, ipds->cp, ipds->len, (const u_char *)ipds->ip); +@@ -469,6 +477,7 @@ again: + gre_print(ndo, ipds->cp, ipds->len); + break; + ++#ifndef TCPDUMP_MINI + case IPPROTO_MOBILE: + mobile_print(ndo, ipds->cp, ipds->len); + break; +@@ -497,6 +506,7 @@ again: + case IPPROTO_PGM: + pgm_print(ndo, ipds->cp, ipds->len, (const u_char *)ipds->ip); + break; ++#endif + + default: + if (ndo->ndo_nflag==0 && (p_name = netdb_protoname(ipds->nh)) != NULL) +--- a/print-llc.c ++++ b/print-llc.c +@@ -206,6 +206,7 @@ llc_print(netdissect_options *ndo, const + hdrlen = 4; /* DSAP, SSAP, 2-byte control field */ + } + ++#ifndef TCPDUMP_MINI + if (ssap_field == LLCSAP_GLOBAL && dsap_field == LLCSAP_GLOBAL) { + /* + * This is an Ethernet_802.3 IPX frame; it has an +@@ -228,6 +229,7 @@ llc_print(netdissect_options *ndo, const + ipx_print(ndo, p, length); + return (0); /* no LLC header */ + } ++#endif + + dsap = dsap_field & ~LLC_IG; + ssap = ssap_field & ~LLC_GSAP; +@@ -291,6 +293,7 @@ llc_print(netdissect_options *ndo, const + return (hdrlen); + } + ++#ifndef TCPDUMP_MINI + if (ssap == LLCSAP_IPX && dsap == LLCSAP_IPX && + control == LLC_UI) { + /* +@@ -304,6 +307,7 @@ llc_print(netdissect_options *ndo, const + ipx_print(ndo, p, length); + return (hdrlen); + } ++#endif + + #ifdef ENABLE_SMB + if (ssap == LLCSAP_NETBEUI && dsap == LLCSAP_NETBEUI +@@ -322,12 +326,13 @@ llc_print(netdissect_options *ndo, const + return (hdrlen); + } + #endif ++#ifndef TCPDUMP_MINI + if (ssap == LLCSAP_ISONS && dsap == LLCSAP_ISONS + && control == LLC_UI) { + isoclns_print(ndo, p, length); + return (hdrlen); + } +- ++#endif + if (!ndo->ndo_eflag) { + if (ssap == dsap) { + if (src == NULL || dst == NULL) +@@ -480,6 +485,7 @@ snap_print(netdissect_options *ndo, cons + + case OUI_CISCO: + switch (et) { ++#ifndef TCPDUMP_MINI + case PID_CISCO_CDP: + cdp_print(ndo, p, length, caplen); + return (1); +@@ -492,6 +498,7 @@ snap_print(netdissect_options *ndo, cons + case PID_CISCO_VTP: + vtp_print(ndo, p, length); + return (1); ++#endif + case PID_CISCO_PVST: + case PID_CISCO_VLANBRIDGE: + stp_print(ndo, p, length); +@@ -504,6 +511,7 @@ snap_print(netdissect_options *ndo, cons + case OUI_RFC2684: + switch (et) { + ++#ifndef TCPDUMP_MINI + case PID_RFC2684_ETH_FCS: + case PID_RFC2684_ETH_NOFCS: + /* +@@ -565,6 +573,7 @@ snap_print(netdissect_options *ndo, cons + */ + fddi_print(ndo, p, length, caplen); + return (1); ++#endif + + case PID_RFC2684_BPDU: + stp_print(ndo, p, length); +--- a/print-null.c ++++ b/print-null.c +@@ -116,6 +116,7 @@ null_if_print(netdissect_options *ndo, c + ip6_print(ndo, p, length); + break; + ++#ifndef TCPDUMP_MINI + case BSD_AFNUM_ISO: + isoclns_print(ndo, p, length); + break; +@@ -127,6 +128,7 @@ null_if_print(netdissect_options *ndo, c + case BSD_AFNUM_IPX: + ipx_print(ndo, p, length); + break; ++#endif + + default: + /* unknown AF_ value */ +--- a/print-ppp.c ++++ b/print-ppp.c +@@ -1367,6 +1367,7 @@ trunc: + return 0; + } + ++#ifndef TCPDUMP_MINI + static void + ppp_hdlc(netdissect_options *ndo, + const u_char *p, int length) +@@ -1445,6 +1446,7 @@ trunc: + free(b); + ND_PRINT((ndo, "[|ppp]")); + } ++#endif + + + /* PPP */ +@@ -1452,10 +1454,12 @@ static void + handle_ppp(netdissect_options *ndo, + u_int proto, const u_char *p, int length) + { ++#ifndef TCPDUMP_MINI + if ((proto & 0xff00) == 0x7e00) { /* is this an escape code ? */ + ppp_hdlc(ndo, p - 1, length); + return; + } ++#endif + + switch (proto) { + case PPP_LCP: /* fall through */ +@@ -1488,6 +1492,7 @@ handle_ppp(netdissect_options *ndo, + case PPP_IPV6: + ip6_print(ndo, p, length); + break; ++#ifndef TCPDUMP_MINI + case ETHERTYPE_IPX: /*XXX*/ + case PPP_IPX: + ipx_print(ndo, p, length); +@@ -1499,6 +1504,7 @@ handle_ppp(netdissect_options *ndo, + case PPP_MPLS_MCAST: + mpls_print(ndo, p, length); + break; ++#endif + case PPP_COMP: + ND_PRINT((ndo, "compressed PPP data")); + break; +@@ -1639,6 +1645,7 @@ ppp_if_print(netdissect_options *ndo, + return (0); + } + ++#ifndef TCPDUMP_MINI + /* + * PPP I/F printer to use if we know that RFC 1662-style PPP in HDLC-like + * framing, or Cisco PPP with HDLC framing as per section 4.3.1 of RFC 1547, +@@ -1866,6 +1873,7 @@ printx: + #endif /* __bsdi__ */ + return (hdrlength); + } ++#endif + + + /* --- a/print-sll.c +++ b/print-sll.c -@@ -154,14 +154,14 @@ recurse: - * Yes - what type is it? +@@ -238,12 +238,14 @@ recurse: */ switch (ether_type) { -- + +#ifndef TCPDUMP_MINI case LINUX_SLL_P_802_3: /* * Ethernet_802.3 IPX frame. */ - ipx_print(p, length); + ipx_print(ndo, p, length); break; -- +#endif + case LINUX_SLL_P_802_2: /* - * 802.2. +--- a/print-tcp.c ++++ b/print-tcp.c +@@ -589,12 +589,14 @@ tcp_print(netdissect_options *ndo, + ND_PRINT((ndo, " %u", utoval)); + break; + ++#ifndef TCPDUMP_MINI + case TCPOPT_MPTCP: + datalen = len - 2; + LENCHECK(datalen); + if (!mptcp_print(ndo, cp-2, len, flags)) + goto bad; + break; ++#endif + + case TCPOPT_FASTOPEN: + datalen = len - 2; +@@ -670,6 +672,7 @@ tcp_print(netdissect_options *ndo, + return; + } + ++#ifndef TCPDUMP_MINI + if (ndo->ndo_packettype) { + switch (ndo->ndo_packettype) { + case PT_ZMTP1: +@@ -681,28 +684,36 @@ tcp_print(netdissect_options *ndo, + } + return; + } ++#endif + + if (IS_SRC_OR_DST_PORT(TELNET_PORT)) { + telnet_print(ndo, bp, length); + } else if (IS_SRC_OR_DST_PORT(SMTP_PORT)) { + ND_PRINT((ndo, ": ")); + smtp_print(ndo, bp, length); +- } else if (IS_SRC_OR_DST_PORT(BGP_PORT)) ++ } ++#ifndef TCPDUMP_MINI ++ else if (IS_SRC_OR_DST_PORT(BGP_PORT)) + bgp_print(ndo, bp, length); ++#endif + else if (IS_SRC_OR_DST_PORT(PPTP_PORT)) + pptp_print(ndo, bp); ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(REDIS_PORT)) + resp_print(ndo, bp, length); ++#endif + #ifdef ENABLE_SMB + else if (IS_SRC_OR_DST_PORT(NETBIOS_SSN_PORT)) + nbt_tcp_print(ndo, bp, length); + else if (IS_SRC_OR_DST_PORT(SMB_PORT)) + smb_tcp_print(ndo, bp, length); + #endif ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(BEEP_PORT)) + beep_print(ndo, bp, length); + else if (IS_SRC_OR_DST_PORT(OPENFLOW_PORT_OLD) || IS_SRC_OR_DST_PORT(OPENFLOW_PORT_IANA)) + openflow_print(ndo, bp, length); ++#endif + else if (IS_SRC_OR_DST_PORT(FTP_PORT)) { + ND_PRINT((ndo, ": ")); + ftp_print(ndo, bp, length); +@@ -719,6 +730,7 @@ tcp_print(netdissect_options *ndo, + * XXX packet could be unaligned, it can go strange + */ + ns_print(ndo, bp + 2, length - 2, 0); ++#ifndef TCPDUMP_MINI + } else if (IS_SRC_OR_DST_PORT(MSDP_PORT)) { + msdp_print(ndo, bp, length); + } else if (IS_SRC_OR_DST_PORT(RPKI_RTR_PORT)) { +@@ -726,6 +738,7 @@ tcp_print(netdissect_options *ndo, + } + else if (length > 0 && (IS_SRC_OR_DST_PORT(LDP_PORT))) { + ldp_print(ndo, bp, length); ++#endif + } + else if ((IS_SRC_OR_DST_PORT(NFS_PORT)) && + length >= 4 && ND_TTEST2(*bp, 4)) { +--- a/print-udp.c ++++ b/print-udp.c +@@ -430,10 +430,12 @@ udp_print(netdissect_options *ndo, regis + vat_print(ndo, (const void *)(up + 1), up); + break; + ++#ifndef TCPDUMP_MINI + case PT_WB: + udpipaddr_print(ndo, ip, sport, dport); + wb_print(ndo, (const void *)(up + 1), length); + break; ++#endif + + case PT_RPC: + rp = (const struct sunrpc_msg *)(up + 1); +@@ -462,10 +464,12 @@ udp_print(netdissect_options *ndo, regis + snmp_print(ndo, (const u_char *)(up + 1), length); + break; + ++#ifndef TCPDUMP_MINI + case PT_CNFP: + udpipaddr_print(ndo, ip, sport, dport); + cnfp_print(ndo, cp); + break; ++#endif + + case PT_TFTP: + udpipaddr_print(ndo, ip, sport, dport); +@@ -483,6 +487,7 @@ udp_print(netdissect_options *ndo, regis + radius_print(ndo, cp, length); + break; + ++#ifndef TCPDUMP_MINI + case PT_VXLAN: + udpipaddr_print(ndo, ip, sport, dport); + vxlan_print(ndo, (const u_char *)(up + 1), length); +@@ -497,6 +502,7 @@ udp_print(netdissect_options *ndo, regis + udpipaddr_print(ndo, ip, sport, dport); + lmp_print(ndo, cp, length); + break; ++#endif + } + return; + } +@@ -574,31 +580,40 @@ udp_print(netdissect_options *ndo, regis + ns_print(ndo, (const u_char *)(up + 1), length, 0); + else if (IS_SRC_OR_DST_PORT(MULTICASTDNS_PORT)) + ns_print(ndo, (const u_char *)(up + 1), length, 1); ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(TIMED_PORT)) + timed_print(ndo, (const u_char *)(up + 1)); ++#endif + else if (IS_SRC_OR_DST_PORT(TFTP_PORT)) + tftp_print(ndo, (const u_char *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(BOOTPC_PORT) || IS_SRC_OR_DST_PORT(BOOTPS_PORT)) + bootp_print(ndo, (const u_char *)(up + 1), length); ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(RIP_PORT)) + rip_print(ndo, (const u_char *)(up + 1), length); ++#endif + else if (IS_SRC_OR_DST_PORT(AODV_PORT)) + aodv_print(ndo, (const u_char *)(up + 1), length, + ip6 != NULL); ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT)) + isakmp_print(ndo, (const u_char *)(up + 1), length, bp2); ++ + else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT_NATT)) + isakmp_rfc3948_print(ndo, (const u_char *)(up + 1), length, bp2); + #if 1 /*???*/ + else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT_USER1) || IS_SRC_OR_DST_PORT(ISAKMP_PORT_USER2)) + isakmp_print(ndo, (const u_char *)(up + 1), length, bp2); + #endif ++#endif + else if (IS_SRC_OR_DST_PORT(SNMP_PORT) || IS_SRC_OR_DST_PORT(SNMPTRAP_PORT)) + snmp_print(ndo, (const u_char *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(NTP_PORT)) + ntp_print(ndo, (const u_char *)(up + 1), length); ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(KERBEROS_PORT) || IS_SRC_OR_DST_PORT(KERBEROS_SEC_PORT)) + krb_print(ndo, (const void *)(up + 1)); ++#endif + else if (IS_SRC_OR_DST_PORT(L2TP_PORT)) + l2tp_print(ndo, (const u_char *)(up + 1), length); + #ifdef ENABLE_SMB +@@ -609,6 +624,7 @@ udp_print(netdissect_options *ndo, regis + #endif + else if (dport == VAT_PORT) + vat_print(ndo, (const void *)(up + 1), up); ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(ZEPHYR_SRV_PORT) || IS_SRC_OR_DST_PORT(ZEPHYR_CLT_PORT)) + zephyr_print(ndo, (const void *)(up + 1), length); + /* +@@ -621,8 +637,11 @@ udp_print(netdissect_options *ndo, regis + (const u_char *) ip); + else if (IS_SRC_OR_DST_PORT(RIPNG_PORT)) + ripng_print(ndo, (const u_char *)(up + 1), length); ++#endif ++ + else if (IS_SRC_OR_DST_PORT(DHCP6_SERV_PORT) || IS_SRC_OR_DST_PORT(DHCP6_CLI_PORT)) + dhcp6_print(ndo, (const u_char *)(up + 1), length); ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(AHCP_PORT)) + ahcp_print(ndo, (const u_char *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(BABEL_PORT) || IS_SRC_OR_DST_PORT(BABEL_PORT_OLD)) +@@ -636,6 +655,7 @@ udp_print(netdissect_options *ndo, regis + wb_print(ndo, (const void *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(CISCO_AUTORP_PORT)) + cisco_autorp_print(ndo, (const void *)(up + 1), length); ++#endif + else if (IS_SRC_OR_DST_PORT(RADIUS_PORT) || + IS_SRC_OR_DST_PORT(RADIUS_NEW_PORT) || + IS_SRC_OR_DST_PORT(RADIUS_ACCOUNTING_PORT) || +@@ -643,15 +663,18 @@ udp_print(netdissect_options *ndo, regis + IS_SRC_OR_DST_PORT(RADIUS_CISCO_COA_PORT) || + IS_SRC_OR_DST_PORT(RADIUS_COA_PORT) ) + radius_print(ndo, (const u_char *)(up+1), length); ++#ifndef TCPDUMP_MINI + else if (dport == HSRP_PORT) + hsrp_print(ndo, (const u_char *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(LWRES_PORT)) + lwres_print(ndo, (const u_char *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(LDP_PORT)) + ldp_print(ndo, (const u_char *)(up + 1), length); ++#endif + else if (IS_SRC_OR_DST_PORT(OLSR_PORT)) + olsr_print(ndo, (const u_char *)(up + 1), length, + (IP_V(ip) == 6) ? 1 : 0); ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(MPLS_LSP_PING_PORT)) + lspping_print(ndo, (const u_char *)(up + 1), length); + else if (dport == BFD_CONTROL_PORT || +@@ -669,10 +692,12 @@ udp_print(netdissect_options *ndo, regis + lwapp_control_print(ndo, (const u_char *)(up + 1), length, 0); + else if (IS_SRC_OR_DST_PORT(LWAPP_DATA_PORT)) + lwapp_data_print(ndo, (const u_char *)(up + 1), length); ++#endif + else if (IS_SRC_OR_DST_PORT(SIP_PORT)) + sip_print(ndo, (const u_char *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(SYSLOG_PORT)) + syslog_print(ndo, (const u_char *)(up + 1), length); ++#ifndef TCPDUMP_MINI + else if (IS_SRC_OR_DST_PORT(OTV_PORT)) + otv_print(ndo, (const u_char *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(VXLAN_PORT)) +@@ -689,7 +714,9 @@ udp_print(netdissect_options *ndo, regis + if (ndo->ndo_vflag) + ND_PRINT((ndo, "kip ")); + llap_print(ndo, cp, length); +- } else { ++ } ++#endif ++ else { + if (ulen > length) + ND_PRINT((ndo, "UDP, bad length %u > %u", + ulen, length)); diff --git a/package/utils/busybox/Config-defaults.in b/package/utils/busybox/Config-defaults.in index 7b4cd99a5d..d961bfaaee 100644 --- a/package/utils/busybox/Config-defaults.in +++ b/package/utils/busybox/Config-defaults.in @@ -2187,19 +2187,19 @@ config BUSYBOX_DEFAULT_TCPSVD default n config BUSYBOX_DEFAULT_TELNET bool - default y + default n config BUSYBOX_DEFAULT_FEATURE_TELNET_TTYPE bool - default y + default n config BUSYBOX_DEFAULT_FEATURE_TELNET_AUTOLOGIN bool default n config BUSYBOX_DEFAULT_TELNETD bool - default y + default n config BUSYBOX_DEFAULT_FEATURE_TELNETD_STANDALONE bool - default y + default n config BUSYBOX_DEFAULT_FEATURE_TELNETD_INETD_WAIT bool default n diff --git a/package/utils/busybox/Makefile b/package/utils/busybox/Makefile index 9571d48bec..a65f44f8fe 100644 --- a/package/utils/busybox/Makefile +++ b/package/utils/busybox/Makefile @@ -110,7 +110,6 @@ define Package/busybox/install $(INSTALL_DIR) $(1)/etc/init.d $(CP) $(PKG_INSTALL_DIR)/* $(1)/ $(INSTALL_BIN) ./files/cron $(1)/etc/init.d/cron - $(INSTALL_BIN) ./files/telnet $(1)/etc/init.d/telnet $(INSTALL_BIN) ./files/sysntpd $(1)/etc/init.d/sysntpd $(INSTALL_BIN) ./files/ntpd-hotplug $(1)/usr/sbin/ntpd-hotplug -rm -rf $(1)/lib64 diff --git a/package/utils/busybox/files/telnet b/package/utils/busybox/files/telnet deleted file mode 100755 index a1d1cdf9b1..0000000000 --- a/package/utils/busybox/files/telnet +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2006-2011 OpenWrt.org - -START=50 - -USE_PROCD=1 -PROG=/usr/sbin/telnetd - -has_root_pwd() { - local pwd=$([ -f "$1" ] && cat "$1") - pwd="${pwd#*root:}" - pwd="${pwd%%:*}" - - test -n "${pwd#[\!x]}" -} - -get_root_home() { - local homedir=$([ -f "$1" ] && cat "$1") - homedir="${homedir#*:*:0:0:*:}" - - echo "${homedir%%:*}" -} - -has_ssh_pubkey() { - ( /etc/init.d/dropbear enabled 2> /dev/null && grep -qs "^ssh-" /etc/dropbear/authorized_keys ) || \ - ( /etc/init.d/sshd enabled 2> /dev/null && grep -qs "^ssh-" "$(get_root_home /etc/passwd)"/.ssh/authorized_keys ) -} - -start_service() { - if ( ! has_ssh_pubkey && \ - ! has_root_pwd /etc/passwd && ! has_root_pwd /etc/shadow ) || \ - ( ! /etc/init.d/dropbear enabled 2> /dev/null && ! /etc/init.d/sshd enabled 2> /dev/null ); - then - procd_open_instance - procd_set_param command "$PROG" -F -l /bin/login.sh - procd_close_instance - fi -} diff --git a/rules.mk b/rules.mk index 9d0134d2b2..b40f6f9a83 100644 --- a/rules.mk +++ b/rules.mk @@ -117,6 +117,8 @@ BUILD_LOG_DIR:=$(TOPDIR)/logs PKG_INFO_DIR := $(STAGING_DIR)/pkginfo TARGET_PATH:=$(subst $(space),:,$(filter-out .,$(filter-out ./,$(subst :,$(space),$(PATH))))) +TARGET_INIT_PATH:=$(call qstrip,$(CONFIG_TARGET_INIT_PATH)) +TARGET_INIT_PATH:=$(if $(TARGET_INIT_PATH),$(TARGET_INIT_PATH),/usr/sbin:/sbin:/usr/bin:/bin) TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3) $(EXTRA_OPTIMIZATION) TARGET_CXXFLAGS = $(TARGET_CFLAGS) TARGET_ASFLAGS_DEFAULT = $(TARGET_CFLAGS) diff --git a/target/linux/adm5120/patches-3.18/007-adm5120_pci.patch b/target/linux/adm5120/patches-3.18/007-adm5120_pci.patch index a5a0abf43b..7a84217bee 100644 --- a/target/linux/adm5120/patches-3.18/007-adm5120_pci.patch +++ b/target/linux/adm5120/patches-3.18/007-adm5120_pci.patch @@ -10,7 +10,7 @@ obj-$(CONFIG_PCI_AR724X) += pci-ar724x.o --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h -@@ -1820,6 +1820,9 @@ +@@ -1821,6 +1821,9 @@ #define PCI_VENDOR_ID_CB 0x1307 /* Measurement Computing */ diff --git a/target/linux/adm5120/patches-3.18/101-cfi_fixup_macronix_bootloc.patch b/target/linux/adm5120/patches-3.18/101-cfi_fixup_macronix_bootloc.patch index a0caa680bc..92937fce14 100644 --- a/target/linux/adm5120/patches-3.18/101-cfi_fixup_macronix_bootloc.patch +++ b/target/linux/adm5120/patches-3.18/101-cfi_fixup_macronix_bootloc.patch @@ -67,7 +67,7 @@ --- a/drivers/mtd/chips/Kconfig +++ b/drivers/mtd/chips/Kconfig -@@ -188,6 +188,14 @@ config MTD_CFI_AMDSTD +@@ -189,6 +189,14 @@ config MTD_CFI_AMDSTD provides support for command set 0002, used on chips including the AMD Am29LV320. diff --git a/target/linux/adm8668/patches-3.18/002-adm8668_pci.patch b/target/linux/adm8668/patches-3.18/002-adm8668_pci.patch index 70ee00db5a..d013d08b5d 100644 --- a/target/linux/adm8668/patches-3.18/002-adm8668_pci.patch +++ b/target/linux/adm8668/patches-3.18/002-adm8668_pci.patch @@ -10,7 +10,7 @@ obj-$(CONFIG_CAVIUM_OCTEON_SOC) += msi-octeon.o --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h -@@ -1820,6 +1820,9 @@ +@@ -1821,6 +1821,9 @@ #define PCI_VENDOR_ID_CB 0x1307 /* Measurement Computing */ diff --git a/target/linux/adm8668/patches-3.18/004-tulip_pci_split.patch b/target/linux/adm8668/patches-3.18/004-tulip_pci_split.patch index e57bdb73cc..e39a1686ce 100644 --- a/target/linux/adm8668/patches-3.18/004-tulip_pci_split.patch +++ b/target/linux/adm8668/patches-3.18/004-tulip_pci_split.patch @@ -1,6 +1,6 @@ --- a/drivers/net/ethernet/dec/tulip/tulip_core.c +++ b/drivers/net/ethernet/dec/tulip/tulip_core.c -@@ -207,6 +207,7 @@ struct tulip_chip_table tulip_tbl[] = { +@@ -206,6 +206,7 @@ struct tulip_chip_table tulip_tbl[] = { }; @@ -8,7 +8,7 @@ static const struct pci_device_id tulip_pci_tbl[] = { { 0x1011, 0x0009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21140 }, { 0x1011, 0x0019, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21143 }, -@@ -250,7 +251,7 @@ static const struct pci_device_id tulip_ +@@ -249,7 +250,7 @@ static const struct pci_device_id tulip_ { } /* terminate list */ }; MODULE_DEVICE_TABLE(pci, tulip_pci_tbl); @@ -17,7 +17,7 @@ /* A full-duplex map for media types. */ const char tulip_media_cap[32] = -@@ -268,11 +269,14 @@ static void tulip_down(struct net_device +@@ -267,11 +268,14 @@ static void tulip_down(struct net_device static struct net_device_stats *tulip_get_stats(struct net_device *dev); static int private_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); static void set_rx_mode(struct net_device *dev); @@ -32,7 +32,7 @@ static void tulip_set_power_state (struct tulip_private *tp, int sleep, int snooze) { -@@ -289,7 +293,7 @@ static void tulip_set_power_state (struc +@@ -288,7 +292,7 @@ static void tulip_set_power_state (struc } } @@ -41,7 +41,7 @@ static void tulip_up(struct net_device *dev) { -@@ -303,6 +307,7 @@ static void tulip_up(struct net_device * +@@ -302,6 +306,7 @@ static void tulip_up(struct net_device * napi_enable(&tp->napi); #endif @@ -49,7 +49,7 @@ /* Wake the chip from sleep/snooze mode. */ tulip_set_power_state (tp, 0, 0); -@@ -310,6 +315,7 @@ static void tulip_up(struct net_device * +@@ -309,6 +314,7 @@ static void tulip_up(struct net_device * pci_enable_wake(tp->pdev, PCI_D3hot, 0); pci_enable_wake(tp->pdev, PCI_D3cold, 0); tulip_set_wolopts(tp->pdev, 0); @@ -57,7 +57,7 @@ /* On some chip revs we must set the MII/SYM port before the reset!? */ if (tp->mii_cnt || (tp->mtable && tp->mtable->has_mii)) -@@ -317,18 +323,22 @@ static void tulip_up(struct net_device * +@@ -316,18 +322,22 @@ static void tulip_up(struct net_device * /* Reset the chip, holding bit 0 set at least 50 PCI cycles. */ iowrite32(0x00000001, ioaddr + CSR0); @@ -81,7 +81,7 @@ iowrite32(tp->rx_ring_dma, ioaddr + CSR3); iowrite32(tp->tx_ring_dma, ioaddr + CSR4); -@@ -362,9 +372,11 @@ static void tulip_up(struct net_device * +@@ -361,9 +371,11 @@ static void tulip_up(struct net_device * *setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[2]; *setup_frm++ = eaddrs[2]; @@ -93,7 +93,7 @@ tp->tx_buffers[tp->cur_tx].skb = NULL; tp->tx_buffers[tp->cur_tx].mapping = mapping; -@@ -520,7 +532,7 @@ tulip_open(struct net_device *dev) +@@ -519,7 +531,7 @@ tulip_open(struct net_device *dev) tulip_init_ring (dev); @@ -102,7 +102,7 @@ dev->name, dev); if (retval) goto free_ring; -@@ -644,8 +656,10 @@ static void tulip_init_ring(struct net_d +@@ -643,8 +655,10 @@ static void tulip_init_ring(struct net_d tp->rx_buffers[i].skb = skb; if (skb == NULL) break; @@ -113,7 +113,7 @@ tp->rx_buffers[i].mapping = mapping; tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */ tp->rx_ring[i].buffer1 = cpu_to_le32(mapping); -@@ -678,8 +692,10 @@ tulip_start_xmit(struct sk_buff *skb, st +@@ -677,8 +691,10 @@ tulip_start_xmit(struct sk_buff *skb, st entry = tp->cur_tx % TX_RING_SIZE; tp->tx_buffers[entry].skb = skb; @@ -124,7 +124,7 @@ tp->tx_buffers[entry].mapping = mapping; tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping); -@@ -730,16 +746,19 @@ static void tulip_clean_tx_ring(struct t +@@ -729,16 +745,19 @@ static void tulip_clean_tx_ring(struct t if (tp->tx_buffers[entry].skb == NULL) { /* test because dummy frames not mapped */ if (tp->tx_buffers[entry].mapping) @@ -145,7 +145,7 @@ /* Free the original skb. */ dev_kfree_skb_irq(tp->tx_buffers[entry].skb); -@@ -790,7 +809,9 @@ static void tulip_down (struct net_devic +@@ -789,7 +808,9 @@ static void tulip_down (struct net_devic dev->if_port = tp->saved_if_port; /* Leave the driver in snooze, not sleep, mode. */ @@ -155,7 +155,7 @@ } static void tulip_free_ring (struct net_device *dev) -@@ -811,8 +832,10 @@ static void tulip_free_ring (struct net_ +@@ -810,8 +831,10 @@ static void tulip_free_ring (struct net_ /* An invalid address. */ tp->rx_ring[i].buffer1 = cpu_to_le32(0xBADF00D0); if (skb) { @@ -166,7 +166,7 @@ dev_kfree_skb (skb); } } -@@ -821,8 +844,10 @@ static void tulip_free_ring (struct net_ +@@ -820,8 +843,10 @@ static void tulip_free_ring (struct net_ struct sk_buff *skb = tp->tx_buffers[i].skb; if (skb != NULL) { @@ -177,7 +177,7 @@ dev_kfree_skb (skb); } tp->tx_buffers[i].skb = NULL; -@@ -843,7 +868,7 @@ static int tulip_close (struct net_devic +@@ -842,7 +867,7 @@ static int tulip_close (struct net_devic netdev_dbg(dev, "Shutting down ethercard, status was %02x\n", ioread32 (ioaddr + CSR5)); @@ -186,7 +186,7 @@ tulip_free_ring (dev); -@@ -874,7 +899,9 @@ static void tulip_get_drvinfo(struct net +@@ -873,7 +898,9 @@ static void tulip_get_drvinfo(struct net struct tulip_private *np = netdev_priv(dev); strlcpy(info->driver, DRV_NAME, sizeof(info->driver)); strlcpy(info->version, DRV_VERSION, sizeof(info->version)); @@ -196,7 +196,7 @@ } -@@ -887,7 +914,9 @@ static int tulip_ethtool_set_wol(struct +@@ -886,7 +913,9 @@ static int tulip_ethtool_set_wol(struct return -EOPNOTSUPP; tp->wolinfo.wolopts = wolinfo->wolopts; @@ -207,7 +207,7 @@ return 0; } -@@ -1165,9 +1194,11 @@ static void set_rx_mode(struct net_devic +@@ -1164,9 +1193,11 @@ static void set_rx_mode(struct net_devic tp->tx_buffers[entry].skb = NULL; tp->tx_buffers[entry].mapping = @@ -219,7 +219,7 @@ /* Put the setup frame on the Tx list. */ if (entry == TX_RING_SIZE-1) tx_flags |= DESC_RING_WRAP; /* Wrap ring. */ -@@ -1264,19 +1295,22 @@ out: +@@ -1263,19 +1294,22 @@ out: netdev_dbg(dev, "MWI config cacheline=%d, csr0=%08x\n", cache, csr0); } @@ -243,7 +243,7 @@ static const struct net_device_ops tulip_netdev_ops = { .ndo_open = tulip_open, -@@ -1294,6 +1328,7 @@ static const struct net_device_ops tulip +@@ -1293,6 +1327,7 @@ static const struct net_device_ops tulip #endif }; @@ -251,7 +251,7 @@ const struct pci_device_id early_486_chipsets[] = { { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82424) }, { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_496) }, -@@ -1471,6 +1506,8 @@ static int tulip_init_one(struct pci_dev +@@ -1470,6 +1505,8 @@ static int tulip_init_one(struct pci_dev } } tp->pdev = pdev; @@ -260,7 +260,7 @@ tp->base_addr = ioaddr; tp->revision = pdev->revision; tp->csr0 = csr0; -@@ -1801,6 +1838,7 @@ err_out_free_netdev: +@@ -1800,6 +1837,7 @@ err_out_free_netdev: } @@ -268,7 +268,7 @@ /* set the registers according to the given wolopts */ static void tulip_set_wolopts (struct pci_dev *pdev, u32 wolopts) { -@@ -1829,6 +1867,7 @@ static void tulip_set_wolopts (struct pc +@@ -1828,6 +1866,7 @@ static void tulip_set_wolopts (struct pc iowrite32(tmp, ioaddr + CSR13); } } @@ -276,7 +276,7 @@ #ifdef CONFIG_PM -@@ -1943,6 +1982,7 @@ static void tulip_remove_one(struct pci_ +@@ -1942,6 +1981,7 @@ static void tulip_remove_one(struct pci_ /* pci_power_off (pdev, -1); */ } @@ -284,7 +284,7 @@ #ifdef CONFIG_NET_POLL_CONTROLLER /* -@@ -1964,7 +2004,8 @@ static void poll_tulip (struct net_devic +@@ -1963,7 +2003,8 @@ static void poll_tulip (struct net_devic } #endif @@ -294,7 +294,7 @@ .name = DRV_NAME, .id_table = tulip_pci_tbl, .probe = tulip_init_one, -@@ -1974,10 +2015,12 @@ static struct pci_driver tulip_driver = +@@ -1973,10 +2014,12 @@ static struct pci_driver tulip_driver = .resume = tulip_resume, #endif /* CONFIG_PM */ }; @@ -307,7 +307,7 @@ #ifdef MODULE pr_info("%s", version); #endif -@@ -1987,13 +2030,18 @@ static int __init tulip_init (void) +@@ -1992,13 +2035,18 @@ static int __init tulip_init (void) tulip_max_interrupt_work = max_interrupt_work; /* probe for and init boards */ diff --git a/target/linux/adm8668/patches-3.18/005-tulip_platform.patch b/target/linux/adm8668/patches-3.18/005-tulip_platform.patch index bddc572c66..184a5d0a70 100644 --- a/target/linux/adm8668/patches-3.18/005-tulip_platform.patch +++ b/target/linux/adm8668/patches-3.18/005-tulip_platform.patch @@ -26,7 +26,7 @@ #include #include #include -@@ -204,6 +206,9 @@ struct tulip_chip_table tulip_tbl[] = { +@@ -203,6 +205,9 @@ struct tulip_chip_table tulip_tbl[] = { { "Conexant LANfinity", 256, 0x0001ebef, HAS_MII | HAS_ACPI, tulip_timer, tulip_media_task }, @@ -36,7 +36,7 @@ }; -@@ -377,6 +382,11 @@ static void tulip_up(struct net_device * +@@ -376,6 +381,11 @@ static void tulip_up(struct net_device * sizeof(tp->setup_frame), PCI_DMA_TODEVICE); #endif @@ -48,7 +48,7 @@ tp->tx_buffers[tp->cur_tx].skb = NULL; tp->tx_buffers[tp->cur_tx].mapping = mapping; -@@ -396,6 +406,7 @@ static void tulip_up(struct net_device * +@@ -395,6 +405,7 @@ static void tulip_up(struct net_device * i = 0; if (tp->mtable == NULL) goto media_picked; @@ -56,7 +56,7 @@ if (dev->if_port) { int looking_for = tulip_media_cap[dev->if_port] & MediaIsMII ? 11 : (dev->if_port == 12 ? 0 : dev->if_port); -@@ -489,6 +500,10 @@ media_picked: +@@ -488,6 +499,10 @@ media_picked: iowrite32(ioread32(ioaddr + 0x88) | 1, ioaddr + 0x88); dev->if_port = tp->mii_cnt ? 11 : 0; tp->csr6 = 0x00040000; @@ -67,7 +67,7 @@ } else if (tp->chip_id == AX88140) { tp->csr6 = tp->mii_cnt ? 0x00040100 : 0x00000100; } else -@@ -660,6 +675,10 @@ static void tulip_init_ring(struct net_d +@@ -659,6 +674,10 @@ static void tulip_init_ring(struct net_d mapping = pci_map_single(tp->pdev, skb->data, PKT_BUF_SZ, PCI_DMA_FROMDEVICE); #endif @@ -78,7 +78,7 @@ tp->rx_buffers[i].mapping = mapping; tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */ tp->rx_ring[i].buffer1 = cpu_to_le32(mapping); -@@ -696,6 +715,11 @@ tulip_start_xmit(struct sk_buff *skb, st +@@ -695,6 +714,11 @@ tulip_start_xmit(struct sk_buff *skb, st mapping = pci_map_single(tp->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); #endif @@ -90,7 +90,7 @@ tp->tx_buffers[entry].mapping = mapping; tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping); -@@ -752,6 +776,13 @@ static void tulip_clean_tx_ring(struct t +@@ -751,6 +775,13 @@ static void tulip_clean_tx_ring(struct t sizeof(tp->setup_frame), PCI_DMA_TODEVICE); #endif @@ -104,7 +104,7 @@ continue; } #ifdef CONFIG_TULIP_PCI -@@ -759,6 +790,11 @@ static void tulip_clean_tx_ring(struct t +@@ -758,6 +789,11 @@ static void tulip_clean_tx_ring(struct t tp->tx_buffers[entry].skb->len, PCI_DMA_TODEVICE); #endif @@ -116,7 +116,7 @@ /* Free the original skb. */ dev_kfree_skb_irq(tp->tx_buffers[entry].skb); -@@ -836,6 +872,10 @@ static void tulip_free_ring (struct net_ +@@ -835,6 +871,10 @@ static void tulip_free_ring (struct net_ pci_unmap_single(tp->pdev, mapping, PKT_BUF_SZ, PCI_DMA_FROMDEVICE); #endif @@ -127,7 +127,7 @@ dev_kfree_skb (skb); } } -@@ -848,6 +888,10 @@ static void tulip_free_ring (struct net_ +@@ -847,6 +887,10 @@ static void tulip_free_ring (struct net_ pci_unmap_single(tp->pdev, tp->tx_buffers[i].mapping, skb->len, PCI_DMA_TODEVICE); #endif @@ -138,7 +138,7 @@ dev_kfree_skb (skb); } tp->tx_buffers[i].skb = NULL; -@@ -902,6 +946,9 @@ static void tulip_get_drvinfo(struct net +@@ -901,6 +945,9 @@ static void tulip_get_drvinfo(struct net #ifdef CONFIG_TULIP_PCI strlcpy(info->bus_info, pci_name(np->pdev), sizeof(info->bus_info)); #endif @@ -148,7 +148,7 @@ } -@@ -917,6 +964,9 @@ static int tulip_ethtool_set_wol(struct +@@ -916,6 +963,9 @@ static int tulip_ethtool_set_wol(struct #ifdef CONFIG_TULIP_PCI device_set_wakeup_enable(tp->kdev, tp->wolinfo.wolopts); #endif @@ -158,7 +158,7 @@ return 0; } -@@ -1192,13 +1242,20 @@ static void set_rx_mode(struct net_devic +@@ -1191,13 +1241,20 @@ static void set_rx_mode(struct net_devic } @@ -180,7 +180,7 @@ /* Put the setup frame on the Tx list. */ if (entry == TX_RING_SIZE-1) tx_flags |= DESC_RING_WRAP; /* Wrap ring. */ -@@ -1218,6 +1275,9 @@ static void set_rx_mode(struct net_devic +@@ -1217,6 +1274,9 @@ static void set_rx_mode(struct net_devic spin_unlock_irqrestore(&tp->lock, flags); } @@ -190,7 +190,7 @@ iowrite32(csr6, ioaddr + CSR6); } -@@ -1984,6 +2044,126 @@ static void tulip_remove_one(struct pci_ +@@ -1983,6 +2043,126 @@ static void tulip_remove_one(struct pci_ } #endif /* CONFIG_TULIP_PCI */ @@ -317,7 +317,7 @@ #ifdef CONFIG_NET_POLL_CONTROLLER /* * Polling 'interrupt' - used by things like netconsole to send skbs -@@ -2017,6 +2197,17 @@ static struct pci_driver tulip_pci_drive +@@ -2016,6 +2196,17 @@ static struct pci_driver tulip_pci_drive }; #endif @@ -335,7 +335,7 @@ static int __init tulip_init (void) { -@@ -2033,6 +2224,9 @@ static int __init tulip_init (void) +@@ -2038,6 +2229,9 @@ static int __init tulip_init (void) #ifdef CONFIG_TULIP_PCI ret = pci_register_driver(&tulip_pci_driver); #endif @@ -345,7 +345,7 @@ return ret; } -@@ -2042,6 +2236,9 @@ static void __exit tulip_cleanup (void) +@@ -2047,6 +2241,9 @@ static void __exit tulip_cleanup (void) #ifdef CONFIG_TULIP_PCI pci_unregister_driver (&tulip_pci_driver); #endif diff --git a/target/linux/ar7/patches-3.18/500-serial_kludge.patch b/target/linux/ar7/patches-3.18/500-serial_kludge.patch index 08bd6a6f2d..fc725309a8 100644 --- a/target/linux/ar7/patches-3.18/500-serial_kludge.patch +++ b/target/linux/ar7/patches-3.18/500-serial_kludge.patch @@ -14,7 +14,7 @@ }; /* Uart divisor latch read */ -@@ -3174,7 +3181,11 @@ static void serial8250_console_putchar(s +@@ -3168,7 +3175,11 @@ static void serial8250_console_putchar(s { struct uart_8250_port *up = up_to_u8250p(port); diff --git a/target/linux/ar7/patches-3.18/950-cpmac_titan.patch b/target/linux/ar7/patches-3.18/950-cpmac_titan.patch index f1d432cc4c..3cabae067a 100644 --- a/target/linux/ar7/patches-3.18/950-cpmac_titan.patch +++ b/target/linux/ar7/patches-3.18/950-cpmac_titan.patch @@ -1,6 +1,6 @@ --- a/drivers/net/ethernet/ti/cpmac.c +++ b/drivers/net/ethernet/ti/cpmac.c -@@ -1146,6 +1146,8 @@ static int cpmac_probe(struct platform_d +@@ -1147,6 +1147,8 @@ static int cpmac_probe(struct platform_d goto out; } @@ -9,7 +9,7 @@ dev->irq = platform_get_irq_byname(pdev, "irq"); dev->netdev_ops = &cpmac_netdev_ops; -@@ -1227,7 +1229,7 @@ int cpmac_init(void) +@@ -1228,7 +1230,7 @@ int cpmac_init(void) cpmac_mii->reset = cpmac_mdio_reset; cpmac_mii->irq = mii_irqs; @@ -18,8 +18,8 @@ if (!cpmac_mii->priv) { pr_err("Can't ioremap mdio registers\n"); -@@ -1238,10 +1240,16 @@ int cpmac_init(void) - #warning FIXME: unhardcode gpio&reset bits +@@ -1239,10 +1241,16 @@ int cpmac_init(void) + /* FIXME: unhardcode gpio&reset bits */ ar7_gpio_disable(26); ar7_gpio_disable(27); - ar7_device_reset(AR7_RESET_BIT_CPMAC_LO); @@ -37,7 +37,7 @@ cpmac_mii->reset(cpmac_mii); for (i = 0; i < 300; i++) { -@@ -1258,7 +1266,11 @@ int cpmac_init(void) +@@ -1259,7 +1267,11 @@ int cpmac_init(void) mask = 0; } diff --git a/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch index bf03545e43..8da26fd2ea 100644 --- a/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch +++ b/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch @@ -210,7 +210,7 @@ #include #include #include -@@ -837,10 +838,10 @@ static void tcp_v6_send_response(struct +@@ -844,10 +845,10 @@ static void tcp_v6_send_response(struct topt = (__be32 *)(t1 + 1); if (tsecr) { @@ -237,7 +237,7 @@ */ --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c -@@ -386,7 +386,7 @@ int ipv6_recv_error(struct sock *sk, str +@@ -390,7 +390,7 @@ int ipv6_recv_error(struct sock *sk, str ipv6_iface_scope_id(&sin->sin6_addr, IP6CB(skb)->iif); } else { @@ -246,7 +246,7 @@ &sin->sin6_addr); sin->sin6_scope_id = 0; } -@@ -720,12 +720,12 @@ int ip6_datagram_send_ctl(struct net *ne +@@ -724,12 +724,12 @@ int ip6_datagram_send_ctl(struct net *ne } if (fl6->flowlabel&IPV6_FLOWINFO_MASK) { @@ -263,16 +263,7 @@ case IPV6_2292HOPOPTS: --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c -@@ -394,7 +394,7 @@ static void ip6gre_err(struct sk_buff *s - - t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr, - flags & GRE_KEY ? -- *(((__be32 *)p) + (grehlen / 4) - 1) : 0, -+ net_hdr_word(((__be32 *)p) + (grehlen / 4) - 1) : 0, - p[1]); - if (t == NULL) - return; -@@ -476,11 +476,11 @@ static int ip6gre_rcv(struct sk_buff *sk +@@ -479,11 +479,11 @@ static int ip6gre_rcv(struct sk_buff *sk offset += 4; } if (flags&GRE_KEY) { @@ -286,7 +277,7 @@ offset += 4; } } -@@ -745,7 +745,7 @@ static netdev_tx_t ip6gre_xmit2(struct s +@@ -748,7 +748,7 @@ static netdev_tx_t ip6gre_xmit2(struct s if (tunnel->parms.o_flags&GRE_SEQ) { ++tunnel->o_seqno; @@ -295,7 +286,7 @@ ptr--; } if (tunnel->parms.o_flags&GRE_KEY) { -@@ -841,7 +841,7 @@ static inline int ip6gre_xmit_ipv6(struc +@@ -844,7 +844,7 @@ static inline int ip6gre_xmit_ipv6(struc dsfield = ipv6_get_dsfield(ipv6h); if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS) @@ -306,7 +297,7 @@ if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK) --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c -@@ -1291,7 +1291,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str +@@ -1301,7 +1301,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str dsfield = ipv6_get_dsfield(ipv6h); if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS) @@ -615,7 +606,7 @@ goto next_ht; --- a/net/ipv6/ip6_offload.c +++ b/net/ipv6/ip6_offload.c -@@ -221,7 +221,7 @@ static struct sk_buff **ipv6_gro_receive +@@ -224,7 +224,7 @@ static struct sk_buff **ipv6_gro_receive continue; iph2 = (struct ipv6hdr *)(p->data + off); @@ -626,7 +617,7 @@ * XXX skbs on the gro_list have all been parsed and pulled --- a/include/net/addrconf.h +++ b/include/net/addrconf.h -@@ -43,7 +43,7 @@ struct prefix_info { +@@ -45,7 +45,7 @@ struct prefix_info { __be32 reserved2; struct in6_addr prefix; @@ -840,7 +831,7 @@ --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c -@@ -3683,14 +3683,16 @@ static bool tcp_parse_aligned_timestamp( +@@ -3682,14 +3682,16 @@ static bool tcp_parse_aligned_timestamp( { const __be32 *ptr = (const __be32 *)(th + 1); diff --git a/target/linux/bcm53xx/patches-3.18/003-mtd-spi-nor-from-3.19.patch b/target/linux/bcm53xx/patches-3.18/003-mtd-spi-nor-from-3.19.patch index e7e84433ca..6bd1811399 100644 --- a/target/linux/bcm53xx/patches-3.18/003-mtd-spi-nor-from-3.19.patch +++ b/target/linux/bcm53xx/patches-3.18/003-mtd-spi-nor-from-3.19.patch @@ -496,7 +496,7 @@ return 1; ret = read_sr(nor); -@@ -880,11 +896,11 @@ static int spansion_quad_enable(struct s +@@ -887,11 +903,11 @@ static int spansion_quad_enable(struct s return 0; } @@ -510,7 +510,7 @@ case CFI_MFR_MACRONIX: status = macronix_quad_enable(nor); if (status) { -@@ -910,11 +926,6 @@ static int spi_nor_check(struct spi_nor +@@ -917,11 +933,6 @@ static int spi_nor_check(struct spi_nor return -EINVAL; } @@ -522,7 +522,7 @@ return 0; } -@@ -932,16 +943,24 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -939,16 +950,24 @@ int spi_nor_scan(struct spi_nor *nor, co if (ret) return ret; @@ -551,7 +551,7 @@ if (IS_ERR(jid)) { return PTR_ERR(jid); } else if (jid != id) { -@@ -966,10 +985,10 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -973,10 +992,10 @@ int spi_nor_scan(struct spi_nor *nor, co * up with the software protection bits set */ @@ -566,7 +566,7 @@ write_enable(nor); write_sr(nor, 0); } -@@ -984,7 +1003,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -991,7 +1010,7 @@ int spi_nor_scan(struct spi_nor *nor, co mtd->_read = spi_nor_read; /* nor protection support for STmicro chips */ @@ -575,7 +575,7 @@ mtd->_lock = spi_nor_lock; mtd->_unlock = spi_nor_unlock; } -@@ -995,9 +1014,8 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -1002,9 +1021,8 @@ int spi_nor_scan(struct spi_nor *nor, co else mtd->_write = spi_nor_write; @@ -587,7 +587,7 @@ #ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS /* prefer "small sector" erase if possible */ -@@ -1038,7 +1056,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -1045,7 +1063,7 @@ int spi_nor_scan(struct spi_nor *nor, co /* Quad/Dual-read mode takes precedence over fast/normal */ if (mode == SPI_NOR_QUAD && info->flags & SPI_NOR_QUAD_READ) { @@ -596,7 +596,7 @@ if (ret) { dev_err(dev, "quad mode not supported\n"); return ret; -@@ -1074,7 +1092,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -1081,7 +1099,7 @@ int spi_nor_scan(struct spi_nor *nor, co else if (mtd->size > 0x1000000) { /* enable 4-byte addressing if the device exceeds 16MiB */ nor->addr_width = 4; @@ -605,7 +605,7 @@ /* Dedicated 4-byte command set */ switch (nor->flash_read) { case SPI_NOR_QUAD: -@@ -1095,7 +1113,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -1102,7 +1120,7 @@ int spi_nor_scan(struct spi_nor *nor, co nor->erase_opcode = SPINOR_OP_SE_4B; mtd->erasesize = info->sector_size; } else diff --git a/target/linux/bcm53xx/patches-3.18/004-mtd-spi-nor-from-3.20.patch b/target/linux/bcm53xx/patches-3.18/004-mtd-spi-nor-from-3.20.patch index 1238785e47..3172e990ca 100644 --- a/target/linux/bcm53xx/patches-3.18/004-mtd-spi-nor-from-3.20.patch +++ b/target/linux/bcm53xx/patches-3.18/004-mtd-spi-nor-from-3.20.patch @@ -23,7 +23,7 @@ /* PMC */ { "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) }, -@@ -896,6 +896,45 @@ static int spansion_quad_enable(struct s +@@ -903,6 +903,45 @@ static int spansion_quad_enable(struct s return 0; } @@ -69,7 +69,7 @@ static int set_quad_mode(struct spi_nor *nor, struct flash_info *info) { int status; -@@ -908,6 +947,13 @@ static int set_quad_mode(struct spi_nor +@@ -915,6 +954,13 @@ static int set_quad_mode(struct spi_nor return -EINVAL; } return status; diff --git a/target/linux/brcm2708/patches-3.18/0012-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch b/target/linux/brcm2708/patches-3.18/0012-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch index 2edcd35cd4..90d6c6e004 100644 --- a/target/linux/brcm2708/patches-3.18/0012-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch +++ b/target/linux/brcm2708/patches-3.18/0012-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch @@ -22,7 +22,7 @@ Signed-off-by: popcornmix --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig -@@ -581,6 +581,8 @@ config DEVPORT +@@ -583,6 +583,8 @@ config DEVPORT source "drivers/s390/char/Kconfig" diff --git a/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch b/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch index 316f80eb87..8e5a74b8d0 100644 --- a/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch +++ b/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch @@ -10,7 +10,7 @@ Hub overcurrent messages are more serious than "debug". Increase loglevel. --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -4932,7 +4932,7 @@ static void port_event(struct usb_hub *h +@@ -4933,7 +4933,7 @@ static void port_event(struct usb_hub *h if (portchange & USB_PORT_STAT_C_OVERCURRENT) { u16 status = 0, unused; diff --git a/target/linux/brcm2708/patches-3.18/0063-bcm2708-Allow-option-card-devices-to-be-configured-v.patch b/target/linux/brcm2708/patches-3.18/0063-bcm2708-Allow-option-card-devices-to-be-configured-v.patch index c986c840fb..4e0a191fa8 100644 --- a/target/linux/brcm2708/patches-3.18/0063-bcm2708-Allow-option-card-devices-to-be-configured-v.patch +++ b/target/linux/brcm2708/patches-3.18/0063-bcm2708-Allow-option-card-devices-to-be-configured-v.patch @@ -369,7 +369,7 @@ support code with each new device. mmc_of_parse(mmc); --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c -@@ -1086,8 +1086,12 @@ static struct debugfs_blob_wrapper flat_ +@@ -1092,8 +1092,12 @@ static struct debugfs_blob_wrapper flat_ static int __init of_flat_dt_debugfs_export_fdt(void) { diff --git a/target/linux/brcm2708/patches-3.18/0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch b/target/linux/brcm2708/patches-3.18/0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch index 7f61b338db..17d6b927db 100644 --- a/target/linux/brcm2708/patches-3.18/0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch +++ b/target/linux/brcm2708/patches-3.18/0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch @@ -9,7 +9,7 @@ Subject: [PATCH 65/99] fdt: Add support for the CONFIG_CMDLINE_EXTEND option --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c -@@ -901,22 +901,38 @@ int __init early_init_dt_scan_chosen(uns +@@ -907,22 +907,38 @@ int __init early_init_dt_scan_chosen(uns /* Retrieve command line */ p = of_get_flat_dt_prop(node, "bootargs", &l); diff --git a/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch b/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch index 4fb8a87d4c..9ffc4ca31c 100644 --- a/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch +++ b/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch @@ -8,7 +8,7 @@ /* * Some really old flashes (like AT45DB*) had smaller erasesize-s, but -@@ -334,12 +335,23 @@ static int bcm47xxpart_parse(struct mtd_ +@@ -332,12 +333,23 @@ static int bcm47xxpart_parse(struct mtd_ if (buf[0] == NVRAM_HEADER) { bcm47xxpart_add_part(&parts[curr_part++], "nvram", master->size - blocksize, 0); diff --git a/target/linux/cns3xxx/patches-3.18/025-smp_support.patch b/target/linux/cns3xxx/patches-3.18/025-smp_support.patch index 418c065a97..0f1f5aa630 100644 --- a/target/linux/cns3xxx/patches-3.18/025-smp_support.patch +++ b/target/linux/cns3xxx/patches-3.18/025-smp_support.patch @@ -1,8 +1,8 @@ --- a/arch/arm/mach-cns3xxx/Makefile +++ b/arch/arm/mach-cns3xxx/Makefile -@@ -5,3 +5,5 @@ cns3xxx-y += core.o pm.o - cns3xxx-$(CONFIG_ATAGS) += devices.o +@@ -6,3 +6,5 @@ cns3xxx-$(CONFIG_ATAGS) += devices.o cns3xxx-$(CONFIG_PCI) += pcie.o + CFLAGS_pcie.o += -Wframe-larger-than=1536 # override default 1024, this is safe here cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o +cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o +cns3xxx-$(CONFIG_HOTPLUG_CPU) += hotplug.o diff --git a/target/linux/cns3xxx/patches-3.18/040-fiq_support.patch b/target/linux/cns3xxx/patches-3.18/040-fiq_support.patch index 4f09a36f14..acfe338312 100644 --- a/target/linux/cns3xxx/patches-3.18/040-fiq_support.patch +++ b/target/linux/cns3xxx/patches-3.18/040-fiq_support.patch @@ -10,9 +10,9 @@ --- a/arch/arm/mach-cns3xxx/Makefile +++ b/arch/arm/mach-cns3xxx/Makefile -@@ -5,5 +5,5 @@ cns3xxx-y += core.o pm.o - cns3xxx-$(CONFIG_ATAGS) += devices.o +@@ -6,5 +6,5 @@ cns3xxx-$(CONFIG_ATAGS) += devices.o cns3xxx-$(CONFIG_PCI) += pcie.o + CFLAGS_pcie.o += -Wframe-larger-than=1536 # override default 1024, this is safe here cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o -cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o +cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o cns3xxx_fiq.o diff --git a/target/linux/cns3xxx/patches-3.18/095-gpio_support.patch b/target/linux/cns3xxx/patches-3.18/095-gpio_support.patch index a6ce177493..b95a0897fa 100644 --- a/target/linux/cns3xxx/patches-3.18/095-gpio_support.patch +++ b/target/linux/cns3xxx/patches-3.18/095-gpio_support.patch @@ -32,7 +32,7 @@ +cns3xxx-y += core.o pm.o gpio.o cns3xxx-$(CONFIG_ATAGS) += devices.o cns3xxx-$(CONFIG_PCI) += pcie.o - cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o + CFLAGS_pcie.o += -Wframe-larger-than=1536 # override default 1024, this is safe here --- a/arch/arm/mach-cns3xxx/cns3xxx.h +++ b/arch/arm/mach-cns3xxx/cns3xxx.h @@ -68,8 +68,10 @@ diff --git a/target/linux/cns3xxx/patches-3.18/100-laguna_support.patch b/target/linux/cns3xxx/patches-3.18/100-laguna_support.patch index 3c0bba4316..622ba5453b 100644 --- a/target/linux/cns3xxx/patches-3.18/100-laguna_support.patch +++ b/target/linux/cns3xxx/patches-3.18/100-laguna_support.patch @@ -15,7 +15,7 @@ endif --- a/arch/arm/mach-cns3xxx/Makefile +++ b/arch/arm/mach-cns3xxx/Makefile -@@ -7,3 +7,5 @@ cns3xxx-$(CONFIG_PCI) += pcie.o +@@ -8,3 +8,5 @@ CFLAGS_pcie.o += -Wframe-larger-than= cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o cns3xxx_fiq.o cns3xxx-$(CONFIG_HOTPLUG_CPU) += hotplug.o diff --git a/target/linux/generic/patches-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch b/target/linux/generic/patches-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch index 59180c2084..f3dfa901f1 100644 --- a/target/linux/generic/patches-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch +++ b/target/linux/generic/patches-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch @@ -83,7 +83,7 @@ offset + trx->offset[i], 0); i++; -@@ -205,7 +235,8 @@ static int bcm47xxpart_parse(struct mtd_ +@@ -203,7 +233,8 @@ static int bcm47xxpart_parse(struct mtd_ } /* Squashfs on devices not using TRX */ diff --git a/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch b/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch index aa45860e93..0e7e4f8b12 100644 --- a/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch +++ b/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch @@ -13,7 +13,7 @@ Signed-off-by: David S. Miller --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1515,6 +1515,8 @@ static int bgmac_probe(struct bcma_devic +@@ -1521,6 +1521,8 @@ static int bgmac_probe(struct bcma_devic if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM) bgmac_warn(bgmac, "Support for ADMtek ethernet switch not implemented\n"); @@ -22,7 +22,7 @@ Signed-off-by: David S. Miller err = bgmac_mii_register(bgmac); if (err) { bgmac_err(bgmac, "Cannot register MDIO\n"); -@@ -1529,8 +1531,6 @@ static int bgmac_probe(struct bcma_devic +@@ -1535,8 +1537,6 @@ static int bgmac_probe(struct bcma_devic netif_carrier_off(net_dev); @@ -31,7 +31,7 @@ Signed-off-by: David S. Miller return 0; err_mii_unregister: -@@ -1549,9 +1549,9 @@ static void bgmac_remove(struct bcma_dev +@@ -1555,9 +1555,9 @@ static void bgmac_remove(struct bcma_dev { struct bgmac *bgmac = bcma_get_drvdata(core); diff --git a/target/linux/generic/patches-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch b/target/linux/generic/patches-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch deleted file mode 100644 index 121d2f4122..0000000000 --- a/target/linux/generic/patches-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 21697336d46b71dd031f29e426dda0b1e7f06cc0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Wed, 11 Feb 2015 18:06:34 +0100 -Subject: [PATCH] bgmac: fix device initialization on Northstar SoCs (condition - typo) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -On Northstar (Broadcom's ARM architecture) we need to manually enable -all cores. Code for that is already in place, but the condition for it -was wrong. - -Signed-off-by: Rafał Miłecki -Signed-off-by: David S. Miller ---- - drivers/net/ethernet/broadcom/bgmac.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - ---- a/drivers/net/ethernet/broadcom/bgmac.c -+++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1412,6 +1412,7 @@ static void bgmac_mii_unregister(struct - /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipattach */ - static int bgmac_probe(struct bcma_device *core) - { -+ struct bcma_chipinfo *ci = &core->bus->chipinfo; - struct net_device *net_dev; - struct bgmac *bgmac; - struct ssb_sprom *sprom = &core->bus->sprom; -@@ -1474,8 +1475,8 @@ static int bgmac_probe(struct bcma_devic - bgmac_chip_reset(bgmac); - - /* For Northstar, we have to take all GMAC core out of reset */ -- if (core->id.id == BCMA_CHIP_ID_BCM4707 || -- core->id.id == BCMA_CHIP_ID_BCM53018) { -+ if (ci->id == BCMA_CHIP_ID_BCM4707 || -+ ci->id == BCMA_CHIP_ID_BCM53018) { - struct bcma_device *ns_core; - int ns_gmac; - diff --git a/target/linux/generic/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch b/target/linux/generic/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch index 5cb21a565a..27fa7321e9 100644 --- a/target/linux/generic/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch +++ b/target/linux/generic/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch @@ -254,7 +254,7 @@ Signed-off-by: Felix Fietkau } } -@@ -1583,6 +1657,10 @@ static int bgmac_probe(struct bcma_devic +@@ -1588,6 +1662,10 @@ static int bgmac_probe(struct bcma_devic goto err_dma_free; } diff --git a/target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch b/target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch index d093e89dea..2582538966 100644 --- a/target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch +++ b/target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch @@ -44,7 +44,7 @@ Signed-off-by: David S. Miller pr_err("Unsupported core_unit %d\n", core->core_unit); return -ENOTSUPP; } -@@ -1588,8 +1597,17 @@ static int bgmac_probe(struct bcma_devic +@@ -1593,8 +1602,17 @@ static int bgmac_probe(struct bcma_devic } bgmac->cmn = core->bus->drv_gmac_cmn.core; diff --git a/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch b/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch index 63010c1450..3ab953f1c4 100644 --- a/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch +++ b/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch @@ -94,7 +94,7 @@ Signed-off-by: David S. Miller struct net_device *net_dev; struct bgmac *bgmac; struct ssb_sprom *sprom = &core->bus->sprom; -@@ -1626,8 +1629,7 @@ static int bgmac_probe(struct bcma_devic +@@ -1631,8 +1634,7 @@ static int bgmac_probe(struct bcma_devic bgmac_chip_reset(bgmac); /* For Northstar, we have to take all GMAC core out of reset */ diff --git a/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch b/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch index 8dac985a72..b3194f04e0 100644 --- a/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch +++ b/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch @@ -19,9 +19,9 @@ Signed-off-by: David S. Miller --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1578,6 +1578,11 @@ static int bgmac_probe(struct bcma_devic - dev_warn(&core->dev, "Using random MAC: %pM\n", mac); - } +@@ -1583,6 +1583,11 @@ static int bgmac_probe(struct bcma_devic + */ + bcma_core_enable(core, 0); + /* This (reset &) enable is not preset in specs or reference driver but + * Broadcom does it in arch PCI code when enabling fake PCI device. diff --git a/target/linux/generic/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch b/target/linux/generic/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch index fe55323a50..29bec8387d 100644 --- a/target/linux/generic/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch +++ b/target/linux/generic/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch @@ -172,7 +172,7 @@ Signed-off-by: David S. Miller u32 portid; net = sock_net(skb->sk); -@@ -971,9 +976,7 @@ static void nl_fib_input(struct sk_buff +@@ -972,9 +977,7 @@ static void nl_fib_input(struct sk_buff nlh = nlmsg_hdr(skb); frn = (struct fib_result_nl *) nlmsg_data(nlh); diff --git a/target/linux/generic/patches-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch b/target/linux/generic/patches-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch index d3da41e918..9f39e5ba5e 100644 --- a/target/linux/generic/patches-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch +++ b/target/linux/generic/patches-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch @@ -44,7 +44,7 @@ Closes 20532 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c -@@ -597,20 +597,22 @@ int ip6_fragment(struct sk_buff *skb, in +@@ -600,20 +600,22 @@ int ip6_fragment(struct sk_buff *skb, in } mtu -= hlen + sizeof(struct frag_hdr); @@ -69,7 +69,7 @@ Closes 20532 goto slow_path_clean; /* Partially cloned skb? */ -@@ -627,8 +629,6 @@ int ip6_fragment(struct sk_buff *skb, in +@@ -630,8 +632,6 @@ int ip6_fragment(struct sk_buff *skb, in err = 0; offset = 0; @@ -78,7 +78,7 @@ Closes 20532 /* BUILD HEADER */ *prevhdr = NEXTHDR_FRAGMENT; -@@ -636,8 +636,11 @@ int ip6_fragment(struct sk_buff *skb, in +@@ -639,8 +639,11 @@ int ip6_fragment(struct sk_buff *skb, in if (!tmp_hdr) { IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)), IPSTATS_MIB_FRAGFAILS); @@ -91,7 +91,7 @@ Closes 20532 __skb_pull(skb, hlen); fh = (struct frag_hdr *)__skb_push(skb, sizeof(struct frag_hdr)); -@@ -735,7 +738,6 @@ slow_path: +@@ -738,7 +741,6 @@ slow_path: */ *prevhdr = NEXTHDR_FRAGMENT; diff --git a/target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch b/target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch deleted file mode 100644 index 761cff316d..0000000000 --- a/target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Sat, 5 Dec 2015 02:03:32 +0100 -Subject: [PATCH] mtd: bcm47xxpart: limit scanned flash area on BCM47XX (MIPS) - only -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We allowed using bcm47xxpart on BCM5301X arch with commit: -9e3afa5f5c7 ("mtd: bcm47xxpart: allow enabling on ARCH_BCM_5301X") - -BCM5301X devices may contain some partitions in higher memory, e.g. -Netgear R8000 has board_data at 0x2600000. To detect them we should -use size limit on MIPS only. - -Signed-off-by: Rafał Miłecki ---- - drivers/mtd/bcm47xxpart.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/drivers/mtd/bcm47xxpart.c -+++ b/drivers/mtd/bcm47xxpart.c -@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_ - /* Parse block by block looking for magics */ - for (offset = 0; offset <= master->size - blocksize; - offset += blocksize) { -- /* Nothing more in higher memory */ -- if (offset >= 0x2000000) -+ /* Nothing more in higher memory on BCM47XX (MIPS) */ -+ if (config_enabled(CONFIG_BCM47XX) && offset >= 0x2000000) - break; - - if (curr_part >= BCM47XXPART_MAX_PARTS) { diff --git a/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch b/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch index 9073f795e2..926de5fef7 100644 --- a/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch +++ b/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch @@ -58,7 +58,7 @@ Signed-off-by: Rafał Miłecki continue; } -@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_ +@@ -252,10 +256,11 @@ static int bcm47xxpart_parse(struct mtd_ } /* Read middle of the block */ @@ -74,7 +74,7 @@ Signed-off-by: Rafał Miłecki continue; } -@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_ +@@ -275,10 +280,11 @@ static int bcm47xxpart_parse(struct mtd_ } offset = master->size - possible_nvram_sizes[i]; diff --git a/target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch b/target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch deleted file mode 100644 index 5a3dc06c14..0000000000 --- a/target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch +++ /dev/null @@ -1,35 +0,0 @@ -From a95f03e51471dbdbafd3391991d867ac2358ed02 Mon Sep 17 00:00:00 2001 -From: Jonas Gorski -Date: Sun, 23 Aug 2015 14:23:29 +0200 -Subject: [PATCH] usb: ehci-orion: fix probe for !GENERIC_PHY - -Commit d445913ce0ab7f ("usb: ehci-orion: add optional PHY support") -added support for optional phys, but devm_phy_optional_get returns --ENOSYS if GENERIC_PHY is not enabled. - -This causes probe failures, even when there are no phys specified: - -[ 1.443365] orion-ehci f1058000.usb: init f1058000.usb fail, -38 -[ 1.449403] orion-ehci: probe of f1058000.usb failed with error -38 - -Similar to dwc3, treat -ENOSYS as no phy. - -Fixes: d445913ce0ab7f ("usb: ehci-orion: add optional PHY support") - -Signed-off-by: Jonas Gorski ---- - drivers/usb/host/ehci-orion.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/drivers/usb/host/ehci-orion.c -+++ b/drivers/usb/host/ehci-orion.c -@@ -226,7 +226,8 @@ static int ehci_orion_drv_probe(struct p - priv->phy = devm_phy_optional_get(&pdev->dev, "usb"); - if (IS_ERR(priv->phy)) { - err = PTR_ERR(priv->phy); -- goto err_phy_get; -+ if (err != -ENOSYS) -+ goto err_phy_get; - } else { - err = phy_init(priv->phy); - if (err) diff --git a/target/linux/generic/patches-3.18/201-extra_optimization.patch b/target/linux/generic/patches-3.18/201-extra_optimization.patch index 2e2ed66161..5a2396cfa3 100644 --- a/target/linux/generic/patches-3.18/201-extra_optimization.patch +++ b/target/linux/generic/patches-3.18/201-extra_optimization.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -614,9 +614,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-P +@@ -618,9 +618,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-P KBUILD_AFLAGS += $(call cc-option,-fno-PIE) ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE diff --git a/target/linux/generic/patches-3.18/204-module_strip.patch b/target/linux/generic/patches-3.18/204-module_strip.patch index 7c4006913f..1b361d178e 100644 --- a/target/linux/generic/patches-3.18/204-module_strip.patch +++ b/target/linux/generic/patches-3.18/204-module_strip.patch @@ -32,8 +32,8 @@ Signed-off-by: Felix Fietkau +#if defined(MODULE) && !defined(CONFIG_MODULE_STRIPPED) /* Creates an alias so file2alias.c can find device table. */ #define MODULE_DEVICE_TABLE(type, name) \ - extern const struct type##_device_id __mod_##type##__##name##_device_table \ -@@ -159,7 +160,9 @@ void trim_init_extable(struct module *m) + extern const typeof(name) __mod_##type##__##name##_device_table \ +@@ -159,7 +160,9 @@ extern const typeof(name) __mod_##type## */ #if defined(MODULE) || !defined(CONFIG_SYSFS) @@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau #else #define MODULE_VERSION(_version) \ static struct module_version_attribute ___modver_attr = { \ -@@ -181,7 +184,7 @@ void trim_init_extable(struct module *m) +@@ -181,7 +184,7 @@ extern const typeof(name) __mod_##type## /* Optional firmware file (or files) needed by the module * format is simply firmware file name. Multiple firmware * files require multiple MODULE_FIRMWARE() specifiers */ @@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau set_license(mod, get_modinfo(info, "license")); --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c -@@ -1726,7 +1726,9 @@ static void read_symbols(char *modname) +@@ -1758,7 +1758,9 @@ static void read_symbols(char *modname) symname = remove_dot(info.strtab + sym->st_name); handle_modversions(mod, &info, sym, symname); @@ -137,7 +137,7 @@ Signed-off-by: Felix Fietkau } if (!is_vmlinux(modname) || (is_vmlinux(modname) && vmlinux_section_warnings)) -@@ -1870,7 +1872,9 @@ static void add_header(struct buffer *b, +@@ -1902,7 +1904,9 @@ static void add_header(struct buffer *b, buf_printf(b, "#include \n"); buf_printf(b, "#include \n"); buf_printf(b, "\n"); @@ -147,7 +147,7 @@ Signed-off-by: Felix Fietkau buf_printf(b, "\n"); buf_printf(b, "__visible struct module __this_module\n"); buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n"); -@@ -1887,16 +1891,20 @@ static void add_header(struct buffer *b, +@@ -1919,16 +1923,20 @@ static void add_header(struct buffer *b, static void add_intree_flag(struct buffer *b, int is_intree) { @@ -168,7 +168,7 @@ Signed-off-by: Felix Fietkau } /** -@@ -1989,11 +1997,13 @@ static void add_depends(struct buffer *b +@@ -2021,11 +2029,13 @@ static void add_depends(struct buffer *b static void add_srcversion(struct buffer *b, struct module *mod) { @@ -182,7 +182,7 @@ Signed-off-by: Felix Fietkau } static void write_if_changed(struct buffer *b, const char *fname) -@@ -2224,7 +2234,9 @@ int main(int argc, char **argv) +@@ -2256,7 +2266,9 @@ int main(int argc, char **argv) add_staging_flag(&buf, mod->name); err |= add_versions(&buf, mod); add_depends(&buf, mod, modules); diff --git a/target/linux/generic/patches-3.18/462-m25p80-mx-disable-software-protection.patch b/target/linux/generic/patches-3.18/462-m25p80-mx-disable-software-protection.patch index fef483a67d..f27220a281 100644 --- a/target/linux/generic/patches-3.18/462-m25p80-mx-disable-software-protection.patch +++ b/target/linux/generic/patches-3.18/462-m25p80-mx-disable-software-protection.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -963,6 +963,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -970,6 +970,7 @@ int spi_nor_scan(struct spi_nor *nor, co if (JEDEC_MFR(info->jedec_id) == CFI_MFR_ATMEL || JEDEC_MFR(info->jedec_id) == CFI_MFR_INTEL || diff --git a/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch b/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch index 00b0b7cadd..78d677d94f 100644 --- a/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch +++ b/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch @@ -16,7 +16,7 @@ config CRYPTO_ANSI_CPRNG --- a/crypto/Makefile +++ b/crypto/Makefile -@@ -89,6 +89,7 @@ obj-$(CONFIG_CRYPTO_AUTHENC) += authenc. +@@ -91,6 +91,7 @@ obj-$(CONFIG_CRYPTO_AUTHENC) += authenc. obj-$(CONFIG_CRYPTO_LZO) += lzo.o obj-$(CONFIG_CRYPTO_LZ4) += lz4.o obj-$(CONFIG_CRYPTO_LZ4HC) += lz4hc.o diff --git a/target/linux/generic/patches-3.18/630-packet_socket_type.patch b/target/linux/generic/patches-3.18/630-packet_socket_type.patch index 68a42362dd..32fb5869b8 100644 --- a/target/linux/generic/patches-3.18/630-packet_socket_type.patch +++ b/target/linux/generic/patches-3.18/630-packet_socket_type.patch @@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau #define PACKET_FANOUT_LB 1 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c -@@ -1530,6 +1530,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1529,6 +1529,7 @@ static int packet_rcv_spkt(struct sk_buf { struct sock *sk; struct sockaddr_pkt *spkt; @@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau /* * When we registered the protocol we saved the socket in the data -@@ -1537,6 +1538,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1536,6 +1537,7 @@ static int packet_rcv_spkt(struct sk_buf */ sk = pt->af_packet_priv; @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau /* * Yank back the headers [hope the device set this -@@ -1549,7 +1551,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1548,7 +1550,7 @@ static int packet_rcv_spkt(struct sk_buf * so that this procedure is noop. */ @@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau goto out; if (!net_eq(dev_net(dev), sock_net(sk))) -@@ -1748,12 +1750,12 @@ static int packet_rcv(struct sk_buff *sk +@@ -1747,12 +1749,12 @@ static int packet_rcv(struct sk_buff *sk int skb_len = skb->len; unsigned int snaplen, res; @@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -1873,12 +1875,12 @@ static int tpacket_rcv(struct sk_buff *s +@@ -1872,12 +1874,12 @@ static int tpacket_rcv(struct sk_buff *s BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32); BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48); @@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -2828,6 +2830,7 @@ static int packet_create(struct net *net +@@ -2831,6 +2833,7 @@ static int packet_create(struct net *net spin_lock_init(&po->bind_lock); mutex_init(&po->pg_vec_lock); po->prot_hook.func = packet_rcv; @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau if (sock->type == SOCK_PACKET) po->prot_hook.func = packet_rcv_spkt; -@@ -3409,6 +3412,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3425,6 +3428,16 @@ packet_setsockopt(struct socket *sock, i po->xmit = val ? packet_direct_xmit : dev_queue_xmit; return 0; } @@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau default: return -ENOPROTOOPT; } -@@ -3460,6 +3473,13 @@ static int packet_getsockopt(struct sock +@@ -3476,6 +3489,13 @@ static int packet_getsockopt(struct sock case PACKET_VNET_HDR: val = po->has_vnet_hdr; break; diff --git a/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch b/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch index 5181806497..49f0285c5f 100644 --- a/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch +++ b/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch @@ -1,6 +1,6 @@ --- a/include/net/addrconf.h +++ b/include/net/addrconf.h -@@ -88,6 +88,12 @@ int ipv6_rcv_saddr_equal(const struct so +@@ -90,6 +90,12 @@ int ipv6_rcv_saddr_equal(const struct so void addrconf_join_solict(struct net_device *dev, const struct in6_addr *addr); void addrconf_leave_solict(struct inet6_dev *idev, const struct in6_addr *addr); @@ -52,7 +52,7 @@ int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr, u32 banned_flags) -@@ -5469,6 +5468,9 @@ int __init addrconf_init(void) +@@ -5473,6 +5472,9 @@ int __init addrconf_init(void) ipv6_addr_label_rtnl_register(); @@ -62,7 +62,7 @@ return 0; errout: rtnl_af_unregister(&inet6_ops); -@@ -5488,6 +5490,9 @@ void addrconf_cleanup(void) +@@ -5492,6 +5494,9 @@ void addrconf_cleanup(void) struct net_device *dev; int i; diff --git a/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch b/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch index b38b87b48f..94fd139c22 100644 --- a/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch +++ b/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch @@ -1,15 +1,12 @@ --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c -@@ -1721,27 +1721,7 @@ void netlink_detachskb(struct sock *sk, +@@ -1107,24 +1107,7 @@ void netlink_detachskb(struct sock *sk, static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation) { - int delta; - WARN_ON(skb->sk != NULL); -- if (netlink_skb_is_mmaped(skb)) -- return skb; -- - delta = skb->end - skb->tail; - if (is_vmalloc_addr(skb->head) || delta * 2 < skb->truesize) - return skb; diff --git a/target/linux/generic/patches-3.18/655-increase_skb_pad.patch b/target/linux/generic/patches-3.18/655-increase_skb_pad.patch index 19344cca3f..96f81e9aa7 100644 --- a/target/linux/generic/patches-3.18/655-increase_skb_pad.patch +++ b/target/linux/generic/patches-3.18/655-increase_skb_pad.patch @@ -1,6 +1,6 @@ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2023,7 +2023,7 @@ static inline int pskb_network_may_pull( +@@ -2024,7 +2024,7 @@ static inline int pskb_network_may_pull( * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) */ #ifndef NET_SKB_PAD diff --git a/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch b/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch index b326a8b727..0fde9f6e62 100644 --- a/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch +++ b/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch @@ -14,7 +14,7 @@ when needed. --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2068,6 +2068,24 @@ static inline void pskb_trim_unique(stru +@@ -2069,6 +2069,24 @@ static inline void pskb_trim_unique(stru BUG_ON(err); } diff --git a/target/linux/generic/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch index 000665f047..43bdbe456d 100644 --- a/target/linux/generic/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch +++ b/target/linux/generic/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch @@ -145,7 +145,7 @@ Signed-off-by: Steven Barth if (dev == ip6n->fb_tnl_dev) RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL); else -@@ -771,6 +786,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t, +@@ -781,6 +796,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t, } EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl); @@ -254,7 +254,7 @@ Signed-off-by: Steven Barth /** * ip6_tnl_rcv - decapsulate IPv6 packet and retransmit it locally * @skb: received socket buffer -@@ -815,6 +932,26 @@ static int ip6_tnl_rcv(struct sk_buff *s +@@ -825,6 +942,26 @@ static int ip6_tnl_rcv(struct sk_buff *s skb_reset_network_header(skb); skb->protocol = htons(protocol); memset(skb->cb, 0, sizeof(struct inet6_skb_parm)); @@ -281,7 +281,7 @@ Signed-off-by: Steven Barth __skb_tunnel_rx(skb, t->dev, t->net); -@@ -1076,6 +1213,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str +@@ -1086,6 +1223,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str __u8 dsfield; __u32 mtu; int err; @@ -289,7 +289,7 @@ Signed-off-by: Steven Barth if ((t->parms.proto != IPPROTO_IPIP && t->parms.proto != 0) || !ip6_tnl_xmit_ctl(t)) -@@ -1095,6 +1233,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str +@@ -1105,6 +1243,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK) fl6.flowi6_mark = skb->mark; @@ -308,7 +308,7 @@ Signed-off-by: Steven Barth err = ip6_tnl_xmit2(skb, dev, dsfield, &fl6, encap_limit, &mtu); if (err != 0) { /* XXX: send ICMP error even if DF is not set. */ -@@ -1263,6 +1413,14 @@ ip6_tnl_change(struct ip6_tnl *t, const +@@ -1273,6 +1423,14 @@ ip6_tnl_change(struct ip6_tnl *t, const t->parms.flowinfo = p->flowinfo; t->parms.link = p->link; t->parms.proto = p->proto; @@ -323,7 +323,7 @@ Signed-off-by: Steven Barth ip6_tnl_dst_reset(t); ip6_tnl_link_config(t); return 0; -@@ -1293,6 +1451,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_ +@@ -1303,6 +1461,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_ p->flowinfo = u->flowinfo; p->link = u->link; p->proto = u->proto; @@ -331,7 +331,7 @@ Signed-off-by: Steven Barth memcpy(p->name, u->name, sizeof(u->name)); } -@@ -1568,6 +1727,15 @@ static int ip6_tnl_validate(struct nlatt +@@ -1578,6 +1737,15 @@ static int ip6_tnl_validate(struct nlatt return 0; } @@ -347,7 +347,7 @@ Signed-off-by: Steven Barth static void ip6_tnl_netlink_parms(struct nlattr *data[], struct __ip6_tnl_parm *parms) { -@@ -1601,6 +1769,46 @@ static void ip6_tnl_netlink_parms(struct +@@ -1611,6 +1779,46 @@ static void ip6_tnl_netlink_parms(struct if (data[IFLA_IPTUN_PROTO]) parms->proto = nla_get_u8(data[IFLA_IPTUN_PROTO]); @@ -394,7 +394,7 @@ Signed-off-by: Steven Barth } static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev, -@@ -1653,6 +1861,12 @@ static void ip6_tnl_dellink(struct net_d +@@ -1663,6 +1871,12 @@ static void ip6_tnl_dellink(struct net_d static size_t ip6_tnl_get_size(const struct net_device *dev) { @@ -407,7 +407,7 @@ Signed-off-by: Steven Barth return /* IFLA_IPTUN_LINK */ nla_total_size(4) + -@@ -1670,6 +1884,24 @@ static size_t ip6_tnl_get_size(const str +@@ -1680,6 +1894,24 @@ static size_t ip6_tnl_get_size(const str nla_total_size(4) + /* IFLA_IPTUN_PROTO */ nla_total_size(1) + @@ -432,7 +432,7 @@ Signed-off-by: Steven Barth 0; } -@@ -1677,6 +1909,9 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -1687,6 +1919,9 @@ static int ip6_tnl_fill_info(struct sk_b { struct ip6_tnl *tunnel = netdev_priv(dev); struct __ip6_tnl_parm *parm = &tunnel->parms; @@ -442,7 +442,7 @@ Signed-off-by: Steven Barth if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) || nla_put(skb, IFLA_IPTUN_LOCAL, sizeof(struct in6_addr), -@@ -1687,8 +1922,27 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -1697,8 +1932,27 @@ static int ip6_tnl_fill_info(struct sk_b nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) || nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) || nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) || @@ -471,7 +471,7 @@ Signed-off-by: Steven Barth return 0; nla_put_failure: -@@ -1704,6 +1958,7 @@ static const struct nla_policy ip6_tnl_p +@@ -1714,6 +1968,7 @@ static const struct nla_policy ip6_tnl_p [IFLA_IPTUN_FLOWINFO] = { .type = NLA_U32 }, [IFLA_IPTUN_FLAGS] = { .type = NLA_U32 }, [IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, diff --git a/target/linux/generic/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch b/target/linux/generic/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch index 0c951069c2..de8745cdc3 100644 --- a/target/linux/generic/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch +++ b/target/linux/generic/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch @@ -26,7 +26,7 @@ Signed-off-by: David S. Miller --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c -@@ -903,21 +903,45 @@ static int ip6_dst_lookup_tail(struct so +@@ -906,21 +906,45 @@ static int ip6_dst_lookup_tail(struct so #endif int err; @@ -81,7 +81,7 @@ Signed-off-by: David S. Miller * Here if the dst entry we've looked up --- a/net/ipv6/route.c +++ b/net/ipv6/route.c -@@ -2182,9 +2182,10 @@ int ip6_route_get_saddr(struct net *net, +@@ -2184,9 +2184,10 @@ int ip6_route_get_saddr(struct net *net, unsigned int prefs, struct in6_addr *saddr) { diff --git a/target/linux/generic/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index 1bf9dc99dc..f999d44df0 100644 --- a/target/linux/generic/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski case RTN_THROW: default: rt->dst.error = (cfg->fc_type == RTN_THROW) ? -EAGAIN -@@ -2139,6 +2161,17 @@ static int ip6_pkt_prohibit_out(struct s +@@ -2141,6 +2163,17 @@ static int ip6_pkt_prohibit_out(struct s return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); } @@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -2363,7 +2396,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -2365,7 +2398,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -2565,6 +2599,9 @@ static int rt6_fill_node(struct net *net +@@ -2567,6 +2601,9 @@ static int rt6_fill_node(struct net *net case -EACCES: rtm->rtm_type = RTN_PROHIBIT; break; @@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski case -EAGAIN: rtm->rtm_type = RTN_THROW; break; -@@ -2818,6 +2855,8 @@ static int ip6_route_dev_notify(struct n +@@ -2825,6 +2862,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -3034,6 +3073,17 @@ static int __net_init ip6_route_net_init +@@ -3047,6 +3086,17 @@ static int __net_init ip6_route_net_init net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); @@ -220,7 +220,7 @@ Signed-off-by: Jonas Gorski #endif net->ipv6.sysctl.flush_delay = 0; -@@ -3052,6 +3102,8 @@ out: +@@ -3065,6 +3115,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -3069,6 +3121,7 @@ static void __net_exit ip6_route_net_exi +@@ -3082,6 +3134,7 @@ static void __net_exit ip6_route_net_exi #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_blk_hole_entry); @@ -237,7 +237,7 @@ Signed-off-by: Jonas Gorski #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); } -@@ -3165,6 +3218,9 @@ int __init ip6_route_init(void) +@@ -3155,6 +3208,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); @@ -245,5 +245,5 @@ Signed-off-by: Jonas Gorski + init_net.ipv6.ip6_policy_failed_entry->rt6i_idev = + in6_dev_get(init_net.loopback_dev); #endif - ret = fib6_init(); - if (ret) + } + diff --git a/target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index 21199fe6c7..6b02b3ca9c 100644 --- a/target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4002,6 +4002,9 @@ static enum gro_result dev_gro_receive(s +@@ -4006,6 +4006,9 @@ static enum gro_result dev_gro_receive(s enum gro_result ret; int grow; @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau if (!(skb->dev->features & NETIF_F_GRO)) goto normal; -@@ -5067,6 +5070,48 @@ static void __netdev_adjacent_dev_unlink +@@ -5077,6 +5080,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *private) -@@ -5127,6 +5172,7 @@ static int __netdev_upper_dev_link(struc +@@ -5137,6 +5182,7 @@ static int __netdev_upper_dev_link(struc goto rollback_lower_mesh; } @@ -84,15 +84,15 @@ Signed-off-by: Felix Fietkau call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev); return 0; -@@ -5244,6 +5290,7 @@ void netdev_upper_dev_unlink(struct net_ +@@ -5254,6 +5300,7 @@ void netdev_upper_dev_unlink(struct net_ list_for_each_entry(i, &upper_dev->all_adj_list.upper, list) - __netdev_adjacent_dev_unlink(dev, i->dev); + __netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr); + netdev_update_addr_mask(dev); call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev); } EXPORT_SYMBOL(netdev_upper_dev_unlink); -@@ -5763,6 +5810,7 @@ int dev_set_mac_address(struct net_devic +@@ -5773,6 +5820,7 @@ int dev_set_mac_address(struct net_devic if (err) return err; dev->addr_assign_type = NET_ADDR_SET; @@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau #endif --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -597,7 +597,8 @@ struct sk_buff { +@@ -598,7 +598,8 @@ struct sk_buff { #endif __u8 ipvs_property:1; __u8 inner_protocol_type:1; diff --git a/target/linux/generic/patches-3.18/701-phy_extension.patch b/target/linux/generic/patches-3.18/701-phy_extension.patch index 5c63dbec62..fa4542b88b 100644 --- a/target/linux/generic/patches-3.18/701-phy_extension.patch +++ b/target/linux/generic/patches-3.18/701-phy_extension.patch @@ -53,7 +53,7 @@ * @phydev: the phy_device struct --- a/include/linux/phy.h +++ b/include/linux/phy.h -@@ -748,6 +748,7 @@ void phy_start_machine(struct phy_device +@@ -752,6 +752,7 @@ void phy_start_machine(struct phy_device void phy_stop_machine(struct phy_device *phydev); int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd); int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd); diff --git a/target/linux/generic/patches-3.18/704-phy-no-genphy-soft-reset.patch b/target/linux/generic/patches-3.18/704-phy-no-genphy-soft-reset.patch index 0350f9efe4..0c78ee1be5 100644 --- a/target/linux/generic/patches-3.18/704-phy-no-genphy-soft-reset.patch +++ b/target/linux/generic/patches-3.18/704-phy-no-genphy-soft-reset.patch @@ -9,16 +9,7 @@ { /* Do nothing for now */ return 0; -@@ -1347,7 +1347,7 @@ static struct phy_driver genphy_driver[] - .phy_id = 0xffffffff, - .phy_id_mask = 0xffffffff, - .name = "Generic PHY", -- .soft_reset = genphy_soft_reset, -+ .soft_reset = no_soft_reset, - .config_init = genphy_config_init, - .features = PHY_GBIT_FEATURES | SUPPORTED_MII | - SUPPORTED_AUI | SUPPORTED_FIBRE | -@@ -1362,7 +1362,7 @@ static struct phy_driver genphy_driver[] +@@ -1364,7 +1364,7 @@ static struct phy_driver genphy_driver[] .phy_id = 0xffffffff, .phy_id_mask = 0xffffffff, .name = "Generic 10G PHY", diff --git a/target/linux/generic/patches-3.18/710-phy-add-mdio_register_board_info.patch b/target/linux/generic/patches-3.18/710-phy-add-mdio_register_board_info.patch index cc3cb2445d..424c63e311 100644 --- a/target/linux/generic/patches-3.18/710-phy-add-mdio_register_board_info.patch +++ b/target/linux/generic/patches-3.18/710-phy-add-mdio_register_board_info.patch @@ -46,7 +46,7 @@ phy_device_free(phydev); --- a/include/linux/phy.h +++ b/include/linux/phy.h -@@ -785,4 +785,22 @@ int __init mdio_bus_init(void); +@@ -789,4 +789,22 @@ int __init mdio_bus_init(void); void mdio_bus_exit(void); extern struct bus_type mdio_bus_type; diff --git a/target/linux/generic/patches-3.18/721-phy_packets.patch b/target/linux/generic/patches-3.18/721-phy_packets.patch index 99811c6242..7235ab355f 100644 --- a/target/linux/generic/patches-3.18/721-phy_packets.patch +++ b/target/linux/generic/patches-3.18/721-phy_packets.patch @@ -41,7 +41,7 @@ */ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2054,6 +2054,10 @@ static inline int pskb_trim(struct sk_bu +@@ -2055,6 +2055,10 @@ static inline int pskb_trim(struct sk_bu return (len < skb->len) ? __pskb_trim(skb, len) : 0; } @@ -52,7 +52,7 @@ /** * pskb_trim_unique - remove end from a paged unique (not cloned) buffer * @skb: buffer to alter -@@ -2180,16 +2184,6 @@ static inline struct sk_buff *dev_alloc_ +@@ -2181,16 +2185,6 @@ static inline struct sk_buff *dev_alloc_ } @@ -86,7 +86,7 @@ help --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -2623,10 +2623,20 @@ static int xmit_one(struct sk_buff *skb, +@@ -2626,10 +2626,20 @@ static int xmit_one(struct sk_buff *skb, if (!list_empty(&ptype_all)) dev_queue_xmit_nit(skb, dev); @@ -121,7 +121,7 @@ #include #include -@@ -469,6 +470,22 @@ struct sk_buff *__netdev_alloc_skb(struc +@@ -471,6 +472,22 @@ struct sk_buff *__netdev_alloc_skb(struc } EXPORT_SYMBOL(__netdev_alloc_skb); diff --git a/target/linux/generic/patches-3.18/750-hostap_txpower.patch b/target/linux/generic/patches-3.18/750-hostap_txpower.patch index 768c80f73b..9a8cb7fb5c 100644 --- a/target/linux/generic/patches-3.18/750-hostap_txpower.patch +++ b/target/linux/generic/patches-3.18/750-hostap_txpower.patch @@ -64,7 +64,7 @@ #endif /* HOSTAP_H */ --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c -@@ -928,6 +928,7 @@ static int hfa384x_set_rid(struct net_de +@@ -933,6 +933,7 @@ static int hfa384x_set_rid(struct net_de prism2_hw_reset(dev); } diff --git a/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch b/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch index 9f39c8000e..758bc3a852 100644 --- a/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch +++ b/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch @@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens /************************************************** * BCMA bus ops **************************************************/ -@@ -1688,6 +1700,14 @@ static int bgmac_probe(struct bcma_devic +@@ -1693,6 +1705,14 @@ static int bgmac_probe(struct bcma_devic net_dev->hw_features = net_dev->features; net_dev->vlan_features = net_dev->features; @@ -45,7 +45,7 @@ Signed-off-by: Hauke Mehrtens err = register_netdev(bgmac->net_dev); if (err) { bgmac_err(bgmac, "Cannot register net device\n"); -@@ -1714,6 +1734,10 @@ static void bgmac_remove(struct bcma_dev +@@ -1719,6 +1739,10 @@ static void bgmac_remove(struct bcma_dev { struct bgmac *bgmac = bcma_get_drvdata(core); diff --git a/target/linux/generic/patches-3.18/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/patches-3.18/811-pci_disable_usb_common_quirks.patch index a7bf0bb9fa..ddc8549634 100644 --- a/target/linux/generic/patches-3.18/811-pci_disable_usb_common_quirks.patch +++ b/target/linux/generic/patches-3.18/811-pci_disable_usb_common_quirks.patch @@ -1,7 +1,7 @@ --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c -@@ -97,6 +97,8 @@ struct amd_chipset_type { +@@ -98,6 +98,8 @@ struct amd_chipset_type { u8 rev; }; @@ -10,7 +10,7 @@ static struct amd_chipset_info { struct pci_dev *nb_dev; struct pci_dev *smbus_dev; -@@ -454,6 +456,10 @@ void usb_amd_dev_put(void) +@@ -462,6 +464,10 @@ void usb_amd_dev_put(void) } EXPORT_SYMBOL_GPL(usb_amd_dev_put); @@ -21,7 +21,7 @@ /* * Make sure the controller is completely inactive, unable to * generate interrupts or do DMA. -@@ -533,8 +539,17 @@ reset_needed: +@@ -541,8 +547,17 @@ reset_needed: uhci_reset_hc(pdev, base); return 1; } @@ -39,7 +39,7 @@ static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask) { u16 cmd; -@@ -1095,3 +1110,4 @@ static void quirk_usb_early_handoff(stru +@@ -1103,3 +1118,4 @@ static void quirk_usb_early_handoff(stru } DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff); diff --git a/target/linux/generic/patches-3.18/902-debloat_proc.patch b/target/linux/generic/patches-3.18/902-debloat_proc.patch index 79cecf90d4..596a84f8dd 100644 --- a/target/linux/generic/patches-3.18/902-debloat_proc.patch +++ b/target/linux/generic/patches-3.18/902-debloat_proc.patch @@ -173,7 +173,7 @@ goto err; --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -2933,6 +2933,8 @@ static __net_initdata struct pernet_oper +@@ -2939,6 +2939,8 @@ static __net_initdata struct pernet_oper static int __init proto_init(void) { diff --git a/target/linux/generic/patches-3.18/940-ocf_kbuild_integration.patch b/target/linux/generic/patches-3.18/940-ocf_kbuild_integration.patch index 240f15eb61..7cf94153e8 100644 --- a/target/linux/generic/patches-3.18/940-ocf_kbuild_integration.patch +++ b/target/linux/generic/patches-3.18/940-ocf_kbuild_integration.patch @@ -9,7 +9,7 @@ + --- a/crypto/Makefile +++ b/crypto/Makefile -@@ -101,6 +101,8 @@ obj-$(CONFIG_CRYPTO_USER_API) += af_alg. +@@ -103,6 +103,8 @@ obj-$(CONFIG_CRYPTO_USER_API) += af_alg. obj-$(CONFIG_CRYPTO_USER_API_HASH) += algif_hash.o obj-$(CONFIG_CRYPTO_USER_API_SKCIPHER) += algif_skcipher.o diff --git a/target/linux/generic/patches-3.18/997-device_tree_cmdline.patch b/target/linux/generic/patches-3.18/997-device_tree_cmdline.patch index dd725b01b1..61fe71b784 100644 --- a/target/linux/generic/patches-3.18/997-device_tree_cmdline.patch +++ b/target/linux/generic/patches-3.18/997-device_tree_cmdline.patch @@ -1,6 +1,6 @@ --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c -@@ -903,6 +903,9 @@ int __init early_init_dt_scan_chosen(uns +@@ -909,6 +909,9 @@ int __init early_init_dt_scan_chosen(uns p = of_get_flat_dt_prop(node, "bootargs", &l); if (p != NULL && l > 0) strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); diff --git a/target/linux/imx6/patches-3.18/201-pci_imx6_ventana_fixup-for-IRQ-mismapping.patch b/target/linux/imx6/patches-3.18/201-pci_imx6_ventana_fixup-for-IRQ-mismapping.patch index 4e75086c9e..e81cb31138 100644 --- a/target/linux/imx6/patches-3.18/201-pci_imx6_ventana_fixup-for-IRQ-mismapping.patch +++ b/target/linux/imx6/patches-3.18/201-pci_imx6_ventana_fixup-for-IRQ-mismapping.patch @@ -71,7 +71,7 @@ Date: Thu Feb 27 00:59:53 2014 -0800 return ret; --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h -@@ -827,6 +827,7 @@ +@@ -828,6 +828,7 @@ #define PCI_DEVICE_ID_TI_XX12 0x8039 #define PCI_DEVICE_ID_TI_XX12_FM 0x803b #define PCI_DEVICE_ID_TI_XIO2000A 0x8231 diff --git a/target/linux/imx6/patches-3.18/202-net-igb-add-i210-i211-support-for-phy-read-write.patch b/target/linux/imx6/patches-3.18/202-net-igb-add-i210-i211-support-for-phy-read-write.patch index fb4b722569..9de5dfe44a 100644 --- a/target/linux/imx6/patches-3.18/202-net-igb-add-i210-i211-support-for-phy-read-write.patch +++ b/target/linux/imx6/patches-3.18/202-net-igb-add-i210-i211-support-for-phy-read-write.patch @@ -10,7 +10,7 @@ Date: Thu May 15 00:12:26 2014 -0700 --- a/drivers/net/ethernet/intel/igb/e1000_phy.c +++ b/drivers/net/ethernet/intel/igb/e1000_phy.c -@@ -135,7 +135,7 @@ out: +@@ -139,7 +139,7 @@ out: s32 igb_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data) { struct e1000_phy_info *phy = &hw->phy; @@ -19,7 +19,7 @@ Date: Thu May 15 00:12:26 2014 -0700 s32 ret_val = 0; if (offset > MAX_PHY_REG_ADDRESS) { -@@ -148,11 +148,25 @@ s32 igb_read_phy_reg_mdic(struct e1000_h +@@ -152,11 +152,25 @@ s32 igb_read_phy_reg_mdic(struct e1000_h * Control register. The MAC will take care of interfacing with the * PHY to retrieve the desired data. */ @@ -48,7 +48,7 @@ Date: Thu May 15 00:12:26 2014 -0700 /* Poll the ready bit to see if the MDI read completed * Increasing the time out as testing showed failures with -@@ -177,6 +191,18 @@ s32 igb_read_phy_reg_mdic(struct e1000_h +@@ -181,6 +195,18 @@ s32 igb_read_phy_reg_mdic(struct e1000_h *data = (u16) mdic; out: @@ -67,7 +67,7 @@ Date: Thu May 15 00:12:26 2014 -0700 return ret_val; } -@@ -191,7 +217,7 @@ out: +@@ -195,7 +221,7 @@ out: s32 igb_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data) { struct e1000_phy_info *phy = &hw->phy; @@ -76,7 +76,7 @@ Date: Thu May 15 00:12:26 2014 -0700 s32 ret_val = 0; if (offset > MAX_PHY_REG_ADDRESS) { -@@ -204,12 +230,27 @@ s32 igb_write_phy_reg_mdic(struct e1000_ +@@ -208,12 +234,27 @@ s32 igb_write_phy_reg_mdic(struct e1000_ * Control register. The MAC will take care of interfacing with the * PHY to retrieve the desired data. */ @@ -108,7 +108,7 @@ Date: Thu May 15 00:12:26 2014 -0700 /* Poll the ready bit to see if the MDI read completed * Increasing the time out as testing showed failures with -@@ -233,6 +274,18 @@ s32 igb_write_phy_reg_mdic(struct e1000_ +@@ -237,6 +278,18 @@ s32 igb_write_phy_reg_mdic(struct e1000_ } out: diff --git a/target/linux/imx6/patches-3.18/203-net-igb-add-phy-read-write-functions-that-accept-phy.patch b/target/linux/imx6/patches-3.18/203-net-igb-add-phy-read-write-functions-that-accept-phy.patch index 7869b1cf53..405d4ec37f 100644 --- a/target/linux/imx6/patches-3.18/203-net-igb-add-phy-read-write-functions-that-accept-phy.patch +++ b/target/linux/imx6/patches-3.18/203-net-igb-add-phy-read-write-functions-that-accept-phy.patch @@ -36,7 +36,7 @@ Signed-off-by: Tim Harvey --- a/drivers/net/ethernet/intel/igb/e1000_phy.c +++ b/drivers/net/ethernet/intel/igb/e1000_phy.c -@@ -132,9 +132,8 @@ out: +@@ -136,9 +136,8 @@ out: * Reads the MDI control regsiter in the PHY at offset and stores the * information read to data. **/ @@ -47,7 +47,7 @@ Signed-off-by: Tim Harvey u32 i, mdicnfg, mdic = 0; s32 ret_val = 0; -@@ -153,14 +152,14 @@ s32 igb_read_phy_reg_mdic(struct e1000_h +@@ -157,14 +156,14 @@ s32 igb_read_phy_reg_mdic(struct e1000_h case e1000_i211: mdicnfg = rd32(E1000_MDICNFG); mdicnfg &= ~(E1000_MDICNFG_PHY_MASK); @@ -64,7 +64,7 @@ Signed-off-by: Tim Harvey (E1000_MDIC_OP_READ)); break; } -@@ -214,9 +213,8 @@ out: +@@ -218,9 +217,8 @@ out: * * Writes data to MDI control register in the PHY at offset. **/ @@ -75,7 +75,7 @@ Signed-off-by: Tim Harvey u32 i, mdicnfg, mdic = 0; s32 ret_val = 0; -@@ -235,7 +233,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_ +@@ -239,7 +237,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_ case e1000_i211: mdicnfg = rd32(E1000_MDICNFG); mdicnfg &= ~(E1000_MDICNFG_PHY_MASK); @@ -84,7 +84,7 @@ Signed-off-by: Tim Harvey wr32(E1000_MDICNFG, mdicnfg); mdic = (((u32)data) | (offset << E1000_MDIC_REG_SHIFT) | -@@ -244,7 +242,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_ +@@ -248,7 +246,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_ default: mdic = (((u32)data) | (offset << E1000_MDIC_REG_SHIFT) | @@ -93,7 +93,7 @@ Signed-off-by: Tim Harvey (E1000_MDIC_OP_WRITE)); break; } -@@ -464,7 +462,7 @@ s32 igb_read_phy_reg_igp(struct e1000_hw +@@ -468,7 +466,7 @@ s32 igb_read_phy_reg_igp(struct e1000_hw goto out; if (offset > MAX_PHY_MULTI_PAGE_REG) { @@ -102,7 +102,7 @@ Signed-off-by: Tim Harvey IGP01E1000_PHY_PAGE_SELECT, (u16)offset); if (ret_val) { -@@ -473,8 +471,8 @@ s32 igb_read_phy_reg_igp(struct e1000_hw +@@ -477,8 +475,8 @@ s32 igb_read_phy_reg_igp(struct e1000_hw } } @@ -113,7 +113,7 @@ Signed-off-by: Tim Harvey hw->phy.ops.release(hw); -@@ -503,7 +501,7 @@ s32 igb_write_phy_reg_igp(struct e1000_h +@@ -507,7 +505,7 @@ s32 igb_write_phy_reg_igp(struct e1000_h goto out; if (offset > MAX_PHY_MULTI_PAGE_REG) { @@ -122,7 +122,7 @@ Signed-off-by: Tim Harvey IGP01E1000_PHY_PAGE_SELECT, (u16)offset); if (ret_val) { -@@ -512,8 +510,8 @@ s32 igb_write_phy_reg_igp(struct e1000_h +@@ -516,8 +514,8 @@ s32 igb_write_phy_reg_igp(struct e1000_h } } @@ -133,7 +133,7 @@ Signed-off-by: Tim Harvey hw->phy.ops.release(hw); -@@ -2464,8 +2462,9 @@ out: +@@ -2468,8 +2466,9 @@ out: } /** @@ -144,7 +144,7 @@ Signed-off-by: Tim Harvey * @offset: lower half is register offset to write to * upper half is page to use. * @data: data to write at register offset -@@ -2473,7 +2472,7 @@ out: +@@ -2477,7 +2476,7 @@ out: * Acquires semaphore, if necessary, then writes the data to PHY register * at the offset. Release any acquired semaphores before exiting. **/ @@ -153,7 +153,7 @@ Signed-off-by: Tim Harvey { s32 ret_val; u16 page = offset >> GS40G_PAGE_SHIFT; -@@ -2483,10 +2482,10 @@ s32 igb_write_phy_reg_gs40g(struct e1000 +@@ -2487,10 +2486,10 @@ s32 igb_write_phy_reg_gs40g(struct e1000 if (ret_val) return ret_val; @@ -166,7 +166,7 @@ Signed-off-by: Tim Harvey release: hw->phy.ops.release(hw); -@@ -2494,8 +2493,24 @@ release: +@@ -2498,8 +2497,24 @@ release: } /** @@ -192,7 +192,7 @@ Signed-off-by: Tim Harvey * @offset: lower half is register offset to read to * upper half is page to use. * @data: data to read at register offset -@@ -2503,7 +2518,7 @@ release: +@@ -2507,7 +2522,7 @@ release: * Acquires semaphore, if necessary, then reads the data in the PHY register * at the offset. Release any acquired semaphores before exiting. **/ @@ -201,7 +201,7 @@ Signed-off-by: Tim Harvey { s32 ret_val; u16 page = offset >> GS40G_PAGE_SHIFT; -@@ -2513,10 +2528,10 @@ s32 igb_read_phy_reg_gs40g(struct e1000_ +@@ -2517,10 +2532,10 @@ s32 igb_read_phy_reg_gs40g(struct e1000_ if (ret_val) return ret_val; @@ -214,7 +214,7 @@ Signed-off-by: Tim Harvey release: hw->phy.ops.release(hw); -@@ -2524,6 +2539,21 @@ release: +@@ -2528,6 +2543,21 @@ release: } /** diff --git a/target/linux/ixp4xx/patches-3.18/600-skb_avoid_dmabounce.patch b/target/linux/ixp4xx/patches-3.18/600-skb_avoid_dmabounce.patch index 65b1c1f51e..f495fbf2bf 100644 --- a/target/linux/ixp4xx/patches-3.18/600-skb_avoid_dmabounce.patch +++ b/target/linux/ixp4xx/patches-3.18/600-skb_avoid_dmabounce.patch @@ -1,6 +1,6 @@ --- a/net/core/skbuff.c +++ b/net/core/skbuff.c -@@ -210,6 +210,9 @@ struct sk_buff *__alloc_skb(unsigned int +@@ -212,6 +212,9 @@ struct sk_buff *__alloc_skb(unsigned int if (sk_memalloc_socks() && (flags & SKB_ALLOC_RX)) gfp_mask |= __GFP_MEMALLOC; @@ -10,7 +10,7 @@ /* Get the HEAD */ skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node); -@@ -1096,6 +1099,10 @@ int pskb_expand_head(struct sk_buff *skb +@@ -1098,6 +1101,10 @@ int pskb_expand_head(struct sk_buff *skb if (skb_shared(skb)) BUG(); diff --git a/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch b/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch index 4e0a51298e..f68ed54dc5 100644 --- a/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch +++ b/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch @@ -5525,7 +5525,7 @@ Signed-off-by: John Crispin unsigned long type); --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h -@@ -1050,6 +1050,12 @@ +@@ -1051,6 +1051,12 @@ #define PCI_DEVICE_ID_SGI_LITHIUM 0x1002 #define PCI_DEVICE_ID_SGI_IOC4 0x100a diff --git a/target/linux/lantiq/patches-3.18/0026-NET-multi-phy-support.patch b/target/linux/lantiq/patches-3.18/0026-NET-multi-phy-support.patch index 5943602adb..27d3bcea6c 100644 --- a/target/linux/lantiq/patches-3.18/0026-NET-multi-phy-support.patch +++ b/target/linux/lantiq/patches-3.18/0026-NET-multi-phy-support.patch @@ -11,7 +11,7 @@ Signed-off-by: John Crispin --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -838,7 +838,8 @@ void phy_state_machine(struct work_struc +@@ -841,7 +841,8 @@ void phy_state_machine(struct work_struc /* If the link is down, give up on negotiation for now */ if (!phydev->link) { phydev->state = PHY_NOLINK; @@ -21,7 +21,7 @@ Signed-off-by: John Crispin phydev->adjust_link(phydev->attached_dev); break; } -@@ -911,7 +912,8 @@ void phy_state_machine(struct work_struc +@@ -914,7 +915,8 @@ void phy_state_machine(struct work_struc netif_carrier_on(phydev->attached_dev); } else { phydev->state = PHY_NOLINK; @@ -31,7 +31,7 @@ Signed-off-by: John Crispin } phydev->adjust_link(phydev->attached_dev); -@@ -923,7 +925,8 @@ void phy_state_machine(struct work_struc +@@ -926,7 +928,8 @@ void phy_state_machine(struct work_struc case PHY_HALTED: if (phydev->link) { phydev->link = 0; diff --git a/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch b/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch index 4278669dda..303cb2704d 100644 --- a/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch +++ b/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch @@ -20,7 +20,7 @@ Subject: [PATCH 32/36] USB: fix roothub for IFXHCD choice --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -4321,7 +4321,7 @@ hub_port_init (struct usb_hub *hub, stru +@@ -4320,7 +4320,7 @@ hub_port_init (struct usb_hub *hub, stru udev->ttport = hdev->ttport; } else if (udev->speed != USB_SPEED_HIGH && hdev->speed == USB_SPEED_HIGH) { diff --git a/target/linux/mcs814x/patches-3.18/008-mcs814x_gpio.patch b/target/linux/mcs814x/patches-3.18/008-mcs814x_gpio.patch index 92c85a700f..f0944bffd3 100644 --- a/target/linux/mcs814x/patches-3.18/008-mcs814x_gpio.patch +++ b/target/linux/mcs814x/patches-3.18/008-mcs814x_gpio.patch @@ -1,6 +1,6 @@ --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig -@@ -819,6 +819,12 @@ config GPIO_MC33880 +@@ -820,6 +820,12 @@ config GPIO_MC33880 SPI driver for Freescale MC33880 high-side/low-side switch. This provides GPIO interface supporting inputs and outputs. diff --git a/target/linux/mvebu/patches-3.18/700-usb_xhci_plat_phy_support.patch b/target/linux/mvebu/patches-3.18/700-usb_xhci_plat_phy_support.patch index 7631b6c5cd..93666dbc78 100644 --- a/target/linux/mvebu/patches-3.18/700-usb_xhci_plat_phy_support.patch +++ b/target/linux/mvebu/patches-3.18/700-usb_xhci_plat_phy_support.patch @@ -37,8 +37,8 @@ put_usb3_hcd: usb_put_hcd(xhci->shared_hcd); -@@ -190,6 +206,7 @@ static int xhci_plat_remove(struct platf - struct clk *clk = xhci->clk; +@@ -192,6 +208,7 @@ static int xhci_plat_remove(struct platf + xhci->xhc_state |= XHCI_STATE_REMOVING; usb_remove_hcd(xhci->shared_hcd); + usb_phy_shutdown(hcd->usb_phy); diff --git a/target/linux/omap/patches-3.18/0334-video-da8xx-fb-adding-dt-support.patch b/target/linux/omap/patches-3.18/0334-video-da8xx-fb-adding-dt-support.patch index 265602cdca..8c1c3d4784 100644 --- a/target/linux/omap/patches-3.18/0334-video-da8xx-fb-adding-dt-support.patch +++ b/target/linux/omap/patches-3.18/0334-video-da8xx-fb-adding-dt-support.patch @@ -88,7 +88,7 @@ Signed-off-by: Darren Etheridge #include