mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Merge branch 'ipq807x' into develop
This commit is contained in:
commit
225754e1fc
67 changed files with 44 additions and 4934 deletions
|
@ -1,45 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2010-2015 OpenWrt.org
|
||||
# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||
# - Added gateway setting
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=6in4
|
||||
PKG_VERSION:=270
|
||||
PKG_RELEASE:=2
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/6in4
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
DEPENDS:=@IPV6 +kmod-sit +uclient-fetch
|
||||
TITLE:=IPv6-in-IPv4 configuration support
|
||||
MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKGARCH:=all
|
||||
endef
|
||||
|
||||
define Package/6in4/description
|
||||
Provides support for 6in4 tunnels in /etc/config/network.
|
||||
Refer to http://wiki.openwrt.org/doc/uci/network for
|
||||
configuration details.
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Package/6in4/install
|
||||
$(INSTALL_DIR) $(1)/lib/netifd/proto
|
||||
$(INSTALL_BIN) ./files/6in4.sh $(1)/lib/netifd/proto/6in4.sh
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,6in4))
|
|
@ -1,149 +0,0 @@
|
|||
#!/bin/sh
|
||||
# 6in4.sh - IPv6-in-IPv4 tunnel backend
|
||||
# Copyright (c) 2010-2015 OpenWrt.org
|
||||
|
||||
[ -n "$INCLUDE_ONLY" ] || {
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/network.sh
|
||||
. ../netifd-proto.sh
|
||||
init_proto "$@"
|
||||
}
|
||||
|
||||
proto_6in4_update() {
|
||||
sh -c '
|
||||
timeout=5
|
||||
|
||||
(while [ $((timeout--)) -gt 0 ]; do
|
||||
sleep 1
|
||||
kill -0 $$ || exit 0
|
||||
done; kill -9 $$) 2>/dev/null &
|
||||
|
||||
exec "$@"
|
||||
' "$1" "$@"
|
||||
}
|
||||
|
||||
proto_6in4_add_prefix() {
|
||||
append "$3" "$1"
|
||||
}
|
||||
|
||||
proto_6in4_setup() {
|
||||
local cfg="$1"
|
||||
local iface="$2"
|
||||
local link="6in4-$cfg"
|
||||
|
||||
local mtu ttl tos ipaddr peeraddr ip6addr ip6prefix ip6prefixes tunlink tunnelid username password updatekey gateway
|
||||
json_get_vars mtu ttl tos ipaddr peeraddr ip6addr tunlink tunnelid username password updatekey gateway
|
||||
json_for_each_item proto_6in4_add_prefix ip6prefix ip6prefixes
|
||||
|
||||
[ -z "$peeraddr" ] && {
|
||||
proto_notify_error "$cfg" "MISSING_ADDRESS"
|
||||
proto_block_restart "$cfg"
|
||||
return
|
||||
}
|
||||
|
||||
[ -n "$tunlink" ] && ( proto_add_host_dependency "$cfg" "$peeraddr" "$tunlink" )
|
||||
|
||||
[ -z "$ipaddr" ] && {
|
||||
local wanif="$tunlink"
|
||||
if [ -z "$wanif" ] && ! network_find_wan wanif; then
|
||||
proto_notify_error "$cfg" "NO_WAN_LINK"
|
||||
return
|
||||
fi
|
||||
|
||||
if ! network_get_ipaddr ipaddr "$wanif"; then
|
||||
proto_notify_error "$cfg" "NO_WAN_LINK"
|
||||
return
|
||||
fi
|
||||
}
|
||||
|
||||
proto_init_update "$link" 1
|
||||
|
||||
[ -n "$ip6addr" ] && {
|
||||
local local6="${ip6addr%%/*}"
|
||||
local mask6="${ip6addr##*/}"
|
||||
[[ "$local6" = "$mask6" ]] && mask6=
|
||||
proto_add_ipv6_address "$local6" "$mask6"
|
||||
proto_add_ipv6_route "::" 0 "" "" "" "$local6/$mask6"
|
||||
}
|
||||
|
||||
[ -n "$gateway" ] && {
|
||||
proto_add_ipv6_route "::" 0 "$gateway"
|
||||
}
|
||||
|
||||
for ip6prefix in $ip6prefixes; do
|
||||
proto_add_ipv6_prefix "$ip6prefix"
|
||||
proto_add_ipv6_route "::" 0 "" "" "" "$ip6prefix"
|
||||
done
|
||||
|
||||
proto_add_tunnel
|
||||
json_add_string mode sit
|
||||
json_add_int mtu "${mtu:-1280}"
|
||||
json_add_int ttl "${ttl:-64}"
|
||||
[ -n "$tos" ] && json_add_string tos "$tos"
|
||||
json_add_string local "$ipaddr"
|
||||
json_add_string remote "$peeraddr"
|
||||
[ -n "$tunlink" ] && json_add_string link "$tunlink"
|
||||
proto_close_tunnel
|
||||
|
||||
proto_send_update "$cfg"
|
||||
|
||||
[ -n "$tunnelid" -a -n "$username" -a \( -n "$password" -o -n "$updatekey" \) ] && {
|
||||
[ -n "$updatekey" ] && password="$updatekey"
|
||||
|
||||
local http="http"
|
||||
local urlget="uclient-fetch"
|
||||
local urlget_opts="-qO-"
|
||||
local ca_path="${SSL_CERT_DIR:-/etc/ssl/certs}"
|
||||
|
||||
[ -f /lib/libustream-ssl.so ] && http=https
|
||||
[ "$http" = "https" -a -z "$(find $ca_path -name "*.0" 2>/dev/null)" ] && {
|
||||
urlget_opts="$urlget_opts --no-check-certificate"
|
||||
}
|
||||
|
||||
local url="$http://ipv4.tunnelbroker.net/nic/update?hostname=$tunnelid"
|
||||
local try=0
|
||||
local max=3
|
||||
|
||||
(
|
||||
set -o pipefail
|
||||
while [ $((++try)) -le $max ]; do
|
||||
if proto_6in4_update $urlget $urlget_opts --user="$username" --password="$password" "$url" 2>&1 | \
|
||||
sed -e 's,^Killed$,timeout,' -e "s,^,update $try/$max: ," | \
|
||||
logger -t "$link";
|
||||
then
|
||||
logger -t "$link" "updated"
|
||||
return 0
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
logger -t "$link" "update failed"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
proto_6in4_teardown() {
|
||||
local cfg="$1"
|
||||
}
|
||||
|
||||
proto_6in4_init_config() {
|
||||
no_device=1
|
||||
available=1
|
||||
|
||||
proto_config_add_string "ipaddr"
|
||||
proto_config_add_string "ip6addr"
|
||||
proto_config_add_array "ip6prefix"
|
||||
proto_config_add_string "peeraddr"
|
||||
proto_config_add_string "tunlink"
|
||||
proto_config_add_string "tunnelid"
|
||||
proto_config_add_string "username"
|
||||
proto_config_add_string "password"
|
||||
proto_config_add_string "updatekey"
|
||||
proto_config_add_string "gateway"
|
||||
proto_config_add_int "mtu"
|
||||
proto_config_add_int "ttl"
|
||||
proto_config_add_string "tos"
|
||||
}
|
||||
|
||||
[ -n "$INCLUDE_ONLY" ] || {
|
||||
add_protocol 6in4
|
||||
}
|
185
README.md
185
README.md
|
@ -1,186 +1 @@
|
|||
# OpenWrt OpenMPTCProuter feed
|
||||
|
||||
|
||||
This is the OpenWrt OpenMPTCProuter feed containing all modified and necessary packages to build the OpenMPTCProuter image.
|
||||
|
||||
For More information, see [https://github.com/ysurac/openmptcprouter](https://github.com/ysurac/openmptcprouter) and [https://www.openmptcprouter.com](https://www.openmptcprouter.com/).
|
||||
|
||||
|
||||
## Glorytun
|
||||
*Source:* [https://github.com/angt/glorytun](https://github.com/angt/glorytun)
|
||||
|
||||
*Description:* A small, simple and secure VPN
|
||||
|
||||
|
||||
A LuCI interface was made to make it easier to use. It's used in OpenMPTCProuter to redirect ports from the VPS to the router and for UDP/ICMP traffic from the router.
|
||||
|
||||
|
||||
## Shadowsocks-libev
|
||||
*Source:* [https://github.com/shadowsocks/shadowsocks-libev](https://github.com/shadowsocks/shadowsocks-libev)
|
||||
|
||||
*Description:* A secure socks5 proxy
|
||||
|
||||
|
||||
MPTCP support is added in LuCI interface and init scripts. IPv6 support added.
|
||||
|
||||
## Shadowsocks-v2ray-plugin-bin
|
||||
*Source:* [https://github.com/shadowsocks/v2ray-plugin](https://github.com/shadowsocks/v2ray-plugin)
|
||||
|
||||
*Description:* V2ray plugin for Shadowsocks
|
||||
|
||||
Support is added in ShadowSocks LuCI interface and init scripts.
|
||||
|
||||
|
||||
## Simple-obfs
|
||||
*Source:* [https://github.com/shadowsocks/simple-obfs](https://github.com/shadowsocks/simple-obfs)
|
||||
|
||||
*Description:* A simple obfuscating tool, designed as plugin server of shadowsocks.
|
||||
|
||||
|
||||
Support is added in ShadowSocks LuCI interface and init scripts.
|
||||
|
||||
|
||||
## SpeedTestC
|
||||
*Source:* [https://github.com/mobrembski/SpeedTestC](https://github.com/mobrembski/SpeedTestC)
|
||||
|
||||
*Description:* Client for SpeedTest.net infrastructure written in pure C99 standard using only POSIX libraries.
|
||||
|
||||
Used to test speed. No LuCI interface.
|
||||
|
||||
|
||||
## Nginx
|
||||
*Source:* [https://www.nginx.org](https://www.nginx.org)
|
||||
|
||||
*Description:* nginx is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server.
|
||||
|
||||
|
||||
A LuCI interface for TCP/UDP stream is added. Used for TCP/UDP failover.
|
||||
|
||||
|
||||
## luci-proto-ipv6
|
||||
*Source:* [https://github.com/openwrt/luci](https://github.com/openwrt/luci)
|
||||
|
||||
*Description:* Luci support for DHCPv6/6in4/6to4/6rd/DS-Lite/aiccu
|
||||
|
||||
Added support to gateway set by user for 6in4. Used for IPv6 over the glorytun IPv4 VPN.
|
||||
|
||||
|
||||
## luci-omr-bypass
|
||||
*Source:* [https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-omr-bypass](https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-omr-bypass)
|
||||
|
||||
*Description:* Luci interface to bypass domains, IPs and networks with shadowsocks
|
||||
|
||||
Domains, IPs, networks and protocol (using DPI) added are bypassed when shadowsocks is used. This can be used when VPS IP is blacklisted from some sites.
|
||||
|
||||
|
||||
## omr-tracker
|
||||
*Source:* [https://github.com/Ysurac/openmptcprouter-feeds/tree/master/omr-tracker](https://github.com/Ysurac/openmptcprouter-feeds/tree/master/omr-tracker)
|
||||
|
||||
*Description:* Track connection status. This check if gateway is up then check if the connection work. If it's not working this execute scripts. This also detect if ShadowSocks is up or not.
|
||||
|
||||
This is used for OpenMPTCProuter failover.
|
||||
|
||||
|
||||
## luci-omr-tracker
|
||||
*Source:* [https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-omr-tracker](https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-omr-tracker)
|
||||
|
||||
*Description:* Luci interface to omr-tracker
|
||||
|
||||
Interface to omr-tracker.
|
||||
|
||||
|
||||
## luci-app-iperf
|
||||
*Source:* [https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-iperf](https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-iperf)
|
||||
|
||||
*Description:* Luci interface to iPerf
|
||||
|
||||
|
||||
## omr-6in4
|
||||
*Source:* [https://github.com/Ysurac/openmptcprouter-feeds/tree/master/omr-6in4](https://github.com/Ysurac/openmptcprouter-feeds/tree/master/omr-6in4)
|
||||
|
||||
*Description:* Set tunnel configuration by tracking tunnel configuration.
|
||||
|
||||
|
||||
## omr-update
|
||||
*Source:* [https://github.com/Ysurac/openmptcprouter-feeds/tree/master/omr-update](https://github.com/Ysurac/openmptcprouter-feeds/tree/master/omr-update)
|
||||
|
||||
*Description:* Update old config with new settings.
|
||||
|
||||
|
||||
## luci-app-mptcp
|
||||
*Source:* [https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-mptcp](https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-mptcp)
|
||||
|
||||
*Description:* Luci interface for all MPTCP settings
|
||||
|
||||
|
||||
## luci-app-openmptcprouter
|
||||
*Source:* [https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-openmptcprouter](https://github.com/Ysurac/openmptcprouter-feeds/tree/master/luci-app-openmptcprouter)
|
||||
|
||||
*Description:* Wizard for OpenMPTCProuter settings and status page
|
||||
|
||||
|
||||
## mptcp
|
||||
*Source:* [https://github.com/Ysurac/openmptcprouter-feeds/tree/master/mptcp](https://github.com/Ysurac/openmptcprouter-feeds/tree/master/mptcp)
|
||||
|
||||
*Description:* This package set all MPTCP settings
|
||||
|
||||
|
||||
## ndisc6
|
||||
*Source:* [http://www.remlab.net/files/ndisc6](http://www.remlab.net/files/ndisc6)
|
||||
|
||||
*Description:* An ICMPv6 neighbour discovery tool
|
||||
|
||||
This is used to check if there is no other IPv6 route announced on the network
|
||||
|
||||
|
||||
## mlvpn
|
||||
*Source:* [https://github.com/markfoodyburton/MLVPN/tree/new-reorder](https://github.com/markfoodyburton/MLVPN/tree/new-reorder)
|
||||
|
||||
*Description:* Multi-link VPN
|
||||
|
||||
This is an other way to aggregate same latency connections
|
||||
|
||||
|
||||
## dsvpn
|
||||
*Source:* [https://github.com/jedisct1/dsvpn][https://github.com/jedisct1/dsvpn]
|
||||
|
||||
*Description:* A Dead Simple VPN
|
||||
|
||||
A simple TCP VPN
|
||||
|
||||
|
||||
## ndpi-netfilter2
|
||||
*Source:* [https://github.com/vel21ripn/nDPI](https://github.com/vel21ripn/nDPI)
|
||||
|
||||
*Description:* Open Source Deep Packet Inspection Software Toolkit
|
||||
|
||||
This is used to bypass a protocol
|
||||
|
||||
|
||||
## tracebox
|
||||
*Source:* [https://github.com/tracebox/tracebox](https://github.com/tracebox/tracebox)
|
||||
|
||||
*Description:* A middlebox detection tool
|
||||
|
||||
|
||||
## Shortcut-FE
|
||||
*Source:* [https://github.com/coolsnowwolf/lede/tree/master/package/lean/shortcut-fe](https://github.com/coolsnowwolf/lede/tree/master/package/lean/shortcut-fe)
|
||||
|
||||
*Description:* Shortcut is an in-Linux-kernel IP packet forwarding engine.
|
||||
|
||||
|
||||
## V2Ray
|
||||
*Source:* [https://github.com/v2fly/v2ray-core](https://github.com/v2fly/v2ray-core)
|
||||
|
||||
*Description:* A platform for building proxies to bypass network restrictions.
|
||||
|
||||
This is used as proxy, alternative to Shadowsocks
|
||||
|
||||
|
||||
|
||||
# License
|
||||
[](https://app.fossa.io/projects/git%2Bgithub.com%2FYsurac%2Fopenmptcprouter-feeds?ref=badge_large)
|
||||
|
||||
## Translation status
|
||||
|
||||
[](https://weblate.openmptcprouter.com/engage/omr/?utm_source=widget)
|
||||
|
|
|
@ -1,58 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2014 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# $Id$
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=cryptodev-linux
|
||||
PKG_VERSION:=1.12
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/$(PKG_NAME)/$(PKG_NAME)/tar.gz/$(PKG_NAME)-$(PKG_VERSION)?
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_HASH:=f51c2254749233b1b1d7ec9445158bd709f124f88e1c650fe2faac83c3a81938
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com>
|
||||
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define KernelPackage/cryptodev
|
||||
SUBMENU:=Cryptographic API modules
|
||||
TITLE:=Driver for cryptographic acceleration
|
||||
URL:=http://cryptodev-linux.org/
|
||||
VERSION:=$(LINUX_VERSION)+$(PKG_VERSION)-$(BOARD)-$(PKG_RELEASE)
|
||||
DEPENDS:=+kmod-crypto-authenc +kmod-crypto-hash
|
||||
FILES:=$(PKG_BUILD_DIR)/cryptodev.$(LINUX_KMOD_SUFFIX)
|
||||
AUTOLOAD:=$(call AutoLoad,50,cryptodev)
|
||||
MODPARAMS.cryptodev:=cryptodev_verbosity=-1
|
||||
endef
|
||||
|
||||
define KernelPackage/cryptodev/description
|
||||
This is a driver for that allows to use the Linux kernel supported
|
||||
hardware ciphers by user-space applications.
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
||||
$(KERNEL_MAKE_FLAGS) \
|
||||
KERNEL_DIR="$(LINUX_DIR)"
|
||||
endef
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(STAGING_DIR)/usr/include/crypto
|
||||
$(CP) $(PKG_BUILD_DIR)/crypto/cryptodev.h $(STAGING_DIR)/usr/include/crypto/
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,cryptodev))
|
|
@ -1,62 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2022 Chion Tang <tech@chionlab.moe>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fullconenat
|
||||
PKG_RELEASE:=9
|
||||
|
||||
PKG_SOURCE_DATE:=2022-02-13
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/llccd/netfilter-full-cone-nat.git
|
||||
PKG_SOURCE_VERSION:=108a36cbdca17e68c9e6e7fd5e26156a88f738e8
|
||||
PKG_MIRROR_HASH:=00d749235271dee194dcd23c22e6e85207ea90192a62a110b2af0b4e4de1971f
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_MAINTAINER:=Chion Tang <tech@chionlab.moe>
|
||||
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/iptables-mod-fullconenat
|
||||
SUBMENU:=Firewall
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=FULLCONENAT iptables extension
|
||||
DEPENDS:=+iptables +kmod-ipt-fullconenat
|
||||
endef
|
||||
|
||||
define Package/iptables-mod-fullconenat/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/iptables
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libipt_FULLCONENAT.so $(1)/usr/lib/iptables
|
||||
endef
|
||||
|
||||
define KernelPackage/ipt-fullconenat
|
||||
SUBMENU:=Netfilter Extensions
|
||||
TITLE:=FULLCONENAT netfilter module
|
||||
DEPENDS:=+kmod-nf-ipt +kmod-nf-nat
|
||||
KCONFIG:= \
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y \
|
||||
CONFIG_NF_CONNTRACK_CHAIN_EVENTS=y
|
||||
FILES:=$(PKG_BUILD_DIR)/xt_FULLCONENAT.ko
|
||||
endef
|
||||
|
||||
include $(INCLUDE_DIR)/kernel-defaults.mk
|
||||
|
||||
define Build/Compile
|
||||
+$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \
|
||||
CROSS_COMPILE="$(TARGET_CROSS)" \
|
||||
ARCH="$(LINUX_KARCH)" \
|
||||
M="$(PKG_BUILD_DIR)" \
|
||||
EXTRA_CFLAGS="$(BUILDFLAGS)" \
|
||||
modules
|
||||
$(call Build/Compile/Default)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,ipt-fullconenat))
|
||||
$(eval $(call BuildPackage,iptables-mod-fullconenat))
|
|
@ -1,20 +0,0 @@
|
|||
--- a/libip6t_FULLCONENAT.c
|
||||
+++ b/libip6t_FULLCONENAT.c
|
||||
@@ -214,6 +214,7 @@ static struct xtables_target fullconenat_tg_reg = {
|
||||
.x6_options = FULLCONENAT_opts,
|
||||
};
|
||||
|
||||
+#define _init __attribute__((constructor)) _INIT
|
||||
void _init(void)
|
||||
{
|
||||
xtables_register_target(&fullconenat_tg_reg);
|
||||
--- a/libipt_FULLCONENAT.c
|
||||
+++ b/libipt_FULLCONENAT.c
|
||||
@@ -235,6 +235,7 @@ static struct xtables_target fullconenat_tg_reg = {
|
||||
.x6_options = FULLCONENAT_opts,
|
||||
};
|
||||
|
||||
+#define _init __attribute__((constructor)) _INIT
|
||||
void _init(void)
|
||||
{
|
||||
xtables_register_target(&fullconenat_tg_reg);
|
|
@ -1,26 +0,0 @@
|
|||
--- a/xt_FULLCONENAT.c
|
||||
+++ b/xt_FULLCONENAT.c
|
||||
@@ -325,7 +325,11 @@
|
||||
/* for now we do the same thing for both --random and --random-fully */
|
||||
|
||||
/* select a random starting point */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
|
||||
+ start = (uint16_t)(get_random_u32() % (u32)range_size);
|
||||
+#else
|
||||
start = (uint16_t)(prandom_u32() % (u32)range_size);
|
||||
+#endif
|
||||
} else {
|
||||
|
||||
if ((original_port >= min && original_port <= min + range_size - 1)
|
||||
@@ -995,7 +999,11 @@
|
||||
/* for now we do the same thing for both --random and --random-fully */
|
||||
|
||||
/* select a random starting point */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
|
||||
+ start = (uint16_t)(get_random_u32() % (u32)range_size);
|
||||
+#else
|
||||
start = (uint16_t)(prandom_u32() % (u32)range_size);
|
||||
+#endif
|
||||
} else {
|
||||
|
||||
if ((original_port >= min && original_port <= min + range_size - 1)
|
|
@ -1,6 +0,0 @@
|
|||
libipt_FULLCONENAT.so: libipt_FULLCONENAT.o
|
||||
$(CC) -shared -lxtables -o $@ $^;
|
||||
libipt_FULLCONENAT.o: libipt_FULLCONENAT.c
|
||||
$(CC) ${CFLAGS} -fPIC -D_INIT=$*_init -c -o $@ $<;
|
||||
|
||||
obj-m += xt_FULLCONENAT.o
|
|
@ -1,283 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2006-2015 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=iproute2
|
||||
PKG_VERSION:=6.4.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
|
||||
PKG_HASH:=4c51b8decbc7e4da159ffb066f590cfb93dbf9af7ff86b1647ce42b7c179a272
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_DEPENDS:=iptables
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_CPE_ID:=cpe:/a:iproute2_project:iproute2
|
||||
|
||||
PKG_BUILD_FLAGS:=gc-sections lto
|
||||
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
|
||||
define Package/iproute2/Default
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
URL:=http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
|
||||
SUBMENU:=Routing and Redirection
|
||||
MAINTAINER:=Russell Senior <russell@personaltelco.net>
|
||||
endef
|
||||
|
||||
define Package/ip-tiny
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Routing control utility (minimal)
|
||||
VARIANT:=iptiny
|
||||
DEFAULT_VARIANT:=1
|
||||
PROVIDES:=ip
|
||||
ALTERNATIVES:=200:/sbin/ip:/usr/libexec/ip-tiny
|
||||
DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl
|
||||
endef
|
||||
|
||||
define Package/ip-full
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Routing control utility (full)
|
||||
VARIANT:=ipfull
|
||||
PROVIDES:=ip
|
||||
ALTERNATIVES:=300:/sbin/ip:/usr/libexec/ip-full
|
||||
DEPENDS:=+libnl-tiny +libbpf +(PACKAGE_devlink||PACKAGE_rdma):libmnl
|
||||
endef
|
||||
|
||||
define Package/tc-tiny
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Traffic control utility (minimal)
|
||||
VARIANT:=tctiny
|
||||
DEFAULT_VARIANT:=1
|
||||
PROVIDES:=tc
|
||||
ALTERNATIVES:=200:/sbin/tc:/usr/libexec/tc-tiny
|
||||
DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl
|
||||
endef
|
||||
|
||||
define Package/tc-bpf
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Traffic control utility (bpf)
|
||||
VARIANT:=tcbpf
|
||||
PROVIDES:=tc
|
||||
ALTERNATIVES:=300:/sbin/tc:/usr/libexec/tc-bpf
|
||||
DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf
|
||||
endef
|
||||
|
||||
define Package/tc-full
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Traffic control utility (full)
|
||||
VARIANT:=tcfull
|
||||
PROVIDES:=tc
|
||||
ALTERNATIVES:=400:/sbin/tc:/usr/libexec/tc-full
|
||||
DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +libxtables +tc-mod-iptables
|
||||
endef
|
||||
|
||||
define Package/tc-mod-iptables
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Traffic control module - iptables action
|
||||
VARIANT:=tcfull
|
||||
DEPENDS:=+libxtables +libbpf
|
||||
endef
|
||||
|
||||
define Package/genl
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=General netlink utility frontend
|
||||
DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl
|
||||
endef
|
||||
|
||||
define Package/ip-bridge
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Bridge configuration utility from iproute2
|
||||
DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl
|
||||
endef
|
||||
|
||||
define Package/ss
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Socket statistics utility
|
||||
DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +kmod-netlink-diag
|
||||
endef
|
||||
|
||||
define Package/nstat
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Network statistics utility
|
||||
DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl
|
||||
endef
|
||||
|
||||
define Package/devlink
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Network devlink utility
|
||||
DEPENDS:=+libmnl
|
||||
endef
|
||||
|
||||
define Package/rdma
|
||||
$(call Package/iproute2/Default)
|
||||
TITLE:=Network rdma utility
|
||||
DEPENDS:=+libmnl
|
||||
endef
|
||||
|
||||
ifeq ($(BUILD_VARIANT),iptiny)
|
||||
IP_CONFIG_TINY:=y
|
||||
LIBBPF_FORCE:=off
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_VARIANT),ipfull)
|
||||
HAVE_ELF:=y
|
||||
LIBBPF_FORCE:=on
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_VARIANT),tctiny)
|
||||
LIBBPF_FORCE:=off
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_VARIANT),tcbpf)
|
||||
HAVE_ELF:=y
|
||||
LIBBPF_FORCE:=on
|
||||
SHARED_LIBS:=y
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_VARIANT),tcfull)
|
||||
#enable iptables/xtables requirement only if tciptables variant is selected
|
||||
TC_CONFIG_XT:=y
|
||||
TC_CONFIG_XT_OLD:=y
|
||||
TC_CONFIG_XT_OLD_H:=y
|
||||
TC_CONFIG_IPSET:=y
|
||||
HAVE_ELF:=y
|
||||
LIBBPF_FORCE:=on
|
||||
SHARED_LIBS:=y
|
||||
else
|
||||
#disable iptables requirement by default
|
||||
TC_CONFIG_XT:=n
|
||||
TC_CONFIG_XT_OLD:=n
|
||||
TC_CONFIG_XT_OLD_H:=n
|
||||
TC_CONFIG_IPSET:=n
|
||||
endif
|
||||
|
||||
ifdef CONFIG_PACKAGE_devlink
|
||||
HAVE_MNL:=y
|
||||
endif
|
||||
|
||||
ifdef CONFIG_PACKAGE_rdma
|
||||
HAVE_MNL:=y
|
||||
endif
|
||||
|
||||
define Build/Configure
|
||||
echo "static const char SNAPSHOT[] = \"$(PKG_VERSION)-$(PKG_RELEASE)-openwrt\";" \
|
||||
> $(PKG_BUILD_DIR)/include/SNAPSHOT.h
|
||||
endef
|
||||
|
||||
TARGET_LDFLAGS += -Wl,--as-needed
|
||||
TARGET_CPPFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny
|
||||
|
||||
MAKE_FLAGS += \
|
||||
KERNEL_INCLUDE="$(LINUX_DIR)/include/uapi" \
|
||||
SHARED_LIBS=$(SHARED_LIBS) \
|
||||
IP_CONFIG_TINY=$(IP_CONFIG_TINY) \
|
||||
BUILD_VARIANT=$(BUILD_VARIANT) \
|
||||
LIBBPF_FORCE=$(LIBBPF_FORCE) \
|
||||
HAVE_ELF=$(HAVE_ELF) \
|
||||
HAVE_MNL=$(HAVE_MNL) \
|
||||
HAVE_CAP=$(HAVE_CAP) \
|
||||
HAVE_TIRPC=n \
|
||||
IPT_LIB_DIR=/usr/lib/iptables \
|
||||
XT_LIB_DIR=/usr/lib/iptables \
|
||||
TC_CONFIG_XT=$(TC_CONFIG_XT) \
|
||||
TC_CONFIG_XT_OLD=$(TC_CONFIG_XT_OLD) \
|
||||
TC_CONFIG_XT_OLD_H=$(TC_CONFIG_XT_OLD_H) \
|
||||
TC_CONFIG_IPSET=$(TC_CONFIG_IPSET) \
|
||||
FPIC="$(FPIC)" \
|
||||
$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='')
|
||||
|
||||
define Build/Compile
|
||||
+$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) $(MAKE_FLAGS)
|
||||
endef
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(1)/usr/include/iproute2
|
||||
$(CP) $(PKG_BUILD_DIR)/include/bpf_elf.h $(1)/usr/include/iproute2
|
||||
$(CP) $(PKG_BUILD_DIR)/include/{libgenl,libnetlink}.h $(1)/usr/include/
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_BUILD_DIR)/lib/libnetlink.a $(1)/usr/lib/
|
||||
endef
|
||||
|
||||
define Package/ip-tiny/install
|
||||
$(INSTALL_DIR) $(1)/usr/libexec
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ip/ip $(1)/usr/libexec/ip-tiny
|
||||
endef
|
||||
|
||||
define Package/ip-full/install
|
||||
$(INSTALL_DIR) $(1)/usr/libexec
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ip/ip $(1)/usr/libexec/ip-full
|
||||
endef
|
||||
|
||||
define Package/tc-tiny/install
|
||||
$(INSTALL_DIR) $(1)/usr/libexec
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-tiny
|
||||
endef
|
||||
|
||||
define Package/tc-bpf/install
|
||||
$(INSTALL_DIR) $(1)/usr/libexec
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-bpf
|
||||
endef
|
||||
|
||||
define Package/tc-full/install
|
||||
$(INSTALL_DIR) $(1)/usr/libexec
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-full
|
||||
endef
|
||||
|
||||
define Package/tc-mod-iptables/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/tc
|
||||
$(CP) $(PKG_BUILD_DIR)/tc/m_xt.so $(1)/usr/lib/tc
|
||||
endef
|
||||
|
||||
define Package/genl/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/genl/genl $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
define Package/ip-bridge/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bridge/bridge $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
define Package/ss/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/ss $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
define Package/nstat/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/nstat $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
define Package/devlink/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/devlink/devlink $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
define Package/rdma/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/rdma/rdma $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,ip-tiny))
|
||||
$(eval $(call BuildPackage,ip-full))
|
||||
# build tc-mod-iptables before its dependents, to avoid
|
||||
# spurious rebuilds when building multiple variants.
|
||||
$(eval $(call BuildPackage,tc-mod-iptables))
|
||||
$(eval $(call BuildPackage,tc-tiny))
|
||||
$(eval $(call BuildPackage,tc-bpf))
|
||||
$(eval $(call BuildPackage,tc-full))
|
||||
$(eval $(call BuildPackage,genl))
|
||||
$(eval $(call BuildPackage,ip-bridge))
|
||||
$(eval $(call BuildPackage,ss))
|
||||
$(eval $(call BuildPackage,nstat))
|
||||
$(eval $(call BuildPackage,devlink))
|
||||
$(eval $(call BuildPackage,rdma))
|
|
@ -1,12 +0,0 @@
|
|||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -34,7 +34,8 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
EOF
|
||||
|
||||
- if $CC -I$INCLUDE -o $TMPDIR/atmtest $TMPDIR/atmtest.c -latm >/dev/null 2>&1; then
|
||||
+# OpenWrt: disable ATM support even if present on host system
|
||||
+ if [ 1 -eq 0 ]; then
|
||||
echo "TC_CONFIG_ATM:=y" >>$CONFIG
|
||||
echo yes
|
||||
else
|
|
@ -1,59 +0,0 @@
|
|||
--- a/netem/maketable.c
|
||||
+++ b/netem/maketable.c
|
||||
@@ -10,7 +10,9 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
|
||||
#include <malloc.h>
|
||||
+#endif
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
--- a/netem/normal.c
|
||||
+++ b/netem/normal.c
|
||||
@@ -8,8 +8,12 @@
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
|
||||
#include <linux/types.h>
|
||||
#include <linux/pkt_sched.h>
|
||||
+#else
|
||||
+#define NETEM_DIST_SCALE 8192
|
||||
+#endif
|
||||
|
||||
#define TABLESIZE 16384
|
||||
#define TABLEFACTOR NETEM_DIST_SCALE
|
||||
--- a/netem/pareto.c
|
||||
+++ b/netem/pareto.c
|
||||
@@ -7,8 +7,12 @@
|
||||
#include <math.h>
|
||||
#include <limits.h>
|
||||
|
||||
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
|
||||
#include <linux/types.h>
|
||||
#include <linux/pkt_sched.h>
|
||||
+#else
|
||||
+#define NETEM_DIST_SCALE 8192
|
||||
+#endif
|
||||
|
||||
static const double a=3.0;
|
||||
#define TABLESIZE 16384
|
||||
--- a/netem/paretonormal.c
|
||||
+++ b/netem/paretonormal.c
|
||||
@@ -14,10 +14,13 @@
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include <limits.h>
|
||||
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
|
||||
#include <malloc.h>
|
||||
-
|
||||
#include <linux/types.h>
|
||||
#include <linux/pkt_sched.h>
|
||||
+#else
|
||||
+#define NETEM_DIST_SCALE 8192
|
||||
+#endif
|
||||
|
||||
#define TABLESIZE 16384
|
||||
#define TABLEFACTOR NETEM_DIST_SCALE
|
|
@ -1,12 +0,0 @@
|
|||
--- a/tc/Makefile
|
||||
+++ b/tc/Makefile
|
||||
@@ -128,6 +128,9 @@ CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PR
|
||||
ifneq ($(IPT_LIB_DIR),)
|
||||
CFLAGS += -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\"
|
||||
endif
|
||||
+ifneq ($(XT_LIB_DIR),)
|
||||
+ CFLAGS += -DXT_LIB_DIR=\"$(XT_LIB_DIR)\"
|
||||
+endif
|
||||
|
||||
LEX := flex
|
||||
CFLAGS += -DYY_NO_INPUT
|
|
@ -1,20 +0,0 @@
|
|||
--- a/misc/Makefile
|
||||
+++ b/misc/Makefile
|
||||
@@ -2,13 +2,13 @@
|
||||
SSOBJ=ss.o ssfilter_check.o ssfilter.tab.o
|
||||
LNSTATOBJ=lnstat.o lnstat_util.o
|
||||
|
||||
-TARGETS=ss nstat ifstat rtacct lnstat
|
||||
+TARGETS=ss nstat
|
||||
|
||||
include ../config.mk
|
||||
|
||||
-ifeq ($(HAVE_BERKELEY_DB),y)
|
||||
- TARGETS += arpd
|
||||
-endif
|
||||
+#ifeq ($(HAVE_BERKELEY_DB),y)
|
||||
+# TARGETS += arpd
|
||||
+#endif
|
||||
|
||||
all: $(TARGETS)
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -65,9 +65,9 @@ WFLAGS += -Wmissing-declarations -Wold-s
|
||||
CFLAGS := $(WFLAGS) $(CCOPTS) -I../include -I../include/uapi $(DEFINES) $(CFLAGS)
|
||||
YACCFLAGS = -d -t -v
|
||||
|
||||
-SUBDIRS=lib ip tc bridge misc netem genl man
|
||||
+SUBDIRS=lib ip tc bridge misc genl
|
||||
ifeq ($(HAVE_MNL),y)
|
||||
-SUBDIRS += tipc devlink rdma dcb vdpa
|
||||
+SUBDIRS += devlink rdma
|
||||
endif
|
||||
|
||||
LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a
|
|
@ -1,9 +0,0 @@
|
|||
--- a/tc/q_fifo.c
|
||||
+++ b/tc/q_fifo.c
|
||||
@@ -95,5 +95,6 @@ struct qdisc_util pfifo_head_drop_qdisc_
|
||||
|
||||
struct qdisc_util pfifo_fast_qdisc_util = {
|
||||
.id = "pfifo_fast",
|
||||
+ .parse_qopt = fifo_parse_opt,
|
||||
.print_qopt = prio_print_opt,
|
||||
};
|
|
@ -1,11 +0,0 @@
|
|||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -387,7 +387,7 @@ check_selinux()
|
||||
|
||||
check_mnl()
|
||||
{
|
||||
- if ${PKG_CONFIG} libmnl --exists; then
|
||||
+ if [ "${HAVE_MNL}" = "y" ] && ${PKG_CONFIG} libmnl --exists; then
|
||||
echo "HAVE_MNL:=y" >>$CONFIG
|
||||
echo "yes"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -255,7 +255,7 @@ EOF
|
||||
|
||||
check_elf()
|
||||
{
|
||||
- if ${PKG_CONFIG} libelf --exists; then
|
||||
+ if [ "${HAVE_ELF}" = "y" ] && ${PKG_CONFIG} libelf --exists; then
|
||||
echo "HAVE_ELF:=y" >>$CONFIG
|
||||
echo "yes"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -445,7 +445,7 @@ EOF
|
||||
|
||||
check_cap()
|
||||
{
|
||||
- if ${PKG_CONFIG} libcap --exists; then
|
||||
+ if [ "${HAVE_CAP}" = "y" ] && ${PKG_CONFIG} libcap --exists; then
|
||||
echo "HAVE_CAP:=y" >>$CONFIG
|
||||
echo "yes"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -398,7 +398,7 @@ check_selinux()
|
||||
|
||||
check_tirpc()
|
||||
{
|
||||
- if ${PKG_CONFIG} libtirpc --exists; then
|
||||
+ if [ "${HAVE_TIRPC}" = "y" ] && ${PKG_CONFIG} libtirpc --exists; then
|
||||
echo "HAVE_RPC:=y" >>$CONFIG
|
||||
echo "yes"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- a/lib/Makefile
|
||||
+++ b/lib/Makefile
|
||||
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
include ../config.mk
|
||||
|
||||
-CFLAGS += -fPIC
|
||||
+CFLAGS += $(FPIC)
|
||||
|
||||
UTILOBJ = utils.o utils_math.o rt_names.o ll_map.o ll_types.o ll_proto.o ll_addr.o \
|
||||
inet_proto.o namespace.o json_writer.o json_print.o json_print_math.o \
|
|
@ -1,108 +0,0 @@
|
|||
--- a/ip/Makefile
|
||||
+++ b/ip/Makefile
|
||||
@@ -19,6 +19,13 @@ RTMONOBJ=rtmon.o
|
||||
|
||||
include ../config.mk
|
||||
|
||||
+STATIC_SYM_FILTER:=
|
||||
+ifeq ($(IP_CONFIG_TINY),y)
|
||||
+ STATIC_SYM_FILTER:=iplink_can.c iplink_ipoib.c iplink_vxlan.c
|
||||
+ CFLAGS += -DIPROUTE2_TINY
|
||||
+endif
|
||||
+STATIC_SYM_SOURCES:=$(filter-out $(STATIC_SYM_FILTER),$(wildcard *.c))
|
||||
+
|
||||
ALLOBJ=$(IPOBJ) $(RTMONOBJ)
|
||||
SCRIPTS=routel
|
||||
TARGETS=ip rtmon
|
||||
@@ -48,7 +55,7 @@ else
|
||||
|
||||
ip: static-syms.o
|
||||
static-syms.o: static-syms.h
|
||||
-static-syms.h: $(wildcard *.c)
|
||||
+static-syms.h: $(STATIC_SYM_SOURCES)
|
||||
files="$^" ; \
|
||||
for s in `grep -B 3 '\<dlsym' $$files | sed -n '/snprintf/{s:.*"\([^"]*\)".*:\1:;s:%s::;p}'` ; do \
|
||||
sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \
|
||||
--- a/ip/ip.c
|
||||
+++ b/ip/ip.c
|
||||
@@ -61,11 +61,17 @@ static void usage(void)
|
||||
fprintf(stderr,
|
||||
"Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }\n"
|
||||
" ip [ -force ] -batch filename\n"
|
||||
+#ifndef IPROUTE2_TINY
|
||||
"where OBJECT := { address | addrlabel | amt | fou | help | ila | ioam | l2tp |\n"
|
||||
" link | macsec | maddress | monitor | mptcp | mroute | mrule |\n"
|
||||
" neighbor | neighbour | netconf | netns | nexthop | ntable |\n"
|
||||
" ntbl | route | rule | sr | tap | tcpmetrics |\n"
|
||||
" token | tunnel | tuntap | vrf | xfrm }\n"
|
||||
+#else
|
||||
+ "where OBJECT := { address | link | maddress | monitor |\n"
|
||||
+ " neighbor | neighbour | netns | route |\n"
|
||||
+ " rule | token | tunnel }\n"
|
||||
+#endif
|
||||
" OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n"
|
||||
" -h[uman-readable] | -iec | -j[son] | -p[retty] |\n"
|
||||
" -f[amily] { inet | inet6 | mpls | bridge | link } |\n"
|
||||
@@ -88,37 +94,49 @@ static const struct cmd {
|
||||
int (*func)(int argc, char **argv);
|
||||
} cmds[] = {
|
||||
{ "address", do_ipaddr },
|
||||
+#ifndef IPROUTE2_TINY
|
||||
{ "addrlabel", do_ipaddrlabel },
|
||||
+#endif
|
||||
{ "maddress", do_multiaddr },
|
||||
{ "route", do_iproute },
|
||||
{ "rule", do_iprule },
|
||||
{ "neighbor", do_ipneigh },
|
||||
{ "neighbour", do_ipneigh },
|
||||
+#ifndef IPROUTE2_TINY
|
||||
{ "ntable", do_ipntable },
|
||||
{ "ntbl", do_ipntable },
|
||||
+#endif
|
||||
{ "link", do_iplink },
|
||||
+#ifndef IPROUTE2_TINY
|
||||
{ "l2tp", do_ipl2tp },
|
||||
{ "fou", do_ipfou },
|
||||
{ "ila", do_ipila },
|
||||
{ "macsec", do_ipmacsec },
|
||||
+#endif
|
||||
{ "tunnel", do_iptunnel },
|
||||
{ "tunl", do_iptunnel },
|
||||
+#ifndef IPROUTE2_TINY
|
||||
{ "tuntap", do_iptuntap },
|
||||
{ "tap", do_iptuntap },
|
||||
{ "token", do_iptoken },
|
||||
{ "tcpmetrics", do_tcp_metrics },
|
||||
{ "tcp_metrics", do_tcp_metrics },
|
||||
+#endif
|
||||
{ "monitor", do_ipmonitor },
|
||||
+#ifndef IPROUTE2_TINY
|
||||
{ "xfrm", do_xfrm },
|
||||
{ "mroute", do_multiroute },
|
||||
{ "mrule", do_multirule },
|
||||
+#endif
|
||||
{ "netns", do_netns },
|
||||
+#ifndef IPROUTE2_TINY
|
||||
{ "netconf", do_ipnetconf },
|
||||
{ "vrf", do_ipvrf},
|
||||
{ "sr", do_seg6 },
|
||||
{ "nexthop", do_ipnh },
|
||||
{ "mptcp", do_mptcp },
|
||||
{ "ioam", do_ioam6 },
|
||||
+#endif
|
||||
{ "help", do_help },
|
||||
{ "stats", do_ipstats },
|
||||
{ 0 }
|
||||
--- a/lib/Makefile
|
||||
+++ b/lib/Makefile
|
||||
@@ -3,6 +3,10 @@ include ../config.mk
|
||||
|
||||
CFLAGS += $(FPIC)
|
||||
|
||||
+ifeq ($(IP_CONFIG_TINY),y)
|
||||
+ CFLAGS += -DIPROUTE2_TINY
|
||||
+endif
|
||||
+
|
||||
UTILOBJ = utils.o utils_math.o rt_names.o ll_map.o ll_types.o ll_proto.o ll_addr.o \
|
||||
inet_proto.o namespace.o json_writer.o json_print.o json_print_math.o \
|
||||
names.o color.o bpf_legacy.o bpf_glue.o exec.o fs.o cg_map.o ppp_proto.o
|
|
@ -1,45 +0,0 @@
|
|||
--- a/tc/Makefile
|
||||
+++ b/tc/Makefile
|
||||
@@ -114,7 +114,7 @@ LDLIBS += -L. -lm
|
||||
|
||||
ifeq ($(SHARED_LIBS),y)
|
||||
LDLIBS += -ldl
|
||||
-LDFLAGS += -Wl,-export-dynamic
|
||||
+LDFLAGS += -Wl,--dynamic-list=dynsyms.list
|
||||
endif
|
||||
|
||||
TCLIB := tc_core.o
|
||||
@@ -144,7 +144,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
|
||||
all: tc $(TCSO)
|
||||
|
||||
tc: $(TCOBJ) $(LIBNETLINK) libtc.a
|
||||
- $(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@
|
||||
+ $(QUIET_LINK)$(CC) $(filter-out dynsyms.list, $^) $(LDFLAGS) $(LDLIBS) -o $@
|
||||
|
||||
libtc.a: $(TCLIB)
|
||||
$(QUIET_AR)$(AR) rcs $@ $^
|
||||
@@ -166,6 +166,7 @@ install: all
|
||||
clean:
|
||||
rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.tab.h; \
|
||||
rm -f emp_ematch.tab.*
|
||||
+ rm -f dynsyms.list
|
||||
|
||||
q_atm.so: q_atm.c
|
||||
$(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm
|
||||
@@ -205,4 +206,16 @@ static-syms.h: $(wildcard *.c)
|
||||
sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \
|
||||
done > $@
|
||||
|
||||
+else
|
||||
+
|
||||
+tc: dynsyms.list
|
||||
+m_xt.so: dynsyms.list
|
||||
+dynsyms.list: $(wildcard *.c)
|
||||
+ files="$(filter-out $(patsubst %.so,%.c,$(TCSO)), $^)" ; \
|
||||
+ echo "{" > $@ ; \
|
||||
+ for s in `grep -B 3 '\<dlsym' $$files | sed -n '/snprintf/{s:.*"\([^"]*\)".*:\1:;s:%s::;p}'` ; do \
|
||||
+ sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:\1;:;p}' $$files ; \
|
||||
+ done >> $@ ; \
|
||||
+ echo "show_stats; print_nl; print_tm; parse_rtattr; parse_rtattr_flags; get_u32; matches; addattr_l; addattr_nest; addattr_nest_end; };" >> $@
|
||||
+
|
||||
endif
|
|
@ -1,41 +0,0 @@
|
|||
From 4e7dbf76227e8c7be7897dc81def3011f637864d Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Gorski <jogo@openwrt.org>
|
||||
Date: Thu, 30 May 2013 11:54:04 +0200
|
||||
Subject: [PATCH] add support for dropping with FAILED_POLICY
|
||||
|
||||
---
|
||||
include/linux/fib_rules.h | 4 ++++
|
||||
include/linux/rtnetlink.h | 1 +
|
||||
ip/rtm_map.c | 4 ++++
|
||||
3 files changed, 9 insertions(+)
|
||||
|
||||
--- a/ip/rtm_map.c
|
||||
+++ b/ip/rtm_map.c
|
||||
@@ -54,6 +54,8 @@ char *rtnl_rtntype_n2a(int id, char *buf
|
||||
return "nat";
|
||||
case RTN_XRESOLVE:
|
||||
return "xresolve";
|
||||
+ case RTN_FAILED_POLICY:
|
||||
+ return "failed_policy";
|
||||
default:
|
||||
snprintf(buf, len, "%d", id);
|
||||
return buf;
|
||||
@@ -89,6 +91,8 @@ int rtnl_rtntype_a2n(int *id, char *arg)
|
||||
res = RTN_UNICAST;
|
||||
else if (strcmp(arg, "throw") == 0)
|
||||
res = RTN_THROW;
|
||||
+ else if (strcmp(arg, "failed_policy") == 0)
|
||||
+ res = RTN_FAILED_POLICY;
|
||||
else {
|
||||
res = strtoul(arg, &end, 0);
|
||||
if (!end || end == arg || *end || res > 255)
|
||||
--- a/include/uapi/linux/rtnetlink.h
|
||||
+++ b/include/uapi/linux/rtnetlink.h
|
||||
@@ -256,6 +256,7 @@ enum {
|
||||
RTN_THROW, /* Not in this table */
|
||||
RTN_NAT, /* Translate this address */
|
||||
RTN_XRESOLVE, /* Use external resolver */
|
||||
+ RTN_FAILED_POLICY, /* Source address failed policy */
|
||||
__RTN_MAX
|
||||
};
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -279,7 +279,7 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
EOF
|
||||
|
||||
- $CC -o $TMPDIR/libbpf_test $TMPDIR/libbpf_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS >/dev/null 2>&1
|
||||
+ $CC -o $TMPDIR/libbpf_test $TMPDIR/libbpf_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS $LDFLAGS >/dev/null 2>&1
|
||||
local ret=$?
|
||||
|
||||
rm -f $TMPDIR/libbpf_test.c $TMPDIR/libbpf_test
|
||||
@@ -297,7 +297,7 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
EOF
|
||||
|
||||
- $CC -o $TMPDIR/libbpf_sec_test $TMPDIR/libbpf_sec_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS >/dev/null 2>&1
|
||||
+ $CC -o $TMPDIR/libbpf_sec_test $TMPDIR/libbpf_sec_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS $LDFLAGS >/dev/null 2>&1
|
||||
local ret=$?
|
||||
|
||||
rm -f $TMPDIR/libbpf_sec_test.c $TMPDIR/libbpf_sec_test
|
|
@ -1,22 +0,0 @@
|
|||
--- a/ip/Makefile
|
||||
+++ b/ip/Makefile
|
||||
@@ -28,7 +28,7 @@ STATIC_SYM_SOURCES:=$(filter-out $(STATI
|
||||
|
||||
ALLOBJ=$(IPOBJ) $(RTMONOBJ)
|
||||
SCRIPTS=routel
|
||||
-TARGETS=ip rtmon
|
||||
+TARGETS=$(findstring ip,$(BUILD_VARIANT)) rtmon
|
||||
|
||||
all: $(TARGETS) $(SCRIPTS)
|
||||
|
||||
--- a/tc/Makefile
|
||||
+++ b/tc/Makefile
|
||||
@@ -140,7 +140,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
|
||||
$(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic $< -o $@
|
||||
|
||||
|
||||
-all: tc $(TCSO)
|
||||
+all: $(findstring tc,$(BUILD_VARIANT)) $(TCSO)
|
||||
|
||||
tc: $(TCOBJ) $(LIBNETLINK) libtc.a
|
||||
$(QUIET_LINK)$(CC) $(filter-out dynsyms.list, $^) $(LDFLAGS) $(LDLIBS) -o $@
|
|
@ -1,19 +0,0 @@
|
|||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -431,14 +431,8 @@ EOF
|
||||
if $CC -I$INCLUDE -o $TMPDIR/strtest $TMPDIR/strtest.c >/dev/null 2>&1; then
|
||||
echo "no"
|
||||
else
|
||||
- if ${PKG_CONFIG} libbsd --exists; then
|
||||
- echo 'CFLAGS += -DHAVE_LIBBSD' `${PKG_CONFIG} libbsd --cflags` >>$CONFIG
|
||||
- echo 'LDLIBS +=' `${PKG_CONFIG} libbsd --libs` >> $CONFIG
|
||||
- echo "no"
|
||||
- else
|
||||
- echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG
|
||||
- echo "yes"
|
||||
- fi
|
||||
+ echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG
|
||||
+ echo "yes"
|
||||
fi
|
||||
rm -f $TMPDIR/strtest.c $TMPDIR/strtest
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -374,7 +374,7 @@ check_libbpf()
|
||||
check_selinux()
|
||||
# SELinux is a compile time option in the ss utility
|
||||
{
|
||||
- if ${PKG_CONFIG} libselinux --exists; then
|
||||
+ if [ "${HAVE_SELINUX}" = "y" ] && ${PKG_CONFIG} libselinux --exists; then
|
||||
echo "HAVE_SELINUX:=y" >>$CONFIG
|
||||
echo "yes"
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2016 Velocloud Inc.
|
||||
# Copyright (C) 2016 Aleksander Morgado <aleksander@aleksander.es>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libmbim
|
||||
PKG_SOURCE_VERSION:=1.29.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libmbim.git
|
||||
#PKG_MIRROR_HASH:=0b0b46016738fc22355d5a58c8a2d1b2f04906c49c51a50b57a09640d13b00b7
|
||||
|
||||
PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
include $(INCLUDE_DIR)/meson.mk
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections -fno-merge-all-constants -fmerge-constants
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
MESON_ARGS += \
|
||||
-Dintrospection=false \
|
||||
-Dman=false \
|
||||
-Dbash_completion=false \
|
||||
-Db_lto=true
|
||||
|
||||
define Package/libmbim
|
||||
SECTION:=libs
|
||||
CATEGORY:=Libraries
|
||||
DEPENDS:=+glib2
|
||||
TITLE:=Helper library and utils to talk to MBIM enabled modems
|
||||
URL:=https://www.freedesktop.org/wiki/Software/libmbim
|
||||
LICENSE:=LGPL-2.0-or-later
|
||||
LICENSE_FILES:=COPYING.LIB
|
||||
endef
|
||||
|
||||
define Package/libmbim/description
|
||||
Helper library to talk to MBIM enabled modems.
|
||||
Add mbim-utils for extra utilities.
|
||||
endef
|
||||
|
||||
define Package/mbim-utils
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
DEPENDS:=+libmbim
|
||||
TITLE:=Utilities to talk to MBIM enabled modems
|
||||
URL:=https://www.freedesktop.org/wiki/Software/libmbim
|
||||
LICENSE:=GPL-2.0-or-later
|
||||
LICENSE_FILES:=COPYING
|
||||
endef
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(1)/usr/include
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/include/libmbim-glib \
|
||||
$(1)/usr/include/
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/libmbim*.so* \
|
||||
$(1)/usr/lib/
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/mbim-glib.pc \
|
||||
$(1)/usr/lib/pkgconfig
|
||||
endef
|
||||
|
||||
define Package/libmbim/install
|
||||
$(INSTALL_DIR) \
|
||||
$(1)/usr/lib \
|
||||
$(1)/usr/libexec
|
||||
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/libmbim*.so.* \
|
||||
$(1)/usr/lib/
|
||||
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/mbim-proxy $(1)/usr/libexec/
|
||||
endef
|
||||
|
||||
define Package/mbim-utils/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mbimcli $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mbim-network $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,libmbim))
|
||||
$(eval $(call BuildPackage,mbim-utils))
|
|
@ -1,31 +0,0 @@
|
|||
menu "Configuration"
|
||||
depends on PACKAGE_libqmi
|
||||
|
||||
config LIBQMI_WITH_MBIM_QMUX
|
||||
bool "Include MBIM QMUX service support"
|
||||
default y
|
||||
help
|
||||
Compile libqmi with QMI-over-MBIM support
|
||||
|
||||
config LIBQMI_WITH_QRTR_GLIB
|
||||
bool "Include QRTR support"
|
||||
default y
|
||||
help
|
||||
Compile libqmi with QRTR support
|
||||
|
||||
choice
|
||||
prompt "Select QMI message collection to build"
|
||||
default LIBQMI_COLLECTION_BASIC
|
||||
|
||||
config LIBQMI_COLLECTION_MINIMAL
|
||||
depends on !MODEMMANAGER_WITH_QMI
|
||||
bool "minimal"
|
||||
|
||||
config LIBQMI_COLLECTION_BASIC
|
||||
bool "basic (default)"
|
||||
|
||||
config LIBQMI_COLLECTION_FULL
|
||||
bool "full"
|
||||
endchoice
|
||||
|
||||
endmenu
|
111
libqmi/Makefile
111
libqmi/Makefile
|
@ -1,111 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2016 Velocloud Inc.
|
||||
# Copyright (C) 2016 Aleksander Morgado <aleksander@aleksander.es>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libqmi
|
||||
PKG_SOURCE_VERSION:=1.33.3
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libqmi.git
|
||||
#PKG_MIRROR_HASH:=711d16d75a6a9afaefcf2be1bc845a4a6181dff786dfbd079e41e91279a0be91
|
||||
|
||||
PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
include $(INCLUDE_DIR)/meson.mk
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections -fno-merge-all-constants -fmerge-constants
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
define Package/libqmi/config
|
||||
source "$(SOURCE)/Config.in"
|
||||
endef
|
||||
|
||||
define Package/libqmi
|
||||
SECTION:=libs
|
||||
CATEGORY:=Libraries
|
||||
DEPENDS:= \
|
||||
+glib2 \
|
||||
+LIBQMI_WITH_MBIM_QMUX:libmbim \
|
||||
+LIBQMI_WITH_QRTR_GLIB:libqrtr-glib
|
||||
TITLE:=Helper library to talk to QMI enabled modems
|
||||
URL:=https://www.freedesktop.org/wiki/Software/libqmi
|
||||
LICENSE:=LGPL-2.0-or-later
|
||||
LICENSE_FILES:=COPYING.LIB
|
||||
endef
|
||||
|
||||
define Package/libqmi/description
|
||||
Helper library talk to QMI enabled modems.
|
||||
Add qmi-utils for extra utilities.
|
||||
endef
|
||||
|
||||
define Package/qmi-utils
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
DEPENDS:=+libqmi
|
||||
TITLE:=Utilities to talk to QMI enabled modems
|
||||
URL:=https://www.freedesktop.org/wiki/Software/libqmi
|
||||
LICENSE:=GPL-2.0-or-later
|
||||
LICENSE_FILES:=COPYING
|
||||
endef
|
||||
|
||||
define Package/libqmi-utils/description
|
||||
Utils to talk to QMI enabled modems
|
||||
endef
|
||||
|
||||
MESON_ARGS += \
|
||||
-Dudev=false \
|
||||
-Dintrospection=false \
|
||||
-Dman=false \
|
||||
-Dbash_completion=false \
|
||||
-Db_lto=true \
|
||||
-Dmbim_qmux=$(if $(CONFIG_LIBQMI_WITH_MBIM_QMUX),true,false) \
|
||||
-Dqrtr=$(if $(CONFIG_LIBQMI_WITH_QRTR_GLIB),true,false) \
|
||||
-Dcollection=$(if $(CONFIG_LIBQMI_COLLECTION_MINIMAL),minimal\
|
||||
,$(if $(CONFIG_LIBQMI_COLLECTION_BASIC),basic,full))
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(1)/usr/include
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/include/libqmi-glib \
|
||||
$(1)/usr/include/
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/libqmi*.so* \
|
||||
$(1)/usr/lib/
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/qmi-glib.pc \
|
||||
$(1)/usr/lib/pkgconfig
|
||||
endef
|
||||
|
||||
define Package/libqmi/install
|
||||
$(INSTALL_DIR) \
|
||||
$(1)/usr/lib \
|
||||
$(1)/usr/libexec
|
||||
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/libqmi*.so.* \
|
||||
$(1)/usr/lib/
|
||||
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/qmi-proxy $(1)/usr/libexec/
|
||||
endef
|
||||
|
||||
define Package/qmi-utils/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qmicli $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qmi-network $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qmi-firmware-update $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,libqmi))
|
||||
$(eval $(call BuildPackage,qmi-utils))
|
|
@ -1099,4 +1099,4 @@
|
|||
</div>
|
||||
</form>
|
||||
<script type="text/javascript">cbi_init();</script>
|
||||
<%+footer%>
|
||||
<%+footer%>
|
|
@ -1,30 +0,0 @@
|
|||
menu "Configuration"
|
||||
depends on PACKAGE_modemmanager
|
||||
|
||||
config MODEMMANAGER_WITH_MBIM
|
||||
bool "Include MBIM support"
|
||||
default y
|
||||
help
|
||||
Compile ModemManager with MBIM support
|
||||
|
||||
config MODEMMANAGER_WITH_QMI
|
||||
bool "Include QMI support"
|
||||
default y
|
||||
help
|
||||
Compile ModemManager with QMI support
|
||||
|
||||
config MODEMMANAGER_WITH_QRTR
|
||||
bool "Include QRTR support"
|
||||
default y
|
||||
depends on MODEMMANAGER_WITH_QMI
|
||||
select LIBQMI_WITH_QRTR_GLIB
|
||||
help
|
||||
Compile ModemManager with QRTR support
|
||||
|
||||
config MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS
|
||||
bool "Allow AT commands via DBus"
|
||||
default n
|
||||
help
|
||||
Compile ModemManager allowing AT commands without debug flag
|
||||
|
||||
endmenu
|
|
@ -1,138 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2016 Velocloud Inc.
|
||||
# Copyright (C) 2016 Aleksander Morgado <aleksander@aleksander.es>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=modemmanager
|
||||
PKG_SOURCE_VERSION:=1.20.6
|
||||
PKG_RELEASE:=8
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git
|
||||
PKG_MIRROR_HASH:=e90103e2e42bb826bbbac83937a9a69f50348cd6ce0d8da655a12b65494ce7c9
|
||||
|
||||
PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com>
|
||||
PKG_LICENSE:=GPL-2.0-or-later
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
PKG_BUILD_DEPENDS:=glib2/host libxslt/host
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
include $(INCLUDE_DIR)/meson.mk
|
||||
|
||||
TARGET_CFLAGS += -fno-merge-all-constants -fmerge-constants
|
||||
|
||||
define Package/modemmanager/config
|
||||
source "$(SOURCE)/Config.in"
|
||||
endef
|
||||
|
||||
define Package/modemmanager
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=Control utility for any kind of mobile broadband modem
|
||||
URL:=https://www.freedesktop.org/wiki/Software/ModemManager
|
||||
DEPENDS:= \
|
||||
$(INTL_DEPENDS) \
|
||||
+glib2 \
|
||||
+dbus \
|
||||
+ppp \
|
||||
+MODEMMANAGER_WITH_MBIM:libmbim \
|
||||
+MODEMMANAGER_WITH_QMI:libqmi \
|
||||
+MODEMMANAGER_WITH_QRTR:libqrtr-glib
|
||||
endef
|
||||
|
||||
define Package/modemmanager/description
|
||||
ModemManager is a D-Bus-activated service which allows controlling mobile
|
||||
broadband modems. Add kernel modules for your modems as needed.
|
||||
Select Utilities/usb-modeswitch if needed.
|
||||
endef
|
||||
|
||||
MESON_ARGS += \
|
||||
-Dudev=false \
|
||||
-Dudevdir=/lib/udev \
|
||||
-Dtests=false \
|
||||
-Dsystemdsystemunitdir=no \
|
||||
-Dsystemd_suspend_resume=false \
|
||||
-Dsystemd_journal=false \
|
||||
-Dpolkit=no \
|
||||
-Dintrospection=false \
|
||||
-Dman=false \
|
||||
-Dbash_completion=false \
|
||||
-Db_lto=true \
|
||||
-Dmbim=$(if $(CONFIG_MODEMMANAGER_WITH_MBIM),true,false) \
|
||||
-Dqmi=$(if $(CONFIG_MODEMMANAGER_WITH_QMI),true,false) \
|
||||
-Dqrtr=$(if $(CONFIG_MODEMMANAGER_WITH_QRTR),true,false) \
|
||||
-Dat_command_via_dbus=$(if $(CONFIG_MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS),true,false)
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(1)/usr/include/ModemManager
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/include/ModemManager/*.h $(1)/usr/include/ModemManager
|
||||
$(INSTALL_DIR) $(1)/usr/include/libmm-glib
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/include/libmm-glib/*.h $(1)/usr/include/libmm-glib
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmm-glib.so* $(1)/usr/lib
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/ModemManager.pc $(1)/usr/lib/pkgconfig
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/mm-glib.pc $(1)/usr/lib/pkgconfig
|
||||
endef
|
||||
|
||||
define Package/modemmanager/install
|
||||
$(INSTALL_DIR) $(1)/lib/udev/rules.d
|
||||
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/lib/udev/rules.d/*.rules $(1)/lib/udev/rules.d
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/ModemManager $(1)/usr/sbin
|
||||
$(INSTALL_BIN) ./files/usr/sbin/ModemManager-wrapper $(1)/usr/sbin
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mmcli $(1)/usr/bin
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmm-glib.so.* $(1)/usr/lib
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ModemManager
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/ModemManager/libmm-shared-*.so* $(1)/usr/lib/ModemManager
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/ModemManager/libmm-plugin-*.so* $(1)/usr/lib/ModemManager
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ModemManager/connection.d
|
||||
$(INSTALL_BIN) ./files/10-report-down $(1)/usr/lib/ModemManager/connection.d
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/dbus-1/system.d
|
||||
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/dbus-1/system.d/org.freedesktop.ModemManager1.conf $(1)/etc/dbus-1/system.d
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/share/dbus-1/system-services
|
||||
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/dbus-1/system-services/org.freedesktop.ModemManager1.service $(1)/usr/share/dbus-1/system-services
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/share/ModemManager
|
||||
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/ModemManager/*.conf $(1)/usr/share/ModemManager
|
||||
$(INSTALL_DATA) ./files/modemmanager.common $(1)/usr/share/ModemManager
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/share/ModemManager/fcc-unlock.available.d
|
||||
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/ModemManager/fcc-unlock.available.d/* $(1)/usr/share/ModemManager/fcc-unlock.available.d
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/modemmanager.init $(1)/etc/init.d/modemmanager
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/usb
|
||||
$(INSTALL_DATA) ./files/25-modemmanager-usb $(1)/etc/hotplug.d/usb
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/net
|
||||
$(INSTALL_DATA) ./files/25-modemmanager-net $(1)/etc/hotplug.d/net
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/tty
|
||||
$(INSTALL_DATA) ./files/25-modemmanager-tty $(1)/etc/hotplug.d/tty
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/wwan
|
||||
$(INSTALL_DATA) ./files/25-modemmanager-wwan $(1)/etc/hotplug.d/wwan
|
||||
|
||||
$(INSTALL_DIR) $(1)/lib/netifd/proto
|
||||
$(INSTALL_BIN) ./files/modemmanager.proto $(1)/lib/netifd/proto/modemmanager.sh
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,modemmanager))
|
|
@ -1,40 +0,0 @@
|
|||
# OpenWrt ModemManager
|
||||
|
||||
## Description
|
||||
|
||||
Cellular modem control and connectivity
|
||||
|
||||
Optional libraries libmbim and libqmi are available.
|
||||
Your modem may require additional kernel modules and/or the usb-modeswitch
|
||||
package.
|
||||
|
||||
## Usage
|
||||
|
||||
Once installed, you can configure the 2G/3G/4G modem connections directly in
|
||||
/etc/config/network as in the following example:
|
||||
|
||||
config interface 'broadband'
|
||||
option device '/sys/devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2.1'
|
||||
option proto 'modemmanager'
|
||||
option apn 'ac.vodafone.es'
|
||||
option allowedauth 'pap chap'
|
||||
option username 'vodafone'
|
||||
option password 'vodafone'
|
||||
option pincode '7423'
|
||||
option iptype 'ipv4'
|
||||
option lowpower '1'
|
||||
option signalrate '30'
|
||||
|
||||
Only 'device' and 'proto' are mandatory options, the remaining ones are all
|
||||
optional.
|
||||
|
||||
The 'allowedauth' option allows limiting the list of authentication protocols.
|
||||
It is given as a space-separated list of values, including any of the
|
||||
following: 'pap', 'chap', 'mschap', 'mschapv2' or 'eap'. It will default to
|
||||
allowing all protocols.
|
||||
|
||||
The 'iptype' option supports any of these values: 'ipv4', 'ipv6' or 'ipv4v6'.
|
||||
It will default to 'ipv4' if not given.
|
||||
|
||||
The 'signalrate' option set's the signal refresh rate (in seconds) for the device.
|
||||
You can call signal info with command: mmcli -m 0 --signal-get
|
|
@ -1,35 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
# 2022 Aleksander Morgado <aleksander@aleksander.es>
|
||||
#
|
||||
# Automatically report to netifd that the underlying modem
|
||||
# is really disconnected
|
||||
#
|
||||
# require program name and at least 4 arguments
|
||||
[ $# -lt 4 ] && exit 1
|
||||
|
||||
MODEM_PATH="$1"
|
||||
BEARER_PATH="$2"
|
||||
INTERFACE="$3"
|
||||
STATE="$4"
|
||||
|
||||
[ "${STATE}" = "disconnected" ] || exit 0
|
||||
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
. /lib/netifd/netifd-proto.sh
|
||||
INCLUDE_ONLY=1 . /lib/netifd/proto/modemmanager.sh
|
||||
|
||||
MODEM_STATUS=$(mmcli --modem="${MODEM_PATH}" --output-keyvalue)
|
||||
[ -n "${MODEM_STATUS}" ] || exit 1
|
||||
|
||||
MODEM_DEVICE=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.device")
|
||||
[ -n "${MODEM_DEVICE}" ] || exit 2
|
||||
|
||||
CFG=$(mm_get_modem_config "${MODEM_DEVICE}")
|
||||
[ -n "${CFG}" ] || exit 3
|
||||
|
||||
logger -t "modemmanager" "interface ${CFG} (network device ${INTERFACE}) ${STATE}"
|
||||
proto_init_update $INTERFACE 0
|
||||
proto_send_update $CFG
|
||||
exit 0
|
|
@ -1,31 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2016 Velocloud Inc
|
||||
# Copyright (C) 2016 Aleksander Morgado <aleksander@aleksander.es>
|
||||
|
||||
# Load common utilities
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
|
||||
# We require a interface name
|
||||
[ -n "${INTERFACE}" ] || exit
|
||||
|
||||
# Always make sure the rundir exists
|
||||
mkdir -m 0755 -p "${MODEMMANAGER_RUNDIR}"
|
||||
|
||||
# Report network interface
|
||||
mm_log "info" "${ACTION} network interface ${INTERFACE}: event processed"
|
||||
mm_report_event "${ACTION}" "${INTERFACE}" "net" "/sys${DEVPATH}"
|
||||
|
||||
# Look for an associated cdc-wdm interface
|
||||
|
||||
cdcwdm=""
|
||||
|
||||
case "${ACTION}" in
|
||||
"add") cdcwdm=$(mm_track_cdcwdm "${INTERFACE}") ;;
|
||||
"remove") cdcwdm=$(mm_untrack_cdcwdm "${INTERFACE}") ;;
|
||||
esac
|
||||
|
||||
# Report cdc-wdm device, if any
|
||||
[ -n "${cdcwdm}" ] && {
|
||||
mm_log "info" "${ACTION} cdc interface ${cdcwdm}: custom event processed"
|
||||
mm_report_event "${ACTION}" "${cdcwdm}" "usbmisc" "/sys${DEVPATH}"
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2016 Velocloud Inc
|
||||
# Copyright (C) 2016 Aleksander Morgado <aleksander@aleksander.es>
|
||||
|
||||
# Load hotplug common utilities
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
|
||||
# We require a device name
|
||||
[ -n "$DEVNAME" ] || exit
|
||||
|
||||
# Always make sure the rundir exists
|
||||
mkdir -m 0755 -p "${MODEMMANAGER_RUNDIR}"
|
||||
|
||||
# Report TTY
|
||||
mm_log "info" "${ACTION} serial interface ${DEVNAME}: event processed"
|
||||
mm_report_event "${ACTION}" "${DEVNAME}" "tty" "/sys${DEVPATH}"
|
|
@ -1,13 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2019 Aleksander Morgado <aleksander@aleksander.es>
|
||||
|
||||
# We need to process only full USB device removal events, we don't
|
||||
# want to process specific interface removal events.
|
||||
[ "$ACTION" = remove ] || exit
|
||||
[ -z "${INTERFACE}" ] || exit
|
||||
|
||||
# Load common utilities
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
|
||||
mm_clear_modem_wait_status "/sys${DEVPATH}"
|
||||
mm_cleanup_interface_by_sysfspath "/sys${DEVPATH}"
|
|
@ -1,15 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2021 Aleksander Morgado <aleksander@aleksander.es>
|
||||
|
||||
# Load hotplug common utilities
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
|
||||
# We require a device name
|
||||
[ -n "$DEVNAME" ] || exit
|
||||
|
||||
# Always make sure the rundir exists
|
||||
mkdir -m 0755 -p "${MODEMMANAGER_RUNDIR}"
|
||||
|
||||
# Report wwan
|
||||
mm_log "info" "${ACTION} wwan control port ${DEVNAME}: event processed"
|
||||
mm_report_event "${ACTION}" "${DEVNAME}" "wwan" "/sys${DEVPATH}"
|
|
@ -1,349 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2016 Velocloud Inc
|
||||
# Copyright (C) 2016 Aleksander Morgado <aleksander@aleksander.es>
|
||||
|
||||
################################################################################
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/netifd/netifd-proto.sh
|
||||
|
||||
################################################################################
|
||||
# Runtime state
|
||||
|
||||
MODEMMANAGER_RUNDIR="/var/run/modemmanager"
|
||||
MODEMMANAGER_PID_FILE="${MODEMMANAGER_RUNDIR}/modemmanager.pid"
|
||||
MODEMMANAGER_CDCWDM_CACHE="${MODEMMANAGER_RUNDIR}/cdcwdm.cache"
|
||||
MODEMMANAGER_SYSFS_CACHE="${MODEMMANAGER_RUNDIR}/sysfs.cache"
|
||||
MODEMMANAGER_EVENTS_CACHE="${MODEMMANAGER_RUNDIR}/events.cache"
|
||||
|
||||
################################################################################
|
||||
# Common logging
|
||||
|
||||
mm_log() {
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && logger -t "ModemManager" "hotplug: $*"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Receives as input argument the full sysfs path of the device
|
||||
# Returns the physical device sysfs path
|
||||
#
|
||||
# NOTE: this method only works when the device exists, i.e. it cannot be used
|
||||
# on removal hotplug events
|
||||
|
||||
mm_find_physdev_sysfs_path() {
|
||||
local tmp_path="$1"
|
||||
|
||||
while true; do
|
||||
tmp_path=$(dirname "${tmp_path}")
|
||||
|
||||
# avoid infinite loops iterating
|
||||
[ -z "${tmp_path}" ] || [ "${tmp_path}" = "/" ] && return
|
||||
|
||||
# for USB devices, the physical device will be that with a idVendor
|
||||
# and idProduct pair of files
|
||||
[ -f "${tmp_path}"/idVendor ] && [ -f "${tmp_path}"/idProduct ] && {
|
||||
tmp_path=$(readlink -f "$tmp_path")
|
||||
echo "${tmp_path}"
|
||||
return
|
||||
}
|
||||
|
||||
# For PCI devices, the physical device will be that with a vendor
|
||||
# and device pair of files
|
||||
[ -f "${tmp_path}"/vendor ] && [ -f "${tmp_path}"/device ] && {
|
||||
tmp_path=$(readlink -f "$tmp_path")
|
||||
echo "${tmp_path}"
|
||||
return
|
||||
}
|
||||
done
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
||||
# Returns the cdc-wdm name retrieved from sysfs
|
||||
mm_track_cdcwdm() {
|
||||
local wwan="$1"
|
||||
local cdcwdm
|
||||
|
||||
cdcwdm=$(ls "/sys/class/net/${wwan}/device/usbmisc/")
|
||||
[ -n "${cdcwdm}" ] || return
|
||||
|
||||
# We have to cache it for later, as we won't be able to get the
|
||||
# associated cdc-wdm device on a remove event
|
||||
echo "${wwan} ${cdcwdm}" >> "${MODEMMANAGER_CDCWDM_CACHE}"
|
||||
|
||||
echo "${cdcwdm}"
|
||||
}
|
||||
|
||||
# Returns the cdc-wdm name retrieved from the cache
|
||||
mm_untrack_cdcwdm() {
|
||||
local wwan="$1"
|
||||
local cdcwdm
|
||||
|
||||
# Look for the cached associated cdc-wdm device
|
||||
[ -f "${MODEMMANAGER_CDCWDM_CACHE}" ] || return
|
||||
|
||||
cdcwdm=$(awk -v wwan="${wwan}" '!/^#/ && $0 ~ wwan { print $2 }' "${MODEMMANAGER_CDCWDM_CACHE}")
|
||||
[ -n "${cdcwdm}" ] || return
|
||||
|
||||
# Remove from cache
|
||||
sed -i "/${wwan} ${cdcwdm}/d" "${MODEMMANAGER_CDCWDM_CACHE}"
|
||||
|
||||
echo "${cdcwdm}"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# ModemManager needs some time from the ports being added until a modem object
|
||||
# is exposed in DBus. With the logic here we do an explicit wait of N seconds
|
||||
# for ModemManager to expose the new modem object, making sure that the wait is
|
||||
# unique per device (i.e. per physical device sysfs path).
|
||||
|
||||
# Gets the modem wait status as retrieved from the cache
|
||||
mm_get_modem_wait_status() {
|
||||
local sysfspath="$1"
|
||||
|
||||
# If no sysfs cache file, we're done
|
||||
[ -f "${MODEMMANAGER_SYSFS_CACHE}" ] || return
|
||||
|
||||
# Get status of the sysfs path
|
||||
awk -v sysfspath="${sysfspath}" '!/^#/ && $0 ~ sysfspath { print $2 }' "${MODEMMANAGER_SYSFS_CACHE}"
|
||||
}
|
||||
|
||||
# Clear the modem wait status from the cache, if any
|
||||
mm_clear_modem_wait_status() {
|
||||
local sysfspath="$1"
|
||||
|
||||
local escaped_sysfspath
|
||||
|
||||
[ -f "${MODEMMANAGER_SYSFS_CACHE}" ] && {
|
||||
# escape '/', '\' and '&' for sed...
|
||||
escaped_sysfspath=$(echo "$sysfspath" | sed -e 's/[\/&]/\\&/g')
|
||||
sed -i "/${escaped_sysfspath}/d" "${MODEMMANAGER_SYSFS_CACHE}"
|
||||
}
|
||||
}
|
||||
|
||||
# Sets the modem wait status in the cache
|
||||
mm_set_modem_wait_status() {
|
||||
local sysfspath="$1"
|
||||
local status="$2"
|
||||
|
||||
# Remove sysfs line before adding the new one with the new state
|
||||
mm_clear_modem_wait_status "${sysfspath}"
|
||||
|
||||
# Add the new status
|
||||
echo "${sysfspath} ${status}" >> "${MODEMMANAGER_SYSFS_CACHE}"
|
||||
}
|
||||
|
||||
# Callback for config_foreach()
|
||||
mm_get_modem_config_foreach_cb() {
|
||||
local cfg="$1"
|
||||
local sysfspath="$2"
|
||||
|
||||
local proto
|
||||
config_get proto "${cfg}" proto
|
||||
[ "${proto}" = modemmanager ] || return 0
|
||||
|
||||
local dev
|
||||
dev=$(uci_get network "${cfg}" device)
|
||||
[ "${dev}" = "${sysfspath}" ] || return 0
|
||||
|
||||
echo "${cfg}"
|
||||
}
|
||||
|
||||
# Returns the name of the interface configured for this device
|
||||
mm_get_modem_config() {
|
||||
local sysfspath="$1"
|
||||
|
||||
# Look for configuration for the given sysfs path
|
||||
config_load network
|
||||
config_foreach mm_get_modem_config_foreach_cb interface "${sysfspath}"
|
||||
}
|
||||
|
||||
# Wait for a modem in the specified sysfspath
|
||||
mm_wait_for_modem() {
|
||||
local cfg="$1"
|
||||
local sysfspath="$2"
|
||||
|
||||
# TODO: config max wait
|
||||
local n=45
|
||||
local step=5
|
||||
|
||||
while [ $n -ge 0 ]; do
|
||||
[ -d "${sysfspath}" ] || {
|
||||
mm_log "error: ignoring modem detection request: no device at ${sysfspath}"
|
||||
proto_set_available "${cfg}" 0
|
||||
return 1
|
||||
}
|
||||
|
||||
# Check if the modem exists at the given sysfs path
|
||||
if ! mmcli -m "${sysfspath}" > /dev/null 2>&1
|
||||
then
|
||||
mm_log "error: modem not detected at sysfs path"
|
||||
else
|
||||
mm_log "modem exported successfully at ${sysfspath}"
|
||||
mm_log "setting interface '${cfg}' as available"
|
||||
proto_set_available "${cfg}" 1
|
||||
return 0
|
||||
fi
|
||||
|
||||
sleep $step
|
||||
n=$((n-step))
|
||||
done
|
||||
|
||||
mm_log "error: timed out waiting for the modem to get exported at ${sysfspath}"
|
||||
proto_set_available "${cfg}" 0
|
||||
return 2
|
||||
}
|
||||
|
||||
mm_report_modem_wait() {
|
||||
local sysfspath=$1
|
||||
|
||||
local parent_sysfspath status
|
||||
|
||||
parent_sysfspath=$(mm_find_physdev_sysfs_path "$sysfspath")
|
||||
[ -n "${parent_sysfspath}" ] || {
|
||||
mm_log "error: parent device sysfspath not found"
|
||||
return
|
||||
}
|
||||
|
||||
status=$(mm_get_modem_wait_status "${parent_sysfspath}")
|
||||
case "${status}" in
|
||||
"")
|
||||
local cfg
|
||||
|
||||
cfg=$(mm_get_modem_config "${parent_sysfspath}")
|
||||
if [ -n "${cfg}" ]; then
|
||||
mm_log "interface '${cfg}' is set to configure device '${parent_sysfspath}'"
|
||||
mm_log "now waiting for modem at sysfs path ${parent_sysfspath}"
|
||||
mm_set_modem_wait_status "${parent_sysfspath}" "processed"
|
||||
# Launch subshell for the explicit wait
|
||||
( mm_wait_for_modem "${cfg}" "${parent_sysfspath}" ) > /dev/null 2>&1 &
|
||||
else
|
||||
mm_log "no need to wait for modem at sysfs path ${parent_sysfspath}"
|
||||
mm_set_modem_wait_status "${parent_sysfspath}" "ignored"
|
||||
fi
|
||||
;;
|
||||
"processed")
|
||||
mm_log "already waiting for modem at sysfs path ${parent_sysfspath}"
|
||||
;;
|
||||
"ignored")
|
||||
;;
|
||||
*)
|
||||
mm_log "error: unknown status read for device at sysfs path ${parent_sysfspath}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Cleanup interfaces
|
||||
|
||||
mm_cleanup_interface_cb() {
|
||||
local cfg="$1"
|
||||
|
||||
local proto
|
||||
config_get proto "${cfg}" proto
|
||||
[ "${proto}" = modemmanager ] || return 0
|
||||
|
||||
proto_set_available "${cfg}" 0
|
||||
}
|
||||
|
||||
mm_cleanup_interfaces() {
|
||||
config_load network
|
||||
config_foreach mm_cleanup_interface_cb interface
|
||||
}
|
||||
|
||||
mm_cleanup_interface_by_sysfspath() {
|
||||
local dev="$1"
|
||||
|
||||
local cfg
|
||||
cfg=$(mm_get_modem_config "$dev")
|
||||
[ -n "${cfg}" ] || return
|
||||
|
||||
mm_log "setting interface '$cfg' as unavailable"
|
||||
proto_set_available "${cfg}" 0
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Event reporting
|
||||
|
||||
# Receives as input the action, the device name and the subsystem
|
||||
mm_report_event() {
|
||||
local action="$1"
|
||||
local name="$2"
|
||||
local subsystem="$3"
|
||||
local sysfspath="$4"
|
||||
|
||||
# Do not save virtual devices
|
||||
local virtual
|
||||
virtual="$(echo "$sysfspath" | cut -d'/' -f4)"
|
||||
[ "$virtual" = "virtual" ] && {
|
||||
mm_log "debug" "sysfspath is a virtual device ($sysfspath)"
|
||||
return
|
||||
}
|
||||
|
||||
# Track/untrack events in cache
|
||||
case "${action}" in
|
||||
"add")
|
||||
# On add events, store event details in cache (if not exists yet)
|
||||
grep -qs "${name},${subsystem}" "${MODEMMANAGER_EVENTS_CACHE}" || \
|
||||
echo "${action},${name},${subsystem},${sysfspath}" >> "${MODEMMANAGER_EVENTS_CACHE}"
|
||||
;;
|
||||
"remove")
|
||||
# On remove events, remove old events from cache (match by subsystem+name)
|
||||
sed -i "/${name},${subsystem}/d" "${MODEMMANAGER_EVENTS_CACHE}"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Report the event
|
||||
mm_log "event reported: action=${action}, name=${name}, subsystem=${subsystem}"
|
||||
mmcli --report-kernel-event="action=${action},name=${name},subsystem=${subsystem}" 1>/dev/null 2>&1 &
|
||||
|
||||
# Wait for added modem if a sysfspath is given
|
||||
[ -n "${sysfspath}" ] && [ "$action" = "add" ] && mm_report_modem_wait "${sysfspath}"
|
||||
}
|
||||
|
||||
mm_report_event_from_cache_line() {
|
||||
local event_line="$1"
|
||||
|
||||
local action name subsystem sysfspath
|
||||
action=$(echo "${event_line}" | awk -F ',' '{ print $1 }')
|
||||
name=$(echo "${event_line}" | awk -F ',' '{ print $2 }')
|
||||
subsystem=$(echo "${event_line}" | awk -F ',' '{ print $3 }')
|
||||
sysfspath=$(echo "${event_line}" | awk -F ',' '{ print $4 }')
|
||||
|
||||
mm_log "cached event found: action=${action}, name=${name}, subsystem=${subsystem}, sysfspath=${sysfspath}"
|
||||
mm_report_event "${action}" "${name}" "${subsystem}" "${sysfspath}"
|
||||
}
|
||||
|
||||
mm_report_events_from_cache() {
|
||||
# Remove the sysfs cache
|
||||
rm -f "${MODEMMANAGER_SYSFS_CACHE}"
|
||||
|
||||
local n=60
|
||||
local step=1
|
||||
local mmrunning=0
|
||||
|
||||
# Wait for ModemManager to be available in the bus
|
||||
while [ $n -ge 0 ]; do
|
||||
sleep $step
|
||||
mm_log "checking if ModemManager is available..."
|
||||
|
||||
if ! mmcli -L >/dev/null 2>&1
|
||||
then
|
||||
mm_log "ModemManager not yet available"
|
||||
else
|
||||
mmrunning=1
|
||||
break
|
||||
fi
|
||||
n=$((n-step))
|
||||
done
|
||||
|
||||
[ ${mmrunning} -eq 1 ] || {
|
||||
mm_log "error: couldn't report initial kernel events: ModemManager not running"
|
||||
return
|
||||
}
|
||||
|
||||
# Report cached kernel events
|
||||
while IFS= read -r event_line; do
|
||||
mm_report_event_from_cache_line "${event_line}"
|
||||
done < ${MODEMMANAGER_EVENTS_CACHE}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2016 Aleksander Morgado <aleksander@aleksander.es>
|
||||
|
||||
USE_PROCD=1
|
||||
START=70
|
||||
|
||||
stop_service() {
|
||||
# Load common utils
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
# Set all configured interfaces as unavailable
|
||||
mm_cleanup_interfaces
|
||||
}
|
||||
|
||||
start_service() {
|
||||
# Setup ModemManager service
|
||||
#
|
||||
# We will make sure that the rundir always exists, and we initially cleanup
|
||||
# all interfaces flagging them as unavailable.
|
||||
#
|
||||
# The cached events processing will wait for MM to be available in DBus
|
||||
# and will make sure all ports are re-notified to ModemManager every time
|
||||
# it starts.
|
||||
#
|
||||
# All these commands need to be executed on every MM start, even after
|
||||
# procd-triggered respawns, which is why this is wrapped in a startup
|
||||
# wrapper script called '/usr/sbin/ModemManager-wrapper'.
|
||||
#
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
procd_open_instance
|
||||
procd_set_param command /usr/sbin/ModemManager-wrapper
|
||||
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
|
||||
procd_set_param pidfile "${MODEMMANAGER_PID_FILE}"
|
||||
procd_close_instance
|
||||
}
|
|
@ -1,576 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2016-2019 Aleksander Morgado <aleksander@aleksander.es>
|
||||
|
||||
[ -x /usr/bin/mmcli ] || exit 0
|
||||
[ -x /usr/sbin/pppd ] || exit 0
|
||||
|
||||
[ -n "$INCLUDE_ONLY" ] || {
|
||||
. /lib/functions.sh
|
||||
. ../netifd-proto.sh
|
||||
. ./ppp.sh
|
||||
init_proto "$@"
|
||||
}
|
||||
|
||||
cdr2mask ()
|
||||
{
|
||||
# Number of args to shift, 255..255, first non-255 byte, zeroes
|
||||
set -- $(( 5 - ($1 / 8) )) 255 255 255 255 $(( (255 << (8 - ($1 % 8))) & 255 )) 0 0 0
|
||||
if [ "$1" -gt 1 ]
|
||||
then
|
||||
shift "$1"
|
||||
else
|
||||
shift
|
||||
fi
|
||||
echo "${1-0}"."${2-0}"."${3-0}"."${4-0}"
|
||||
}
|
||||
|
||||
# This method expects as first argument a list of key-value pairs, as returned by mmcli --output-keyvalue
|
||||
# The second argument must be exactly the name of the field to read
|
||||
#
|
||||
# Sample output:
|
||||
# $ mmcli -m 0 -K
|
||||
# modem.dbus-path : /org/freedesktop/ModemManager1/Modem/0
|
||||
# modem.generic.device-identifier : ed6eff2e3e0f90463da1c2a755b2acacd1335752
|
||||
# modem.generic.manufacturer : Dell Inc.
|
||||
# modem.generic.model : DW5821e Snapdragon X20 LTE
|
||||
# modem.generic.revision : T77W968.F1.0.0.4.0.GC.009\n026
|
||||
# modem.generic.carrier-configuration : GCF
|
||||
# modem.generic.carrier-configuration-revision : 08E00009
|
||||
# modem.generic.hardware-revision : DW5821e Snapdragon X20 LTE
|
||||
# ....
|
||||
modemmanager_get_field() {
|
||||
local list=$1
|
||||
local field=$2
|
||||
local value=""
|
||||
|
||||
[ -z "${list}" ] || [ -z "${field}" ] && return
|
||||
|
||||
# there is always at least a whitespace after each key, and we use that as part of the
|
||||
# key matching we do (e.g. to avoid getting 'modem.generic.state-failed-reason' as a result
|
||||
# when grepping for 'modem.generic.state'.
|
||||
line=$(echo "${list}" | grep "${field} ")
|
||||
value=$(echo ${line#*:})
|
||||
|
||||
# not found?
|
||||
[ -n "${value}" ] || return 2
|
||||
|
||||
# only print value if set
|
||||
[ "${value}" != "--" ] && echo "${value}"
|
||||
return 0
|
||||
}
|
||||
|
||||
# build a comma-separated list of values from the list
|
||||
modemmanager_get_multivalue_field() {
|
||||
local list=$1
|
||||
local field=$2
|
||||
local value=""
|
||||
local length idx item
|
||||
|
||||
[ -z "${list}" ] || [ -z "${field}" ] && return
|
||||
|
||||
length=$(modemmanager_get_field "${list}" "${field}.length")
|
||||
[ -n "${length}" ] || return 0
|
||||
[ "$length" -ge 1 ] || return 0
|
||||
|
||||
idx=1
|
||||
while [ $idx -le "$length" ]; do
|
||||
item=$(modemmanager_get_field "${list}" "${field}.value\[$idx\]")
|
||||
[ -n "${item}" ] && [ "${item}" != "--" ] && {
|
||||
[ -n "${value}" ] && value="${value}, "
|
||||
value="${value}${item}"
|
||||
}
|
||||
idx=$((idx + 1))
|
||||
done
|
||||
|
||||
# nothing built?
|
||||
[ -n "${value}" ] || return 2
|
||||
|
||||
# only print value if set
|
||||
echo "${value}"
|
||||
return 0
|
||||
}
|
||||
|
||||
modemmanager_cleanup_connection() {
|
||||
local modemstatus="$1"
|
||||
|
||||
local bearercount idx bearerpath
|
||||
|
||||
bearercount=$(modemmanager_get_field "${modemstatus}" "modem.generic.bearers.length")
|
||||
|
||||
# do nothing if no bearers reported
|
||||
[ -n "${bearercount}" ] && [ "$bearercount" -ge 1 ] && {
|
||||
# explicitly disconnect just in case
|
||||
mmcli --modem="${device}" --simple-disconnect >/dev/null 2>&1
|
||||
# and remove all bearer objects, if any found
|
||||
idx=1
|
||||
while [ $idx -le "$bearercount" ]; do
|
||||
bearerpath=$(modemmanager_get_field "${modemstatus}" "modem.generic.bearers.value\[$idx\]")
|
||||
mmcli --modem "${device}" --delete-bearer="${bearerpath}" >/dev/null 2>&1
|
||||
idx=$((idx + 1))
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
modemmanager_connected_method_ppp_ipv4() {
|
||||
local interface="$1"
|
||||
local ttyname="$2"
|
||||
local username="$3"
|
||||
local password="$4"
|
||||
local allowedauth="$5"
|
||||
|
||||
# all auth types are allowed unless a user given list is given
|
||||
local authopts
|
||||
local pap=1
|
||||
local chap=1
|
||||
local mschap=1
|
||||
local mschapv2=1
|
||||
local eap=1
|
||||
|
||||
[ -n "$allowedauth" ] && {
|
||||
pap=0 chap=0 mschap=0 mschapv2=0 eap=0
|
||||
for auth in $allowedauth; do
|
||||
case $auth in
|
||||
"pap") pap=1 ;;
|
||||
"chap") chap=1 ;;
|
||||
"mschap") mschap=1 ;;
|
||||
"mschapv2") mschapv2=1 ;;
|
||||
"eap") eap=1 ;;
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
[ $pap -eq 1 ] || append authopts "refuse-pap"
|
||||
[ $chap -eq 1 ] || append authopts "refuse-chap"
|
||||
[ $mschap -eq 1 ] || append authopts "refuse-mschap"
|
||||
[ $mschapv2 -eq 1 ] || append authopts "refuse-mschap-v2"
|
||||
[ $eap -eq 1 ] || append authopts "refuse-eap"
|
||||
|
||||
proto_run_command "${interface}" /usr/sbin/pppd \
|
||||
"${ttyname}" \
|
||||
115200 \
|
||||
nodetach \
|
||||
noaccomp \
|
||||
nobsdcomp \
|
||||
nopcomp \
|
||||
novj \
|
||||
noauth \
|
||||
$authopts \
|
||||
${username:+ user "$username"} \
|
||||
${password:+ password "$password"} \
|
||||
lcp-echo-failure 5 \
|
||||
lcp-echo-interval 15 \
|
||||
lock \
|
||||
crtscts \
|
||||
nodefaultroute \
|
||||
usepeerdns \
|
||||
ipparam "${interface}" \
|
||||
ip-up-script /lib/netifd/ppp-up \
|
||||
ip-down-script /lib/netifd/ppp-down
|
||||
}
|
||||
|
||||
modemmanager_disconnected_method_ppp_ipv4() {
|
||||
local interface="$1"
|
||||
|
||||
echo "running disconnection (ppp method)"
|
||||
|
||||
[ -n "${ERROR}" ] && {
|
||||
local errorstring
|
||||
errorstring=$(ppp_exitcode_tostring "${ERROR}")
|
||||
case "$ERROR" in
|
||||
0)
|
||||
;;
|
||||
2)
|
||||
proto_notify_error "$interface" "$errorstring"
|
||||
proto_block_restart "$interface"
|
||||
;;
|
||||
*)
|
||||
proto_notify_error "$interface" "$errorstring"
|
||||
;;
|
||||
esac
|
||||
} || echo "pppd result code not given"
|
||||
|
||||
proto_kill_command "$interface"
|
||||
}
|
||||
|
||||
modemmanager_connected_method_dhcp_ipv4() {
|
||||
local interface="$1"
|
||||
local wwan="$2"
|
||||
local metric="$3"
|
||||
|
||||
proto_init_update "${wwan}" 1
|
||||
proto_set_keep 1
|
||||
proto_send_update "${interface}"
|
||||
|
||||
json_init
|
||||
json_add_string name "${interface}_4"
|
||||
json_add_string ifname "@${interface}"
|
||||
json_add_string proto "dhcp"
|
||||
proto_add_dynamic_defaults
|
||||
[ -n "$metric" ] && json_add_int metric "${metric}"
|
||||
json_close_object
|
||||
ubus call network add_dynamic "$(json_dump)"
|
||||
}
|
||||
|
||||
modemmanager_connected_method_static_ipv4() {
|
||||
local interface="$1"
|
||||
local wwan="$2"
|
||||
local address="$3"
|
||||
local prefix="$4"
|
||||
local gateway="$5"
|
||||
local mtu="$6"
|
||||
local dns1="$7"
|
||||
local dns2="$8"
|
||||
local metric="$9"
|
||||
|
||||
local mask=""
|
||||
|
||||
[ -n "${address}" ] || {
|
||||
proto_notify_error "${interface}" ADDRESS_MISSING
|
||||
return
|
||||
}
|
||||
|
||||
[ -n "${prefix}" ] || {
|
||||
proto_notify_error "${interface}" PREFIX_MISSING
|
||||
return
|
||||
}
|
||||
mask=$(cdr2mask "${prefix}")
|
||||
|
||||
[ -n "${mtu}" ] && /sbin/ip link set dev "${wwan}" mtu "${mtu}"
|
||||
|
||||
proto_init_update "${wwan}" 1
|
||||
proto_set_keep 1
|
||||
echo "adding IPv4 address ${address}, netmask ${mask}"
|
||||
proto_add_ipv4_address "${address}" "${mask}"
|
||||
[ -n "${gateway}" ] && {
|
||||
echo "adding default IPv4 route via ${gateway}"
|
||||
proto_add_ipv4_route "0.0.0.0" "0" "${gateway}" "${address}"
|
||||
}
|
||||
[ -n "${dns1}" ] && {
|
||||
echo "adding primary DNS at ${dns1}"
|
||||
proto_add_dns_server "${dns1}"
|
||||
}
|
||||
[ -n "${dns2}" ] && {
|
||||
echo "adding secondary DNS at ${dns2}"
|
||||
proto_add_dns_server "${dns2}"
|
||||
}
|
||||
[ -n "$metric" ] && json_add_int metric "${metric}"
|
||||
proto_send_update "${interface}"
|
||||
}
|
||||
|
||||
modemmanager_connected_method_dhcp_ipv6() {
|
||||
local interface="$1"
|
||||
local wwan="$2"
|
||||
local metric="$3"
|
||||
|
||||
proto_init_update "${wwan}" 1
|
||||
proto_set_keep 1
|
||||
proto_send_update "${interface}"
|
||||
|
||||
json_init
|
||||
json_add_string name "${interface}_6"
|
||||
json_add_string ifname "@${interface}"
|
||||
json_add_string proto "dhcpv6"
|
||||
proto_add_dynamic_defaults
|
||||
json_add_string extendprefix 1 # RFC 7278: Extend an IPv6 /64 Prefix to LAN
|
||||
[ -n "$metric" ] && json_add_int metric "${metric}"
|
||||
json_close_object
|
||||
ubus call network add_dynamic "$(json_dump)"
|
||||
}
|
||||
|
||||
modemmanager_connected_method_static_ipv6() {
|
||||
local interface="$1"
|
||||
local wwan="$2"
|
||||
local address="$3"
|
||||
local prefix="$4"
|
||||
local gateway="$5"
|
||||
local mtu="$6"
|
||||
local dns1="$7"
|
||||
local dns2="$8"
|
||||
local metric="$9"
|
||||
|
||||
[ -n "${address}" ] || {
|
||||
proto_notify_error "${interface}" ADDRESS_MISSING
|
||||
return
|
||||
}
|
||||
|
||||
[ -n "${prefix}" ] || {
|
||||
proto_notify_error "${interface}" PREFIX_MISSING
|
||||
return
|
||||
}
|
||||
|
||||
[ -n "${mtu}" ] && /sbin/ip link set dev "${wwan}" mtu "${mtu}"
|
||||
|
||||
proto_init_update "${wwan}" 1
|
||||
proto_set_keep 1
|
||||
echo "adding IPv6 address ${address}, prefix ${prefix}"
|
||||
proto_add_ipv6_address "${address}" "128"
|
||||
proto_add_ipv6_prefix "${address}/${prefix}"
|
||||
[ -n "${gateway}" ] && {
|
||||
echo "adding default IPv6 route via ${gateway}"
|
||||
proto_add_ipv6_route "${gateway}" "128"
|
||||
proto_add_ipv6_route "::0" "0" "${gateway}" "" "" "${address}/${prefix}"
|
||||
}
|
||||
[ -n "${dns1}" ] && {
|
||||
echo "adding primary DNS at ${dns1}"
|
||||
proto_add_dns_server "${dns1}"
|
||||
}
|
||||
[ -n "${dns2}" ] && {
|
||||
echo "adding secondary DNS at ${dns2}"
|
||||
proto_add_dns_server "${dns2}"
|
||||
}
|
||||
[ -n "$metric" ] && json_add_int metric "${metric}"
|
||||
proto_send_update "${interface}"
|
||||
}
|
||||
|
||||
modemmanager_disconnected_method_common() {
|
||||
local interface="$1"
|
||||
|
||||
echo "running disconnection (common)"
|
||||
proto_notify_error "${interface}" MM_DISCONNECT_IN_PROGRESS
|
||||
|
||||
proto_init_update "*" 0
|
||||
proto_send_update "${interface}"
|
||||
}
|
||||
|
||||
proto_modemmanager_init_config() {
|
||||
available=1
|
||||
no_device=1
|
||||
proto_config_add_string device
|
||||
proto_config_add_string apn
|
||||
proto_config_add_string 'allowedauth:list(string)'
|
||||
proto_config_add_string username
|
||||
proto_config_add_string password
|
||||
proto_config_add_string pincode
|
||||
proto_config_add_string iptype
|
||||
proto_config_add_string plmn
|
||||
proto_config_add_int signalrate
|
||||
proto_config_add_boolean lowpower
|
||||
proto_config_add_boolean allow_roaming
|
||||
proto_config_add_defaults
|
||||
}
|
||||
|
||||
# Append param to the global 'connectargs' variable.
|
||||
append_param() {
|
||||
local param="$1"
|
||||
|
||||
[ -z "$param" ] && return
|
||||
[ -z "$connectargs" ] || connectargs="${connectargs},"
|
||||
connectargs="${connectargs}${param}"
|
||||
}
|
||||
|
||||
proto_modemmanager_setup() {
|
||||
local interface="$1"
|
||||
|
||||
local modempath modemstatus bearercount bearerpath connectargs bearerstatus beareriface
|
||||
local bearermethod_ipv4 bearermethod_ipv6 auth cliauth
|
||||
local operatorname operatorid registration accesstech signalquality
|
||||
|
||||
local device apn allowedauth username password pincode iptype plmn metric signalrate allow_roaming
|
||||
|
||||
local address prefix gateway mtu dns1 dns2
|
||||
|
||||
json_get_vars device apn allowedauth username password pincode iptype plmn metric signalrate allow_roaming
|
||||
|
||||
# validate sysfs path given in config
|
||||
[ -n "${device}" ] || {
|
||||
echo "No device specified"
|
||||
proto_notify_error "${interface}" NO_DEVICE
|
||||
proto_set_available "${interface}" 0
|
||||
return 1
|
||||
}
|
||||
|
||||
# validate that ModemManager is handling the modem at the sysfs path
|
||||
modemstatus=$(mmcli --modem="${device}" --output-keyvalue)
|
||||
modempath=$(modemmanager_get_field "${modemstatus}" "modem.dbus-path")
|
||||
[ -n "${modempath}" ] || {
|
||||
echo "Device not managed by ModemManager"
|
||||
proto_notify_error "${interface}" DEVICE_NOT_MANAGED
|
||||
proto_set_available "${interface}" 0
|
||||
return 1
|
||||
}
|
||||
echo "modem available at ${modempath}"
|
||||
|
||||
# always cleanup before attempting a new connection, just in case
|
||||
modemmanager_cleanup_connection "${modemstatus}"
|
||||
|
||||
# if allowedauth list given, build option string
|
||||
for auth in $allowedauth; do
|
||||
cliauth="${cliauth}${cliauth:+|}$auth"
|
||||
done
|
||||
|
||||
# setup connect args; APN mandatory (even if it may be empty)
|
||||
echo "starting connection with apn '${apn}'..."
|
||||
proto_notify_error "${interface}" MM_CONNECT_IN_PROGRESS
|
||||
|
||||
# setup allow-roaming parameter
|
||||
if [ -n "${allow_roaming}" ] && [ "${allow_roaming}" -eq 0 ];then
|
||||
allow_roaming="no"
|
||||
else
|
||||
# allowed unless a user set the opposite
|
||||
allow_roaming="yes"
|
||||
fi
|
||||
|
||||
# Append options to 'connectargs' variable
|
||||
append_param "apn=${apn}"
|
||||
append_param "allow-roaming=${allow_roaming}"
|
||||
append_param "${iptype:+ip-type=${iptype}}"
|
||||
append_param "${plmn:+operator-id=${plmn}}"
|
||||
append_param "${cliauth:+allowed-auth=${cliauth}}"
|
||||
append_param "${username:+user=${username}}"
|
||||
append_param "${password:+password=${password}}"
|
||||
append_param "${pincode:+pin=${pincode}}"
|
||||
|
||||
mmcli --modem="${device}" --timeout 120 --simple-connect="${connectargs}" || {
|
||||
proto_notify_error "${interface}" MM_CONNECT_FAILED
|
||||
proto_block_restart "${interface}"
|
||||
return 1
|
||||
}
|
||||
|
||||
# check if Signal refresh rate is set
|
||||
if [ -n "${signalrate}" ] && [ "${signalrate}" -eq "${signalrate}" ] 2>/dev/null; then
|
||||
echo "setting signal refresh rate to ${signalrate} seconds"
|
||||
mmcli --modem="${device}" --signal-setup="${signalrate}"
|
||||
else
|
||||
echo "signal refresh rate is not set"
|
||||
fi
|
||||
|
||||
# log additional useful information
|
||||
modemstatus=$(mmcli --modem="${device}" --output-keyvalue)
|
||||
operatorname=$(modemmanager_get_field "${modemstatus}" "modem.3gpp.operator-name")
|
||||
[ -n "${operatorname}" ] && echo "network operator name: ${operatorname}"
|
||||
operatorid=$(modemmanager_get_field "${modemstatus}" "modem.3gpp.operator-code")
|
||||
[ -n "${operatorid}" ] && echo "network operator MCCMNC: ${operatorid}"
|
||||
registration=$(modemmanager_get_field "${modemstatus}" "modem.3gpp.registration-state")
|
||||
[ -n "${registration}" ] && echo "registration type: ${registration}"
|
||||
accesstech=$(modemmanager_get_multivalue_field "${modemstatus}" "modem.generic.access-technologies")
|
||||
[ -n "${accesstech}" ] && echo "access technology: ${accesstech}"
|
||||
signalquality=$(modemmanager_get_field "${modemstatus}" "modem.generic.signal-quality.value")
|
||||
[ -n "${signalquality}" ] && echo "signal quality: ${signalquality}%"
|
||||
|
||||
# we won't like it if there are more than one bearers, as that would mean the
|
||||
# user manually created them, and that's unsupported by this proto
|
||||
bearercount=$(modemmanager_get_field "${modemstatus}" "modem.generic.bearers.length")
|
||||
[ -n "${bearercount}" ] && [ "$bearercount" -eq 1 ] || {
|
||||
proto_notify_error "${interface}" INVALID_BEARER_LIST
|
||||
return 1
|
||||
}
|
||||
|
||||
# load connected bearer information
|
||||
bearerpath=$(modemmanager_get_field "${modemstatus}" "modem.generic.bearers.value\[1\]")
|
||||
bearerstatus=$(mmcli --bearer "${bearerpath}" --output-keyvalue)
|
||||
|
||||
# load network interface and method information
|
||||
beareriface=$(modemmanager_get_field "${bearerstatus}" "bearer.status.interface")
|
||||
bearermethod_ipv4=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.method")
|
||||
bearermethod_ipv6=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.method")
|
||||
|
||||
# setup IPv4
|
||||
[ -n "${bearermethod_ipv4}" ] && {
|
||||
echo "IPv4 connection setup required in interface ${interface}: ${bearermethod_ipv4}"
|
||||
case "${bearermethod_ipv4}" in
|
||||
"dhcp")
|
||||
modemmanager_connected_method_dhcp_ipv4 "${interface}" "${beareriface}" "${metric}"
|
||||
;;
|
||||
"static")
|
||||
address=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.address")
|
||||
prefix=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.prefix")
|
||||
gateway=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.gateway")
|
||||
mtu=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.mtu")
|
||||
dns1=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.dns.value\[1\]")
|
||||
dns2=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.dns.value\[2\]")
|
||||
modemmanager_connected_method_static_ipv4 "${interface}" "${beareriface}" "${address}" "${prefix}" "${gateway}" "${mtu}" "${dns1}" "${dns2}" "${metric}"
|
||||
;;
|
||||
"ppp")
|
||||
modemmanager_connected_method_ppp_ipv4 "${interface}" "${beareriface}" "${username}" "${password}" "${allowedauth}"
|
||||
;;
|
||||
*)
|
||||
proto_notify_error "${interface}" UNKNOWN_METHOD
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# setup IPv6
|
||||
# note: if using ipv4v6, both IPv4 and IPv6 settings will have the same MTU and metric values reported
|
||||
[ -n "${bearermethod_ipv6}" ] && {
|
||||
echo "IPv6 connection setup required in interface ${interface}: ${bearermethod_ipv6}"
|
||||
case "${bearermethod_ipv6}" in
|
||||
"dhcp")
|
||||
modemmanager_connected_method_dhcp_ipv6 "${interface}" "${beareriface}" "${metric}"
|
||||
;;
|
||||
"static")
|
||||
address=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.address")
|
||||
prefix=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.prefix")
|
||||
gateway=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.gateway")
|
||||
mtu=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.mtu")
|
||||
dns1=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.dns.value\[1\]")
|
||||
dns2=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.dns.value\[2\]")
|
||||
modemmanager_connected_method_static_ipv6 "${interface}" "${beareriface}" "${address}" "${prefix}" "${gateway}" "${mtu}" "${dns1}" "${dns2}" "${metric}"
|
||||
;;
|
||||
"ppp")
|
||||
proto_notify_error "${interface}" "unsupported method"
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
proto_notify_error "${interface}" UNKNOWN_METHOD
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
proto_modemmanager_teardown() {
|
||||
local interface="$1"
|
||||
|
||||
local modemstatus bearerpath errorstring
|
||||
local bearermethod_ipv4 bearermethod_ipv6
|
||||
|
||||
local device lowpower iptype
|
||||
json_get_vars device lowpower iptype
|
||||
|
||||
echo "stopping network"
|
||||
|
||||
# load connected bearer information, just the first one should be ok
|
||||
modemstatus=$(mmcli --modem="${device}" --output-keyvalue)
|
||||
bearerpath=$(modemmanager_get_field "${modemstatus}" "modem.generic.bearers.value\[1\]")
|
||||
[ -n "${bearerpath}" ] || {
|
||||
echo "couldn't load bearer path: disconnecting anyway"
|
||||
mmcli --modem="${device}" --simple-disconnect >/dev/null 2>&1
|
||||
return
|
||||
}
|
||||
|
||||
# load bearer connection methods
|
||||
bearerstatus=$(mmcli --bearer "${bearerpath}" --output-keyvalue)
|
||||
bearermethod_ipv4=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.method")
|
||||
[ -n "${bearermethod_ipv4}" ] &&
|
||||
echo "IPv4 connection teardown required in interface ${interface}: ${bearermethod_ipv4}"
|
||||
bearermethod_ipv6=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.method")
|
||||
[ -n "${bearermethod_ipv6}" ] &&
|
||||
echo "IPv6 connection teardown required in interface ${interface}: ${bearermethod_ipv6}"
|
||||
|
||||
# disconnection handling only requires special treatment in IPv4/PPP
|
||||
[ "${bearermethod_ipv4}" = "ppp" ] && modemmanager_disconnected_method_ppp_ipv4 "${interface}"
|
||||
modemmanager_disconnected_method_common "${interface}"
|
||||
|
||||
# disconnect
|
||||
mmcli --modem="${device}" --simple-disconnect ||
|
||||
proto_notify_error "${interface}" DISCONNECT_FAILED
|
||||
|
||||
# disable
|
||||
mmcli --modem="${device}" --disable
|
||||
proto_notify_error "${interface}" MM_MODEM_DISABLED
|
||||
|
||||
# low power, only if requested
|
||||
[ "${lowpower:-0}" -lt 1 ] ||
|
||||
mmcli --modem="${device}" --set-power-state-low
|
||||
|
||||
proto_init_update "*" 0
|
||||
proto_send_update "$interface"
|
||||
}
|
||||
|
||||
[ -n "$INCLUDE_ONLY" ] || {
|
||||
add_protocol modemmanager
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
trap_with_arg() {
|
||||
func="$1" ; shift
|
||||
for sig ; do
|
||||
# shellcheck disable=SC2064
|
||||
trap "$func $sig" "$sig"
|
||||
done
|
||||
}
|
||||
|
||||
func_trap() {
|
||||
logger "ModemManager-wrapper[$$]" "Sending signal ${1}..."
|
||||
kill "-${1}" "$CHILD" 2>/dev/null
|
||||
}
|
||||
|
||||
main() {
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
|
||||
trap_with_arg func_trap INT TERM KILL
|
||||
|
||||
mkdir -p "${MODEMMANAGER_RUNDIR}"
|
||||
chmod 0755 "${MODEMMANAGER_RUNDIR}"
|
||||
mm_cleanup_interfaces
|
||||
|
||||
/usr/sbin/ModemManager "$@" 1>/dev/null 2>/dev/null &
|
||||
CHILD="$!"
|
||||
|
||||
mm_report_events_from_cache
|
||||
|
||||
wait "$CHILD"
|
||||
}
|
||||
|
||||
main "$@"
|
|
@ -1,74 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2006-2010 OpenWrt.org
|
||||
# Copyright (C) 2016 Stijn Segers
|
||||
# Copyright (C) 2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=net-tools
|
||||
PKG_SOURCE_DATE:=2018-11-03
|
||||
PKG_SOURCE_VERSION:=0eebece8c964e3cfa8a018f42b2e7e751a7009a0
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://git.code.sf.net/p/net-tools/code
|
||||
PKG_MIRROR_HASH:=9d978b9f8ccae4af623a299155c62d9b3d31213182c785f925bf8704d48a04c9
|
||||
|
||||
PKG_MAINTAINER:=Yannick Chabanois <ycarus@zugaina.org>
|
||||
PKG_LICENSE:=GPL-2.0-or-later
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/mii-tool
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=configure media type using MII commands
|
||||
URL:=http://net-tools.sourceforge.net/
|
||||
endef
|
||||
|
||||
define Package/mii-tool/description
|
||||
The mii-tool command allows you to set or autodetect the media type
|
||||
or mii chipset-based ethernet devices. It traditionally had been
|
||||
distributed in the net-tools package. This is a single distribution
|
||||
optimized for embedded systems and fully automated cross/-sysroot-builds
|
||||
endef
|
||||
|
||||
define Package/net-tools-route
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=net-tools - route utility
|
||||
URL:=http://net-tools.sourceforge.net/
|
||||
PROVIDES:=route
|
||||
ALTERNATIVES:=300:/sbin/route:/usr/libexec/net-tools-route
|
||||
endef
|
||||
|
||||
define Package/net-tools-route/description
|
||||
Replace busybox version of the route command with the full net-tools
|
||||
version. This is normally not needed as busybox is smaller and provides
|
||||
sufficient functionality, but some users may want or need the full
|
||||
functionality of the net-tools variant (e.g. AF_X25).
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
# Failed configure.sh leaves stub config.h around.
|
||||
rm -f $(PKG_BUILD_DIR)/config.h
|
||||
( cd $(PKG_BUILD_DIR); yes $$$$'\n' | ./configure.sh config.in )
|
||||
endef
|
||||
|
||||
define Package/mii-tool/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/mii-tool $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
define Package/net-tools-route/install
|
||||
$(INSTALL_DIR) $(1)/usr/libexec
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/route $(1)/usr/libexec/net-tools-route
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,mii-tool))
|
||||
$(eval $(call BuildPackage,net-tools-route))
|
|
@ -1,338 +0,0 @@
|
|||
diff -aurN net-tools-code-0eebece8c964e3cfa8a018f42b2e7e751a7009a0/lib/pathnames.h net-tools-mptcp_v0.95/lib/pathnames.h
|
||||
--- net-tools-code-0eebece8c964e3cfa8a018f42b2e7e751a7009a0/lib/pathnames.h 2018-11-03 14:23:32.000000000 +0100
|
||||
+++ net-tools-mptcp_v0.95/lib/pathnames.h 2019-06-22 22:52:42.000000000 +0200
|
||||
@@ -14,6 +14,7 @@
|
||||
#define _PATH_PROCNET_IGMP6 "/proc/net/igmp6"
|
||||
#define _PATH_PROCNET_TCP "/proc/net/tcp"
|
||||
#define _PATH_PROCNET_TCP6 "/proc/net/tcp6"
|
||||
+#define _PATH_PROCNET_MPTCP "/proc/net/mptcp_net/mptcp"
|
||||
#define _PATH_PROCNET_UDP "/proc/net/udp"
|
||||
#define _PATH_PROCNET_UDP6 "/proc/net/udp6"
|
||||
#define _PATH_PROCNET_UDPLITE "/proc/net/udplite"
|
||||
diff -aurN net-tools-code-0eebece8c964e3cfa8a018f42b2e7e751a7009a0/netstat.c net-tools-mptcp_v0.95/netstat.c
|
||||
--- net-tools-code-0eebece8c964e3cfa8a018f42b2e7e751a7009a0/netstat.c 2018-11-03 14:23:32.000000000 +0100
|
||||
+++ net-tools-mptcp_v0.95/netstat.c 2019-06-22 22:52:42.000000000 +0200
|
||||
@@ -115,7 +115,7 @@
|
||||
#endif
|
||||
|
||||
/* prototypes for statistics.c */
|
||||
-void parsesnmp(int, int, int, int);
|
||||
+void parsesnmp(int, int, int, int, int);
|
||||
void parsesnmp6(int, int, int);
|
||||
|
||||
typedef enum {
|
||||
@@ -155,6 +155,7 @@
|
||||
int flag_opt = 0;
|
||||
int flag_raw = 0;
|
||||
int flag_tcp = 0;
|
||||
+int flag_mptcp = 0;
|
||||
int flag_sctp= 0;
|
||||
int flag_udp = 0;
|
||||
int flag_udplite = 0;
|
||||
@@ -1206,6 +1207,83 @@
|
||||
tcp_do_one, "tcp", "tcp6");
|
||||
}
|
||||
|
||||
+static void mptcp_do_one(int lnr, const char *line, const char *prot)
|
||||
+{
|
||||
+ int d, ipv6, num, local_port, rem_port, state, nsub;
|
||||
+ unsigned long txq, rxq, local_token, remote_token, inode;
|
||||
+ char rem_addr[128], local_addr[128];
|
||||
+ struct sockaddr_storage localsas, remsas;
|
||||
+ struct sockaddr_in *localaddr = (struct sockaddr_in *)&localsas;
|
||||
+ struct sockaddr_in *remaddr = (struct sockaddr_in *)&remsas;
|
||||
+ const struct aftype *ap;
|
||||
+#if HAVE_AFINET6
|
||||
+ char addr6[INET6_ADDRSTRLEN];
|
||||
+ struct in6_addr in6;
|
||||
+ extern struct aftype inet6_aftype;
|
||||
+#endif
|
||||
+
|
||||
+ if (lnr == 0)
|
||||
+ return;
|
||||
+
|
||||
+ num = sscanf(line, "%d: %lX %lX %d %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X "
|
||||
+ "%X %X %lX:%lX %lu\n", &d, &local_token, &remote_token,
|
||||
+ &ipv6, local_addr, &local_port, rem_addr, &rem_port,
|
||||
+ &state, &nsub, &txq, &rxq, &inode);
|
||||
+
|
||||
+ if (strlen(local_addr) > 8) {
|
||||
+#if HAVE_AFINET6
|
||||
+ /* Demangle what the kernel gives us */
|
||||
+ sscanf(local_addr, "%08X%08X%08X%08X",
|
||||
+ &in6.s6_addr32[0], &in6.s6_addr32[1],
|
||||
+ &in6.s6_addr32[2], &in6.s6_addr32[3]);
|
||||
+ inet_ntop(AF_INET6, &in6, addr6, sizeof(addr6));
|
||||
+ inet6_aftype.input(1, addr6, &localsas);
|
||||
+ sscanf(rem_addr, "%08X%08X%08X%08X",
|
||||
+ &in6.s6_addr32[0], &in6.s6_addr32[1],
|
||||
+ &in6.s6_addr32[2], &in6.s6_addr32[3]);
|
||||
+ inet_ntop(AF_INET6, &in6, addr6, sizeof(addr6));
|
||||
+ inet6_aftype.input(1, addr6, &remsas);
|
||||
+ localsas.ss_family = AF_INET6;
|
||||
+ remsas.ss_family = AF_INET6;
|
||||
+#endif
|
||||
+ } else {
|
||||
+ sscanf(local_addr, "%X",
|
||||
+ &((struct sockaddr_in *) &localaddr)->sin_addr.s_addr);
|
||||
+ sscanf(rem_addr, "%X",
|
||||
+ &((struct sockaddr_in *) &remaddr)->sin_addr.s_addr);
|
||||
+ localsas.ss_family = AF_INET;
|
||||
+ remsas.ss_family = AF_INET;
|
||||
+ }
|
||||
+
|
||||
+ if (num < 12) {
|
||||
+ fprintf(stderr, _("warning, got bogus mptcp line.\n"));
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if ((ap = get_afntype(localsas.ss_family)) == NULL) {
|
||||
+ fprintf(stderr, _("netstat: unsupported address family %d !\n"),
|
||||
+ localsas.ss_family);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ addr_do_one(local_addr, sizeof(local_addr), 22, ap, &localsas, local_port, "tcp");
|
||||
+ addr_do_one(rem_addr, sizeof(rem_addr), 22, ap, &remsas, rem_port, "tcp");
|
||||
+
|
||||
+ printf("%-4s %6ld %6ld %-*s %-*s %-11s",
|
||||
+ prot, rxq, txq, (int)netmax(23,strlen(local_addr)), local_addr,
|
||||
+ (int)netmax(23,strlen(rem_addr)), rem_addr, _(tcp_state[state]));
|
||||
+
|
||||
+ if (flag_mptcp)
|
||||
+ printf(" %-11lu %-12lu", local_token, remote_token);
|
||||
+
|
||||
+ finish_this_one(0, inode, NULL);
|
||||
+}
|
||||
+
|
||||
+static int mptcp_info(void)
|
||||
+{
|
||||
+ INFO_GUTS(_PATH_PROCNET_MPTCP, "AF INET (mptcp)", mptcp_do_one, "mptcp");
|
||||
+}
|
||||
+
|
||||
static int notnull(const struct sockaddr_storage *sas)
|
||||
{
|
||||
const struct sockaddr_in *sin = (const struct sockaddr_in *)sas;
|
||||
@@ -1994,7 +2072,7 @@
|
||||
fprintf(fp, _(" -Z, --context display SELinux security context for sockets\n"));
|
||||
#endif
|
||||
|
||||
- fprintf(fp, _("\n <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}\n"));
|
||||
+ fprintf(fp, _("\n <Socket>={-t|--tcp} {-m|--mptcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}\n"));
|
||||
fprintf(fp, _(" {-x|--unix} --ax25 --ipx --netrom\n"));
|
||||
fprintf(fp, _(" <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"), DFLT_AF);
|
||||
fprintf(fp, _(" List of possible address families (which support routing):\n"));
|
||||
@@ -2019,6 +2097,7 @@
|
||||
#endif
|
||||
{"protocol", 1, 0, 'A'},
|
||||
{"tcp", 0, 0, 't'},
|
||||
+ {"mptcp", 0, 0, 'm'},
|
||||
{"sctp", 0, 0, 'S'},
|
||||
{"udp", 0, 0, 'u'},
|
||||
{"udplite", 0, 0, 'U'},
|
||||
@@ -2055,7 +2134,7 @@
|
||||
getroute_init(); /* Set up AF routing support */
|
||||
|
||||
afname[0] = '\0';
|
||||
- while ((i = getopt_long(argc, argv, "A:CFMacdeghilnNoprsStuUvVWw2fx64?Z", longopts, &lop)) != EOF)
|
||||
+ while ((i = getopt_long(argc, argv, "A:CFMacdeghilnNoprsStmuUvVWw2fx64?Z", longopts, &lop)) != EOF)
|
||||
switch (i) {
|
||||
case -1:
|
||||
break;
|
||||
@@ -2146,6 +2225,9 @@
|
||||
case 't':
|
||||
flag_tcp++;
|
||||
break;
|
||||
+ case 'm':
|
||||
+ flag_mptcp++;
|
||||
+ break;
|
||||
case 'S':
|
||||
flag_sctp++;
|
||||
break;
|
||||
@@ -2194,17 +2276,17 @@
|
||||
usage(E_OPTERR);
|
||||
|
||||
if ((flag_inet || flag_inet6 || flag_sta) &&
|
||||
- !(flag_tcp || flag_sctp || flag_udp || flag_udplite || flag_raw))
|
||||
- flag_noprot = flag_tcp = flag_sctp = flag_udp = flag_udplite = flag_raw = 1;
|
||||
+ !(flag_tcp || flag_sctp || flag_mptcp || flag_udp || flag_udplite || flag_raw))
|
||||
+ flag_noprot = flag_tcp = flag_mptcp = flag_sctp = flag_udp = flag_udplite = flag_raw = 1;
|
||||
|
||||
- if ((flag_tcp || flag_sctp || flag_udp || flag_udplite || flag_raw || flag_igmp) &&
|
||||
+ if ((flag_tcp || flag_sctp || flag_mptcp || flag_udp || flag_udplite || flag_raw || flag_igmp) &&
|
||||
!(flag_inet || flag_inet6))
|
||||
flag_inet = flag_inet6 = 1;
|
||||
|
||||
if (flag_bluetooth && !(flag_l2cap || flag_rfcomm))
|
||||
flag_l2cap = flag_rfcomm = 1;
|
||||
|
||||
- flag_arg = flag_tcp + flag_sctp + flag_udplite + flag_udp + flag_raw + flag_unx
|
||||
+ flag_arg = flag_tcp + flag_mptcp +flag_sctp + flag_udplite + flag_udp + flag_raw + flag_unx
|
||||
+ flag_ipx + flag_ax25 + flag_netrom + flag_igmp + flag_x25 + flag_rose
|
||||
+ flag_l2cap + flag_rfcomm;
|
||||
|
||||
@@ -2234,7 +2316,7 @@
|
||||
|
||||
if (!strcmp(afname, "inet")) {
|
||||
#if HAVE_AFINET
|
||||
- parsesnmp(flag_raw, flag_tcp, flag_udp, flag_sctp);
|
||||
+ parsesnmp(flag_raw, flag_tcp, flag_udp, flag_sctp, flag_mptcp);
|
||||
#else
|
||||
ENOSUPP("netstat", "AF INET");
|
||||
#endif
|
||||
@@ -2284,7 +2366,7 @@
|
||||
return (i);
|
||||
}
|
||||
for (;;) {
|
||||
- if (!flag_arg || flag_tcp || flag_sctp || flag_udp || flag_udplite || flag_raw) {
|
||||
+ if (!flag_arg || flag_tcp || flag_mptcp || flag_sctp || flag_udp || flag_udplite || flag_raw) {
|
||||
#if HAVE_AFINET
|
||||
prg_cache_load();
|
||||
printf(_("Active Internet connections ")); /* xxx */
|
||||
@@ -2298,6 +2380,8 @@
|
||||
printf(_("(w/o servers)"));
|
||||
}
|
||||
printf(_("\nProto Recv-Q Send-Q Local Address Foreign Address State ")); /* xxx */
|
||||
+ if (flag_mptcp)
|
||||
+ printf(_(" Local Token Remote Token "));
|
||||
if (flag_exp > 1)
|
||||
printf(_(" User Inode "));
|
||||
print_progname_banner();
|
||||
@@ -2318,6 +2402,12 @@
|
||||
if (i)
|
||||
return (i);
|
||||
}
|
||||
+
|
||||
+ if (!flag_arg || flag_mptcp) {
|
||||
+ i = mptcp_info();
|
||||
+ if (i)
|
||||
+ return (i);
|
||||
+ }
|
||||
|
||||
if (!flag_arg || flag_sctp) {
|
||||
i = sctp_info();
|
||||
diff -aurN net-tools-code-0eebece8c964e3cfa8a018f42b2e7e751a7009a0/statistics.c net-tools-mptcp_v0.95/statistics.c
|
||||
--- net-tools-code-0eebece8c964e3cfa8a018f42b2e7e751a7009a0/statistics.c 2018-11-03 14:23:32.000000000 +0100
|
||||
+++ net-tools-mptcp_v0.95/statistics.c 2019-06-22 22:52:42.000000000 +0200
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "intl.h"
|
||||
#include "proc.h"
|
||||
|
||||
-static int print_static,f_raw,f_tcp,f_udp,f_sctp,f_unknown = 1;
|
||||
+static int print_static,f_raw,f_tcp,f_udp,f_sctp,f_mptcp,f_unknown = 1;
|
||||
|
||||
enum State {
|
||||
number = 0, opt_number, i_forward, i_inp_icmp, i_outp_icmp, i_rto_alg,
|
||||
@@ -295,6 +295,51 @@
|
||||
{"SctpShutdowns", N_("%llu Number of Graceful Terminations"), number},
|
||||
};
|
||||
|
||||
+static const struct entry Mptcptab[] =
|
||||
+{ /* Keep the entries sorted! */
|
||||
+ {"AddAddrRx", N_("%llu Number of ADD_ADDRs received"), number},
|
||||
+ {"AddAddrTx", N_("%llu Number of ADD_ADDRs sent"), number},
|
||||
+ {"DSSNoMatchTCP", N_("%llu Number of DSS-mapping/TCP sequence number mismatches"), number},
|
||||
+ {"DSSNotMatching", N_("%llu Number of new mismatched mappings"), number},
|
||||
+ {"DSSPurgeOldSubSegs", N_("%llu Number of skbs removed from the rcv-queue due to missing DSS-mapping"), number},
|
||||
+ {"DSSSplitTail", N_("%llu Number of trimmed segments at the tail"), number},
|
||||
+ {"DSSTrimHead", N_("%llu Number of trimmed segments at the head"), number},
|
||||
+ {"InfiniteMapRx", N_("%llu Number of infinite mappings received"), number},
|
||||
+ {"MPCapableACKRX", N_("%llu Number of received third ACKs with MP_CAPABLE"), number},
|
||||
+ {"MPCapableFallbackACK", N_("%llu Number of server-side fallbacks during the 3-way handshake"), number},
|
||||
+ {"MPCapableFallbackSYNACK", N_("%llu Number of client-side fallbacks during the 3-way handshake"), number},
|
||||
+ {"MPCapableRetransFallback", N_("%llu Number of times the client-side stopped sending MP_CAPABLE after too many SYN-retransmissions"),
|
||||
+ number},
|
||||
+ {"MPCapableSYNACKRX", N_("%llu Number of received SYN/ACKs with MP_CAPABLE"), number},
|
||||
+ {"MPCapableSYNRX", N_("%llu Number of received SYNs with MP_CAPABLE"), number},
|
||||
+ {"MPCapableSYNTX", N_("%llu Number of sent SYNs with MP_CAPABLE"), number},
|
||||
+ {"MPCsumFail", N_("%llu Number of received segments with an invalid checksum"), number},
|
||||
+ {"MPFailRX", N_("%llu Number of MP_FAILs received"), number},
|
||||
+ {"MPFallbackAckInit", N_("%llu Number of fallbacks upon ack without data-ack on initial subflow"), number},
|
||||
+ {"MPFallbackAckSub", N_("%llu Number of fallbacks upon ack without data-ack on new subflow"), number},
|
||||
+ {"MPFallbackDataInit", N_("%llu Number of fallbacks upon data without DSS at the beginning on initial subflow"), number},
|
||||
+ {"MPFallbackDataSub", N_("%llu Number of fallbacks upon data without DSS at the beginning on new subflow"), number},
|
||||
+ {"MPFastcloseRX", N_("%llu Number of FAST_CLOSEs received"), number},
|
||||
+ {"MPFastcloseTX", N_("%llu Number of FAST_CLOSEs sent"), number},
|
||||
+ {"MPJoinAckHMacFailure", N_("%llu Number of HMAC mismatches on ACK + MP_JOIN"), number},
|
||||
+ {"MPJoinAckMissing", N_("%llu Number of third ACKs on a new subflow not containing a MP_JOIN"), number},
|
||||
+ {"MPJoinAckRTO", N_("%llu Number of retransmission timeouts for third ACK + MP_JOIN"), number},
|
||||
+ {"MPJoinAckRexmit", N_("%llu Number of retransmitted ACK + MP_JOINs"), number},
|
||||
+ {"MPJoinAckRx", N_("%llu Number of ACK + MP_JOINs received"), number},
|
||||
+ {"MPJoinAlreadyFallenback", N_("%llu Number of received MP_JOINs on a session that has fallen back to reg. TCP"), number},
|
||||
+ {"MPJoinNoTokenFound", N_("%llu Number of received MP_JOINs without a token"), number},
|
||||
+ {"MPJoinSynAckHMacFailure", N_("%llu Number of received SYN/ACK + MP_JOINs with a HMAC mismatch"), number},
|
||||
+ {"MPJoinSynAckRx", N_("%llu Number of SYN/ACK + MP_JOINs received"), number},
|
||||
+ {"MPJoinSynRx", N_("%llu Number of SYN + MP_JOINs received"), number},
|
||||
+ {"MPJoinSynTx", N_("%llu Number of SYN + MP_JOINs sent"), number},
|
||||
+ {"MPRemoveAddrSubDelete", N_("%llu Number of subflows removed due to REMOVE_ADDR"), number},
|
||||
+ {"MPTCPCsumEnabled", N_("%llu Number of MPTCP connections created with DSS-checksum enabled"), number},
|
||||
+ {"MPTCPRetrans", N_("%llu Number of segments retransmitted at the MPTCP level"), number},
|
||||
+ {"NoDSSInWindow", N_("%llu Number of too many packets received without a DSS option errors"), number},
|
||||
+ {"RemAddrRx", N_("%llu Number of REMOVE_ADDRs received"), number},
|
||||
+ {"RemAddrTx", N_("%llu Number of REMOVE_ADDRs sent"), number},
|
||||
+};
|
||||
+
|
||||
struct tabtab {
|
||||
const char *title;
|
||||
const struct entry *tab;
|
||||
@@ -310,6 +355,7 @@
|
||||
{"Udp", Udptab, sizeof(Udptab), &f_udp},
|
||||
{"Sctp", Sctptab, sizeof(Sctptab), &f_sctp},
|
||||
{"TcpExt", Tcpexttab, sizeof(Tcpexttab), &f_tcp},
|
||||
+ {"Mptcp", Mptcptab, sizeof(Mptcptab), &f_mptcp},
|
||||
{NULL}
|
||||
};
|
||||
|
||||
@@ -503,13 +549,13 @@
|
||||
}
|
||||
|
||||
/* Process a file with name-value lines (like /proc/net/sctp/snmp) */
|
||||
-static void process_fd2(FILE *f, const char *filename)
|
||||
+static void process_fd2(FILE *f, const char *filename, const char *tablename)
|
||||
{
|
||||
char buf1[1024];
|
||||
char *sp;
|
||||
const struct tabtab *tab;
|
||||
|
||||
- tab = newtable(snmptabs, "Sctp");
|
||||
+ tab = newtable(snmptabs, tablename);
|
||||
|
||||
while (fgets(buf1, sizeof buf1, f)) {
|
||||
sp = buf1 + strcspn(buf1, " \t\n");
|
||||
@@ -527,11 +573,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
-void parsesnmp(int flag_raw, int flag_tcp, int flag_udp, int flag_sctp)
|
||||
+void parsesnmp(int flag_raw, int flag_tcp, int flag_udp, int flag_sctp, int flag_mptcp)
|
||||
{
|
||||
FILE *f;
|
||||
|
||||
- f_raw = flag_raw; f_tcp = flag_tcp; f_udp = flag_udp; f_sctp = flag_sctp;
|
||||
+ f_raw = flag_raw; f_tcp = flag_tcp; f_udp = flag_udp; f_sctp = flag_sctp; f_mptcp = flag_mptcp;
|
||||
|
||||
f = proc_fopen("/proc/net/snmp");
|
||||
if (!f) {
|
||||
@@ -561,12 +607,21 @@
|
||||
|
||||
f = proc_fopen("/proc/net/sctp/snmp");
|
||||
if (f) {
|
||||
- process_fd2(f,"/proc/net/sctp/snmp");
|
||||
+ process_fd2(f,"/proc/net/sctp/snmp", "Sctp");
|
||||
if (ferror(f)) {
|
||||
perror("/proc/net/sctp/snmp");
|
||||
fclose(f);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ f = proc_fopen("/proc/net/mptcp_net/snmp");
|
||||
+ if (f) {
|
||||
+ process_fd2(f,"/proc/net/mptcp_net/snmp", "Mptcp");
|
||||
+ if (ferror(f)) {
|
||||
+ perror("/proc/net/mptcp_net/snmp");
|
||||
+ fclose(f);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
void parsesnmp6(int flag_raw, int flag_tcp, int flag_udp)
|
|
@ -1,13 +1,13 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=netifd
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
|
||||
PKG_SOURCE_DATE:=2023-08-31
|
||||
PKG_SOURCE_VERSION:=1a07f1dff32b3af49e39533e33e8964b59535662
|
||||
PKG_MIRROR_HASH:=dc621dd04c3c9631002f929cf10a4620f57af8b0baf614c590bda17957fa6201
|
||||
PKG_SOURCE_DATE:=2023-09-19
|
||||
PKG_SOURCE_VERSION:=7a58b995fdbecd9beed57e4d66d42cb3cf66aee2
|
||||
PKG_MIRROR_HASH:=a460a3b912047f8802eb24bb737084a08dad65b2dd520e5f5e7459379d1fcf8c
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
|
|
@ -13,21 +13,20 @@ set_classless_routes() {
|
|||
done
|
||||
}
|
||||
|
||||
setup_interface() {
|
||||
setup_interface () {
|
||||
proto_init_update "*" 1
|
||||
proto_add_ipv4_address "$ip" "${subnet:-255.255.255.0}"
|
||||
# TODO: apply $broadcast
|
||||
|
||||
local ip_net
|
||||
eval "$(ipcalc.sh "$ip/$mask")";ip_net="$NETWORK"
|
||||
local ip_net IP PREFIX NETWORK NETMASK BROADCAST
|
||||
ipcalc "$ip/$mask" && ip_net="$NETWORK"
|
||||
|
||||
local i
|
||||
for i in $router; do
|
||||
local gw_net
|
||||
eval "$(ipcalc.sh "$i/$mask")";gw_net="$NETWORK"
|
||||
ipcalc "$i/$mask" && gw_net="$NETWORK"
|
||||
|
||||
[ "$ip_net" != "$gw_net" ] && proto_add_ipv4_route "$i" 32 "" "$ip"
|
||||
#[ "$DEFAULTROUTE" = 0 ] || proto_add_ipv4_route 0.0.0.0 0 "$i" "$ip"
|
||||
proto_add_ipv4_route 0.0.0.0 0 "$i" "$ip"
|
||||
|
||||
local r
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
ifup_all=
|
||||
setup_wifi=
|
||||
|
||||
if_call() {
|
||||
local interface="$1"
|
||||
|
@ -14,7 +13,6 @@ case "$0" in
|
|||
*ifdown) modes=down;;
|
||||
*ifup)
|
||||
modes="down up"
|
||||
setup_wifi=1
|
||||
;;
|
||||
*) echo "Invalid command: $0";;
|
||||
esac
|
||||
|
@ -25,10 +23,6 @@ while :; do
|
|||
ifup_all=1
|
||||
shift
|
||||
;;
|
||||
-w)
|
||||
setup_wifi=
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
|
@ -40,7 +34,6 @@ if [ -n "$ifup_all" ]; then
|
|||
for interface in $(ubus -S list 'network.interface.*'); do
|
||||
if_call "${interface##network.interface.}"
|
||||
done
|
||||
[ -n "$setup_wifi" ] && /sbin/wifi up
|
||||
exit
|
||||
else
|
||||
ubus -S list "network.interface.$1" > /dev/null || {
|
||||
|
@ -49,29 +42,3 @@ else
|
|||
}
|
||||
if_call "$1"
|
||||
fi
|
||||
|
||||
if [ -n "$setup_wifi" ] && grep -sq config /etc/config/wireless; then
|
||||
. /lib/functions.sh
|
||||
|
||||
find_related_radios() {
|
||||
local wdev wnet
|
||||
config_get wdev "$1" device
|
||||
config_get wnet "$1" network
|
||||
|
||||
if [ -n "$wdev" ]; then
|
||||
for wnet in $wnet; do
|
||||
if [ "$wnet" = "$network" ]; then
|
||||
append radio_devs "$wdev" "$N"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
network="$1"
|
||||
config_load wireless
|
||||
config_foreach find_related_radios wifi-iface
|
||||
|
||||
for dev in $(echo "$radio_devs" | sort -u); do
|
||||
/sbin/wifi up "$dev"
|
||||
done
|
||||
fi
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
--- a/system-linux.c 2023-09-13 10:44:22.163111635 +0200
|
||||
+++ b/system-linux.c 2023-09-13 10:44:47.562696256 +0200
|
||||
@@ -2720,7 +2720,9 @@
|
||||
system_if_dump_info(struct device *dev, struct blob_buf *b)
|
||||
{
|
||||
__u32 *supported, *advertising, *lp_advertising;
|
||||
- bool rx_pause, tx_pause, pause_autoneg;
|
||||
+ bool rx_pause = false;
|
||||
+ bool tx_pause = false;
|
||||
+ bool pause_autoneg = false;
|
||||
struct {
|
||||
struct ethtool_link_settings req;
|
||||
__u32 link_mode_data[3 * 127];
|
247
nginx/Config.in
247
nginx/Config.in
|
@ -1,247 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2010-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
menu "Configuration"
|
||||
depends on PACKAGE_nginx
|
||||
|
||||
config NGINX_SSL
|
||||
bool
|
||||
prompt "Enable SSL module"
|
||||
help
|
||||
Enable HTTPS/SSL support.
|
||||
default n
|
||||
|
||||
config NGINX_DAV
|
||||
bool
|
||||
prompt "Enable WebDAV module"
|
||||
help
|
||||
Enable the HTTP and WebDAV methods PUT, DELETE, MKCOL, COPY and MOVE.
|
||||
default n
|
||||
|
||||
config NGINX_FLV
|
||||
bool
|
||||
prompt "Enable FLV module"
|
||||
help
|
||||
Provides the ability to seek within FLV (Flash) files using time-based offsets.
|
||||
default n
|
||||
|
||||
config NGINX_STUB_STATUS
|
||||
bool
|
||||
prompt "Enable stub status module"
|
||||
help
|
||||
Enable the stub status module which gives some status from the server.
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_CHARSET
|
||||
bool
|
||||
prompt "Enable HTTP charset module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_GZIP
|
||||
bool
|
||||
prompt "Enable HTTP gzip module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_SSI
|
||||
bool
|
||||
prompt "Enable HTTP ssi module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_USERID
|
||||
bool
|
||||
prompt "Enable HTTP userid module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_ACCESS
|
||||
bool
|
||||
prompt "Enable HTTP access module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_AUTH_BASIC
|
||||
bool
|
||||
prompt "Enable HTTP auth basic"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_AUTH_REQUEST
|
||||
bool
|
||||
prompt "Enable HTTP auth request module"
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_AUTOINDEX
|
||||
bool
|
||||
prompt "Enable HTTP autoindex module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_GEO
|
||||
bool
|
||||
prompt "Enable HTTP geo module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_MAP
|
||||
bool
|
||||
prompt "Enable HTTP map module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_SPLIT_CLIENTS
|
||||
bool
|
||||
prompt "Enable HTTP split clients"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_REFERER
|
||||
bool
|
||||
prompt "Enable HTTP referer module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_REWRITE
|
||||
bool
|
||||
prompt "Enable HTTP rewrite module"
|
||||
select NGINX_PCRE
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_PROXY
|
||||
bool
|
||||
prompt "Enable HTTP proxy module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_FASTCGI
|
||||
bool
|
||||
prompt "Enable HTTP fastcgi module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UWSGI
|
||||
bool
|
||||
prompt "Enable HTTP uwsgi module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_SCGI
|
||||
bool
|
||||
prompt "Enable HTTP scgi module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_MEMCACHED
|
||||
bool
|
||||
prompt "Enable HTTP memcached module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_LIMIT_CONN
|
||||
bool
|
||||
prompt "Enable HTTP limit conn"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_LIMIT_REQ
|
||||
bool
|
||||
prompt "Enable HTTP limit req"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_EMPTY_GIF
|
||||
bool
|
||||
prompt "Enable HTTP empty gif"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_BROWSER
|
||||
bool
|
||||
prompt "Enable HTTP browser module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_HASH
|
||||
bool
|
||||
prompt "Enable HTTP hash module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_IP_HASH
|
||||
bool
|
||||
prompt "Enable HTTP IP hash module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_LEAST_CONN
|
||||
bool
|
||||
prompt "Enable HTTP least conn module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_KEEPALIVE
|
||||
bool
|
||||
prompt "Enable HTTP keepalive module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_CACHE
|
||||
bool
|
||||
prompt "Enable HTTP cache"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_V2
|
||||
bool
|
||||
prompt "Enable HTTP_V2 module"
|
||||
default n
|
||||
|
||||
config NGINX_PCRE
|
||||
bool
|
||||
prompt "Enable PCRE library usage"
|
||||
default y
|
||||
|
||||
config NGINX_NAXSI
|
||||
bool
|
||||
prompt "Enable NAXSI module"
|
||||
default y
|
||||
|
||||
config NGINX_LUA
|
||||
bool
|
||||
prompt "Enable Lua module"
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_REAL_IP
|
||||
bool
|
||||
prompt "Enable HTTP real ip module"
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_SECURE_LINK
|
||||
bool
|
||||
prompt "Enable HTTP secure link module"
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_SUB
|
||||
bool
|
||||
prompt "Enable HTTP sub module"
|
||||
default n
|
||||
|
||||
config NGINX_HEADERS_MORE
|
||||
bool
|
||||
prompt "Enable Headers_more module"
|
||||
help
|
||||
Set and clear input and output headers...more than "add"!
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_BROTLI
|
||||
bool
|
||||
prompt "Enable Brotli compression module"
|
||||
help
|
||||
Add support for brotli compression module.
|
||||
default n
|
||||
|
||||
config NGINX_STREAM_CORE_MODULE
|
||||
bool
|
||||
prompt "Enable stream support"
|
||||
help
|
||||
Add support for NGINX request streaming.
|
||||
default y
|
||||
|
||||
config NGINX_RTMP_MODULE
|
||||
bool
|
||||
prompt "Enable RTMP module"
|
||||
depends on NGINX_SSL
|
||||
help
|
||||
Add support for NGINX-based Media Streaming Server module.
|
||||
DASH enhanced - https://github.com/ut0mt8/nginx-rtmp-module
|
||||
default n
|
||||
|
||||
config NGINX_TS_MODULE
|
||||
bool
|
||||
prompt "Enable TS module"
|
||||
help
|
||||
Add support for MPEG-TS Live Module module.
|
||||
default n
|
||||
|
||||
endmenu
|
|
@ -1,239 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2010-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
menu "Configuration"
|
||||
depends on PACKAGE_nginx-ssl
|
||||
|
||||
config NGINX_DAV
|
||||
bool
|
||||
prompt "Enable WebDAV module"
|
||||
help
|
||||
Enable the HTTP and WebDAV methods PUT, DELETE, MKCOL, COPY and MOVE.
|
||||
default n
|
||||
|
||||
config NGINX_FLV
|
||||
bool
|
||||
prompt "Enable FLV module"
|
||||
help
|
||||
Provides the ability to seek within FLV (Flash) files using time-based offsets.
|
||||
default n
|
||||
|
||||
config NGINX_STUB_STATUS
|
||||
bool
|
||||
prompt "Enable stub status module"
|
||||
help
|
||||
Enable the stub status module which gives some status from the server.
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_CHARSET
|
||||
bool
|
||||
prompt "Enable HTTP charset module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_GZIP
|
||||
bool
|
||||
prompt "Enable HTTP gzip module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_SSI
|
||||
bool
|
||||
prompt "Enable HTTP ssi module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_USERID
|
||||
bool
|
||||
prompt "Enable HTTP userid module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_ACCESS
|
||||
bool
|
||||
prompt "Enable HTTP access module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_AUTH_BASIC
|
||||
bool
|
||||
prompt "Enable HTTP auth basic"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_AUTH_REQUEST
|
||||
bool
|
||||
prompt "Enable HTTP auth request module"
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_AUTOINDEX
|
||||
bool
|
||||
prompt "Enable HTTP autoindex module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_GEO
|
||||
bool
|
||||
prompt "Enable HTTP geo module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_MAP
|
||||
bool
|
||||
prompt "Enable HTTP map module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_SPLIT_CLIENTS
|
||||
bool
|
||||
prompt "Enable HTTP split clients"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_REFERER
|
||||
bool
|
||||
prompt "Enable HTTP referer module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_REWRITE
|
||||
bool
|
||||
prompt "Enable HTTP rewrite module"
|
||||
select NGINX_PCRE
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_PROXY
|
||||
bool
|
||||
prompt "Enable HTTP proxy module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_FASTCGI
|
||||
bool
|
||||
prompt "Enable HTTP fastcgi module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UWSGI
|
||||
bool
|
||||
prompt "Enable HTTP uwsgi module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_SCGI
|
||||
bool
|
||||
prompt "Enable HTTP scgi module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_MEMCACHED
|
||||
bool
|
||||
prompt "Enable HTTP memcached module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_LIMIT_CONN
|
||||
bool
|
||||
prompt "Enable HTTP limit conn"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_LIMIT_REQ
|
||||
bool
|
||||
prompt "Enable HTTP limit req"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_EMPTY_GIF
|
||||
bool
|
||||
prompt "Enable HTTP empty gif"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_BROWSER
|
||||
bool
|
||||
prompt "Enable HTTP browser module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_HASH
|
||||
bool
|
||||
prompt "Enable HTTP hash module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_IP_HASH
|
||||
bool
|
||||
prompt "Enable HTTP IP hash module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_LEAST_CONN
|
||||
bool
|
||||
prompt "Enable HTTP least conn module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_KEEPALIVE
|
||||
bool
|
||||
prompt "Enable HTTP keepalive module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_CACHE
|
||||
bool
|
||||
prompt "Enable HTTP cache"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_V2
|
||||
bool
|
||||
prompt "Enable HTTP_V2 module"
|
||||
default n
|
||||
|
||||
config NGINX_PCRE
|
||||
bool
|
||||
prompt "Enable PCRE library usage"
|
||||
default y
|
||||
|
||||
config NGINX_NAXSI
|
||||
bool
|
||||
prompt "Enable NAXSI module"
|
||||
default y
|
||||
|
||||
config NGINX_LUA
|
||||
bool
|
||||
prompt "Enable Lua module"
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_REAL_IP
|
||||
bool
|
||||
prompt "Enable HTTP real ip module"
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_SECURE_LINK
|
||||
bool
|
||||
prompt "Enable HTTP secure link module"
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_SUB
|
||||
bool
|
||||
prompt "Enable HTTP sub module"
|
||||
default n
|
||||
|
||||
config NGINX_HEADERS_MORE
|
||||
bool
|
||||
prompt "Enable Headers_more module"
|
||||
help
|
||||
Set and clear input and output headers...more than "add"!
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_BROTLI
|
||||
bool
|
||||
prompt "Enable Brotli compression module"
|
||||
help
|
||||
Add support for brotli compression module.
|
||||
default n
|
||||
|
||||
config NGINX_STREAM_CORE_MODULE
|
||||
bool
|
||||
prompt "Enable stream support"
|
||||
help
|
||||
Add support for NGINX request streaming.
|
||||
default n
|
||||
|
||||
config NGINX_RTMP_MODULE
|
||||
bool
|
||||
prompt "Enable RTMP module"
|
||||
help
|
||||
Add support for NGINX-based Media Streaming Server module.
|
||||
DASH enhanced - https://github.com/ut0mt8/nginx-rtmp-module
|
||||
default n
|
||||
|
||||
config NGINX_TS_MODULE
|
||||
bool
|
||||
prompt "Enable TS module"
|
||||
help
|
||||
Add support for MPEG-TS Live Module module.
|
||||
default n
|
||||
|
||||
endmenu
|
532
nginx/Makefile
532
nginx/Makefile
|
@ -1,532 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2012-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=nginx
|
||||
PKG_VERSION:=1.16.1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://nginx.org/download/
|
||||
PKG_HASH:=f11c2a6dd1d3515736f0324857957db2de98be862461b5a542a3ac6188dbe32b
|
||||
|
||||
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de> \
|
||||
Ansuel Smith <ansuelsmth@gmail.com>
|
||||
PKG_LICENSE:=2-clause BSD-like license
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_INSTALL:=1
|
||||
|
||||
PKG_CONFIG_DEPENDS := \
|
||||
CONFIG_NGINX_SSL \
|
||||
CONFIG_NGINX_DAV \
|
||||
CONFIG_NGINX_FLV \
|
||||
CONFIG_NGINX_STUB_STATUS \
|
||||
CONFIG_NGINX_HTTP_CHARSET \
|
||||
CONFIG_NGINX_HTTP_GZIP \
|
||||
CONFIG_NGINX_HTTP_SSI \
|
||||
CONFIG_NGINX_HTTP_USERID \
|
||||
CONFIG_NGINX_HTTP_ACCESS \
|
||||
CONFIG_NGINX_HTTP_AUTH_BASIC \
|
||||
CONFIG_NGINX_HTTP_AUTH_REQUEST \
|
||||
CONFIG_NGINX_HTTP_AUTOINDEX \
|
||||
CONFIG_NGINX_HTTP_GEO \
|
||||
CONFIG_NGINX_HTTP_MAP \
|
||||
CONFIG_NGINX_HTTP_SPLIT_CLIENTS \
|
||||
CONFIG_NGINX_HTTP_REFERER \
|
||||
CONFIG_NGINX_HTTP_REWRITE \
|
||||
CONFIG_NGINX_HTTP_PROXY \
|
||||
CONFIG_NGINX_HTTP_FASTCGI \
|
||||
CONFIG_NGINX_HTTP_UWSGI \
|
||||
CONFIG_NGINX_HTTP_SCGI \
|
||||
CONFIG_NGINX_HTTP_MEMCACHED \
|
||||
CONFIG_NGINX_HTTP_LIMIT_CONN \
|
||||
CONFIG_NGINX_HTTP_LIMIT_REQ \
|
||||
CONFIG_NGINX_HTTP_EMPTY_GIF \
|
||||
CONFIG_NGINX_HTTP_BROWSER \
|
||||
CONFIG_NGINX_HTTP_UPSTREAM_HASH \
|
||||
CONFIG_NGINX_HTTP_UPSTREAM_IP_HASH \
|
||||
CONFIG_NGINX_HTTP_UPSTREAM_LEAST_CONN \
|
||||
CONFIG_NGINX_HTTP_UPSTREAM_KEEPALIVE \
|
||||
CONFIG_NGINX_HTTP_UPSTREAM_ZONE \
|
||||
CONFIG_NGINX_HTTP_CACHE \
|
||||
CONFIG_NGINX_HTTP_V2 \
|
||||
CONFIG_NGINX_PCRE \
|
||||
CONFIG_NGINX_NAXSI \
|
||||
CONFIG_NGINX_LUA \
|
||||
CONFIG_NGINX_HTTP_REAL_IP \
|
||||
CONFIG_NGINX_HTTP_SECURE_LINK \
|
||||
CONFIG_NGINX_HTTP_BROTLI \
|
||||
CONFIG_NGINX_HEADERS_MORE \
|
||||
CONFIG_NGINX_STREAM_CORE_MODULE \
|
||||
CONFIG_NGINX_RTMP_MODULE \
|
||||
CONFIG_NGINX_TS_MODULE \
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/nginx/default
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=Web Servers/Proxies
|
||||
TITLE:=Nginx web server
|
||||
URL:=http://nginx.org/
|
||||
DEPENDS:=+NGINX_PCRE:libpcre +(NGINX_SSL||NGINX_HTTP_CACHE||NGINX_HTTP_AUTH_BASIC):libopenssl \
|
||||
+NGINX_HTTP_GZIP:zlib +NGINX_LUA:liblua +libpthread +NGINX_DAV:libexpat
|
||||
endef
|
||||
|
||||
define Package/nginx/description
|
||||
nginx is an HTTP and reverse proxy server, as well as a mail proxy server, \
|
||||
written by Igor Sysoev. (Some module require SSL module enable to show up in \
|
||||
config menu)
|
||||
endef
|
||||
|
||||
define Package/nginx
|
||||
$(Package/nginx/default)
|
||||
VARIANT:=no-ssl
|
||||
endef
|
||||
|
||||
define Package/nginx-ssl
|
||||
$(Package/nginx/default)
|
||||
TITLE += with SSL support
|
||||
DEPENDS +=+libopenssl
|
||||
VARIANT:=ssl
|
||||
PROVIDES:=nginx
|
||||
endef
|
||||
|
||||
Package/nginx-ssl/description = $(Package/nginx/description) \
|
||||
This varian is compiled with SSL support enabled. To enable additional module \
|
||||
select them in the nginx default configuration menu.
|
||||
|
||||
define Package/nginx-all-module
|
||||
$(Package/nginx/default)
|
||||
TITLE += with ALL module selected
|
||||
DEPENDS:=+libpcre +libopenssl +zlib +liblua +libpthread +libexpat
|
||||
VARIANT:=all-module
|
||||
PROVIDES:=nginx
|
||||
endef
|
||||
|
||||
Package/nginx-all-module/description = $(Package/nginx/description) \
|
||||
This varian is compiled with ALL module selected.
|
||||
|
||||
define Package/nginx/config
|
||||
source "$(SOURCE)/Config.in"
|
||||
endef
|
||||
|
||||
define Package/nginx-ssl/config
|
||||
source "$(SOURCE)/Config_ssl.in"
|
||||
endef
|
||||
|
||||
config_files=nginx.conf mime.types
|
||||
|
||||
define Package/nginx/conffiles
|
||||
/etc/nginx/
|
||||
endef
|
||||
|
||||
Package/nginx-ssl/conffiles = $(Package/nginx/conffiles)
|
||||
Package/nginx-all-module/conffiles = $(Package/nginx/conffiles)
|
||||
|
||||
|
||||
ADDITIONAL_MODULES:=
|
||||
|
||||
ifneq ($(BUILD_VARIANT),all-module)
|
||||
ifneq ($(CONFIG_NGINX_HTTP_CACHE),y)
|
||||
ADDITIONAL_MODULES += --without-http-cache
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_PCRE),y)
|
||||
ADDITIONAL_MODULES += --without-pcre
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_CHARSET),y)
|
||||
ADDITIONAL_MODULES += --without-http_charset_module
|
||||
else
|
||||
config_files += koi-utf koi-win win-utf
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_GZIP),y)
|
||||
ADDITIONAL_MODULES += --without-http_gzip_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_SSI),y)
|
||||
ADDITIONAL_MODULES += --without-http_ssi_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_USERID),y)
|
||||
ADDITIONAL_MODULES += --without-http_userid_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_ACCESS),y)
|
||||
ADDITIONAL_MODULES += --without-http_access_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_AUTH_BASIC),y)
|
||||
ADDITIONAL_MODULES += --without-http_auth_basic_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_AUTOINDEX),y)
|
||||
ADDITIONAL_MODULES += --without-http_autoindex_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_GEO),y)
|
||||
ADDITIONAL_MODULES += --without-http_geo_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_MAP),y)
|
||||
ADDITIONAL_MODULES += --without-http_map_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_SPLIT_CLIENTS),y)
|
||||
ADDITIONAL_MODULES += --without-http_split_clients_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_REFERER),y)
|
||||
ADDITIONAL_MODULES += --without-http_referer_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_REWRITE),y)
|
||||
ADDITIONAL_MODULES += --without-http_rewrite_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_PROXY),y)
|
||||
ADDITIONAL_MODULES += --without-http_proxy_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_FASTCGI),y)
|
||||
ADDITIONAL_MODULES += --without-http_fastcgi_module
|
||||
else
|
||||
config_files += fastcgi_params
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_UWSGI),y)
|
||||
ADDITIONAL_MODULES += --without-http_uwsgi_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_SCGI),y)
|
||||
ADDITIONAL_MODULES += --without-http_scgi_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_MEMCACHED),y)
|
||||
ADDITIONAL_MODULES += --without-http_memcached_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_LIMIT_CONN),y)
|
||||
ADDITIONAL_MODULES += --without-http_limit_conn_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_LIMIT_REQ),y)
|
||||
ADDITIONAL_MODULES += --without-http_limit_req_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_EMPTY_GIF),y)
|
||||
ADDITIONAL_MODULES += --without-http_empty_gif_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_BROWSER),y)
|
||||
ADDITIONAL_MODULES += --without-http_browser_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_HASH),y)
|
||||
ADDITIONAL_MODULES += --without-http_upstream_hash_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_IP_HASH),y)
|
||||
ADDITIONAL_MODULES += --without-http_upstream_ip_hash_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_LEAST_CONN),y)
|
||||
ADDITIONAL_MODULES += --without-http_upstream_least_conn_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_KEEPALIVE),y)
|
||||
ADDITIONAL_MODULES += --without-http_upstream_keepalive_module
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_VARIANT),ssl)
|
||||
ifneq ($(CONFIG_NGINX_SSL),y)
|
||||
ADDITIONAL_MODULES += --with-http_ssl_module
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_NGINX_SSL),y)
|
||||
ADDITIONAL_MODULES += --with-http_ssl_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_NAXSI),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-naxsi/naxsi_src
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_LUA),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/lua-nginx
|
||||
endif
|
||||
ifeq ($(CONFIG_IPV6),y)
|
||||
ADDITIONAL_MODULES += --with-ipv6
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_STUB_STATUS),y)
|
||||
ADDITIONAL_MODULES += --with-http_stub_status_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_FLV),y)
|
||||
ADDITIONAL_MODULES += --with-http_flv_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_DAV),y)
|
||||
ADDITIONAL_MODULES += --with-http_dav_module --add-module=$(PKG_BUILD_DIR)/nginx-dav-ext-module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_HTTP_AUTH_REQUEST),y)
|
||||
ADDITIONAL_MODULES += --with-http_auth_request_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_HTTP_V2),y)
|
||||
ADDITIONAL_MODULES += --with-http_v2_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_HTTP_REAL_IP),y)
|
||||
ADDITIONAL_MODULES += --with-http_realip_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_HTTP_SECURE_LINK),y)
|
||||
ADDITIONAL_MODULES += --with-http_secure_link_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_HTTP_SUB),y)
|
||||
ADDITIONAL_MODULES += --with-http_sub_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_STREAM_CORE_MODULE),y)
|
||||
ADDITIONAL_MODULES += --with-stream
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_HEADERS_MORE),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-headers-more
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_HTTP_BROTLI),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-brotli
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_RTMP_MODULE),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-rtmp
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_TS_MODULE),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-ts
|
||||
endif
|
||||
else
|
||||
CONFIG_NGINX_HEADERS_MORE:=y
|
||||
CONFIG_NGINX_HTTP_BROTLI:=y
|
||||
CONFIG_NGINX_RTMP_MODULE:=y
|
||||
CONFIG_NGINX_TS_MODULE:=y
|
||||
CONFIG_NGINX_NAXSI:=y
|
||||
CONFIG_NGINX_LUA:=y
|
||||
CONFIG_NGINX_DAV:=y
|
||||
ADDITIONAL_MODULES += --with-http_ssl_module --add-module=$(PKG_BUILD_DIR)/nginx-naxsi/naxsi_src \
|
||||
--add-module=$(PKG_BUILD_DIR)/lua-nginx --with-ipv6 --with-http_stub_status_module --with-http_flv_module \
|
||||
--with-http_dav_module --add-module=$(PKG_BUILD_DIR)/nginx-dav-ext-module \
|
||||
--with-http_auth_request_module --with-http_v2_module --with-http_realip_module \
|
||||
--with-http_secure_link_module --with-http_sub_module --add-module=$(PKG_BUILD_DIR)/nginx-headers-more \
|
||||
--with-stream \
|
||||
--add-module=$(PKG_BUILD_DIR)/nginx-brotli --add-module=$(PKG_BUILD_DIR)/nginx-rtmp \
|
||||
--add-module=$(PKG_BUILD_DIR)/nginx-ts
|
||||
config_files += koi-utf koi-win win-utf fastcgi_params
|
||||
endif
|
||||
|
||||
define Package/nginx-mod-luci/default
|
||||
TITLE:=Nginx on LuCI
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=Web Servers/Proxies
|
||||
TITLE:=Support file for Nginx
|
||||
URL:=http://nginx.org/
|
||||
DEPENDS:=+uwsgi-cgi +uwsgi-cgi-luci-support
|
||||
endef
|
||||
|
||||
define Package/nginx-mod-luci
|
||||
$(Package/nginx-mod-luci/default)
|
||||
DEPENDS += +nginx
|
||||
endef
|
||||
|
||||
define Package/nginx-mod-luci/description
|
||||
Support file for LuCI in nginx. Include custom nginx configuration, autostart script for uwsgi.
|
||||
endef
|
||||
|
||||
define Package/nginx-mod-luci-ssl
|
||||
$(Package/nginx-mod-luci/default)
|
||||
TITLE += with HTTPS support
|
||||
DEPENDS += +nginx-ssl
|
||||
endef
|
||||
|
||||
Package/nginx-mod-luci-ssl/description = $(define Package/nginx-mod-luci/description) \
|
||||
This also include redirect from http to https and cert autogeneration.
|
||||
|
||||
TARGET_CFLAGS += -fvisibility=hidden -ffunction-sections -fdata-sections -DNGX_LUA_NO_BY_LUA_BLOCK
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
ifeq ($(CONFIG_NGINX_LUA),y)
|
||||
CONFIGURE_VARS += LUA_INC=$(STAGING_DIR)/usr/include \
|
||||
LUA_LIB=$(STAGING_DIR)/usr/lib
|
||||
endif
|
||||
|
||||
CONFIGURE_ARGS += \
|
||||
--crossbuild=Linux::$(ARCH) \
|
||||
--prefix=/usr \
|
||||
--conf-path=/etc/nginx/nginx.conf \
|
||||
$(ADDITIONAL_MODULES) \
|
||||
--error-log-path=/var/log/nginx/error.log \
|
||||
--pid-path=/var/run/nginx.pid \
|
||||
--lock-path=/var/lock/nginx.lock \
|
||||
--http-log-path=/var/log/nginx/access.log \
|
||||
--http-client-body-temp-path=/var/lib/nginx/body \
|
||||
--http-proxy-temp-path=/var/lib/nginx/proxy \
|
||||
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
|
||||
--with-cc="$(TARGET_CC)" \
|
||||
--with-cc-opt="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
|
||||
--with-ld-opt="$(TARGET_LDFLAGS)" \
|
||||
--without-http_upstream_zone_module
|
||||
|
||||
define Package/nginx-mod-luci/install
|
||||
$(INSTALL_DIR) $(1)/etc/nginx
|
||||
$(INSTALL_BIN) ./files-luci-support/luci_uwsgi.conf $(1)/etc/nginx/luci_uwsgi.conf
|
||||
$(INSTALL_BIN) ./files-luci-support/luci_nginx.conf $(1)/etc/nginx/luci_nginx.conf
|
||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||
$(INSTALL_BIN) ./files-luci-support/60_nginx-luci-support $(1)/etc/uci-defaults/60_nginx-luci-support
|
||||
endef
|
||||
|
||||
define Package/nginx-mod-luci-ssl/install
|
||||
$(Package/nginx-mod-luci/install)
|
||||
$(INSTALL_DIR) $(1)/etc/nginx
|
||||
$(INSTALL_BIN) ./files-luci-support/luci_nginx_ssl.conf $(1)/etc/nginx/luci_nginx_ssl.conf
|
||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||
$(INSTALL_BIN) ./files-luci-support/70_nginx-luci-support-ssl $(1)/etc/uci-defaults/70_nginx-luci-support-ssl
|
||||
endef
|
||||
|
||||
define Package/nginx/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nginx $(1)/usr/sbin/
|
||||
$(INSTALL_DIR) $(1)/etc/nginx
|
||||
$(INSTALL_DATA) $(addprefix $(PKG_INSTALL_DIR)/etc/nginx/,$(config_files)) $(1)/etc/nginx/
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/nginx.init $(1)/etc/init.d/nginx
|
||||
ifeq ($(CONFIG_NGINX_NAXSI),y)
|
||||
$(INSTALL_DIR) $(1)/etc/nginx
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/nginx-naxsi/naxsi_config/naxsi_core.rules $(1)/etc/nginx
|
||||
chmod 0640 $(1)/etc/nginx/naxsi_core.rules
|
||||
endif
|
||||
$(if $(CONFIG_NGINX_NAXSI),$($(INSTALL_BIN) $(PKG_BUILD_DIR)/nginx-naxsi/naxsi_config/naxsi_core.rules $(1)/etc/nginx))
|
||||
$(if $(CONFIG_NGINX_NAXSI),$(chmod 0640 $(1)/etc/nginx/naxsi_core.rules))
|
||||
endef
|
||||
|
||||
Package/nginx-ssl/install = $(Package/nginx/install)
|
||||
Package/nginx-all-module/install = $(Package/nginx/install)
|
||||
|
||||
define Build/Prepare
|
||||
$(Build/Prepare/Default)
|
||||
$(Prepare/nginx-naxsi)
|
||||
$(Prepare/lua-nginx)
|
||||
$(Prepare/nginx-brotli)
|
||||
$(Prepare/nginx-headers-more)
|
||||
$(Prepare/nginx-rtmp)
|
||||
$(Prepare/nginx-ts)
|
||||
$(Prepare/nginx-dav-ext-module)
|
||||
endef
|
||||
|
||||
|
||||
ifeq ($(CONFIG_NGINX_HEADERS_MORE),y)
|
||||
define Download/nginx-headers-more
|
||||
VERSION:=a9f7c7e86cc7441d04e2f11f01c2e3a9c4b0301d
|
||||
SUBDIR:=nginx-headers-more
|
||||
FILE:=headers-more-nginx-module-$(PKG_VERSION)-$$(VERSION).tar.gz
|
||||
URL:=https://github.com/openresty/headers-more-nginx-module.git
|
||||
MIRROR_HASH:=432609015719aaa7241e5166c7cda427acbe004f725887f78ef629d51bd9cb3f
|
||||
PROTO:=git
|
||||
endef
|
||||
$(eval $(call Download,nginx-headers-more))
|
||||
|
||||
define Prepare/nginx-headers-more
|
||||
$(eval $(Download/nginx-headers-more))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
endef
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(CONFIG_NGINX_HTTP_BROTLI),y)
|
||||
define Download/nginx-brotli
|
||||
VERSION:=e26248ee361c04e25f581b92b85d95681bdffb39
|
||||
SUBDIR:=nginx-brotli
|
||||
FILE:=ngx-brotli-module-$(PKG_VERSION)-$$(VERSION).tar.gz
|
||||
URL:=https://github.com/eustas/ngx_brotli.git
|
||||
MIRROR_HASH:=76b891ba49f82f0cfbc9cba875646e26ee986b522373e0aa2698a9923a4adcdb
|
||||
PROTO:=git
|
||||
endef
|
||||
$(eval $(call Download,nginx-brotli))
|
||||
|
||||
define Prepare/nginx-brotli
|
||||
$(eval $(Download/nginx-brotli))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
endef
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(CONFIG_NGINX_RTMP_MODULE),y)
|
||||
define Download/nginx-rtmp
|
||||
VERSION:=f0ea62342a4eca504b311cd5df910d026c3ea4cf
|
||||
SUBDIR:=nginx-rtmp
|
||||
FILE:=ngx-rtmp-module-$(PKG_VERSION)-$$(VERSION).tar.gz
|
||||
URL:=https://github.com/ut0mt8/nginx-rtmp-module.git
|
||||
MIRROR_HASH:=9ba7625718d21f658c4878729271832a07bd989165f1d1c720b3a9b54cf738cc
|
||||
PROTO:=git
|
||||
endef
|
||||
$(eval $(call Download,nginx-rtmp))
|
||||
|
||||
define Prepare/nginx-rtmp
|
||||
$(eval $(Download/nginx-rtmp))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
endef
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(CONFIG_NGINX_TS_MODULE),y)
|
||||
define Download/nginx-ts
|
||||
VERSION:=ef2f874d95cc75747eb625a292524a702aefb0fd
|
||||
SUBDIR:=nginx-ts
|
||||
FILE:=ngx-ts-module-$(PKG_VERSION)-$$(VERSION).tar.gz
|
||||
URL:=https://github.com/arut/nginx-ts-module.git
|
||||
MIRROR_HASH:=31ecc9968b928886b54884138eafe2fa747648bca5094d4c3132e8ae9509d1d3
|
||||
PROTO:=git
|
||||
endef
|
||||
$(eval $(call Download,nginx-ts))
|
||||
|
||||
define Prepare/nginx-ts
|
||||
$(eval $(Download/nginx-ts))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
endef
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(CONFIG_NGINX_NAXSI),y)
|
||||
define Download/nginx-naxsi
|
||||
VERSION:=951123ad456bdf5ac94e8d8819342fe3d49bc002
|
||||
SUBDIR:=nginx-naxsi
|
||||
FILE:=nginx-naxsi-module-$(PKG_VERSION)-$$(VERSION).tar.gz
|
||||
URL:=https://github.com/nbs-system/naxsi.git
|
||||
MIRROR_HASH:=7ab791f2ff38096f48013141bbfe20ba213d5e04dcac08ca82e0cac07d5c30f0
|
||||
PROTO:=git
|
||||
endef
|
||||
$(eval $(call Download,nginx-naxsi))
|
||||
|
||||
define Prepare/nginx-naxsi
|
||||
$(eval $(Download/nginx-naxsi))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
endef
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(CONFIG_NGINX_LUA),y)
|
||||
define Download/lua-nginx
|
||||
VERSION:=e94f2e5d64daa45ff396e262d8dab8e56f5f10e0
|
||||
SUBDIR:=lua-nginx
|
||||
FILE:=lua-nginx-module-$(PKG_VERSION)-$$(VERSION).tar.gz
|
||||
URL:=https://github.com/openresty/lua-nginx-module.git
|
||||
MIRROR_HASH:=ae439f9a8b3c34d7240735b844db72ee721af4791bbaff5692bca20e6785f541
|
||||
PROTO:=git
|
||||
endef
|
||||
$(eval $(call Download,lua-nginx))
|
||||
|
||||
define Prepare/lua-nginx
|
||||
$(eval $(Download/lua-nginx))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
$(call PatchDir,$(PKG_BUILD_DIR),./patches-lua-nginx)
|
||||
endef
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(CONFIG_NGINX_DAV),y)
|
||||
define Download/nginx-dav-ext-module
|
||||
VERSION:=430fd774fe838a04f1a5defbf1dd571d42300cf9
|
||||
SUBDIR:=nginx-dav-ext-module
|
||||
FILE:=nginx-dav-ext-module-$(PKG_VERSION)-$$(VERSION).tar.gz
|
||||
URL:=https://github.com/arut/nginx-dav-ext-module.git
|
||||
MIRROR_HASH:=0566053a8756423ecab455fd9d218cec1e017598fcbb3d6415a06f816851611e
|
||||
PROTO:=git
|
||||
endef
|
||||
$(eval $(call Download,nginx-dav-ext-module))
|
||||
|
||||
define Prepare/nginx-dav-ext-module
|
||||
$(eval $(Download/nginx-dav-ext-module))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
endef
|
||||
endif
|
||||
|
||||
$(eval $(call BuildPackage,nginx))
|
||||
$(eval $(call BuildPackage,nginx-ssl))
|
||||
$(eval $(call BuildPackage,nginx-all-module))
|
||||
#$(eval $(call BuildPackage,nginx-mod-luci))
|
||||
#$(eval $(call BuildPackage,nginx-mod-luci-ssl))
|
|
@ -1,28 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ -f "/etc/nginx/luci_nginx.conf" ] && [ -f "/etc/nginx/nginx.conf" ]; then
|
||||
if [ ! "$(cat '/etc/nginx/nginx.conf' | grep 'luci_uwsgi.conf')" ]; then
|
||||
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_old
|
||||
mv /etc/nginx/luci_nginx.conf /etc/nginx/nginx.conf
|
||||
core_number=$(grep -c ^processor /proc/cpuinfo)
|
||||
sed -i "3s/.*/worker_processes "$core_number";/" /etc/nginx/nginx.conf
|
||||
if [ -n "$(pgrep uhttpd)" ]; then
|
||||
/etc/init.d/uhttpd stop
|
||||
/etc/init.d/uhttpd disable
|
||||
fi
|
||||
if [ -n "$(pgrep nginx)" ]; then
|
||||
/etc/init.d/nginx restart
|
||||
else
|
||||
/etc/init.d/nginx start
|
||||
fi
|
||||
if [ -n "$(pgrep uwsgi)" ]; then
|
||||
/etc/init.d/uwsgi restart
|
||||
else
|
||||
/etc/init.d/uwsgi start
|
||||
fi
|
||||
else
|
||||
rm /etc/nginx/luci_nginx.conf
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
|
@ -1,48 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
|
||||
if [ -f "/etc/nginx/luci_nginx_ssl.conf" ] && [ -f "/etc/nginx/nginx.conf" ]; then
|
||||
if [ ! "$(cat '/etc/nginx/nginx.conf' | grep 'return 301 https://$host$request_uri;')" ]; then
|
||||
if [ -f "/etc/nginx/nginx.conf_old" ]; then
|
||||
rm /etc/nginx/nginx.conf
|
||||
else
|
||||
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_old
|
||||
fi
|
||||
mv /etc/nginx/luci_nginx_ssl.conf /etc/nginx/nginx.conf
|
||||
core_number=$(grep -c ^processor /proc/cpuinfo)
|
||||
sed -i "3s/.*/worker_processes "$core_number";/" /etc/nginx/nginx.conf
|
||||
if [ -n "$(pgrep nginx)" ]; then
|
||||
/etc/init.d/nginx restart
|
||||
else
|
||||
/etc/init.d/nginx start
|
||||
fi
|
||||
else
|
||||
rm /etc/nginx/luci_nginx_ssl.conf
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ ! -f "/etc/nginx/nginx.key" ]; then
|
||||
|
||||
NGINX_KEY=/etc/nginx/nginx.key
|
||||
NGINX_CER=/etc/nginx/nginx.cer
|
||||
OPENSSL_BIN=/usr/bin/openssl
|
||||
PX5G_BIN=/usr/sbin/px5g
|
||||
|
||||
# Prefer px5g for certificate generation (existence evaluated last)
|
||||
GENKEY_CMD=""
|
||||
UNIQUEID=$(dd if=/dev/urandom bs=1 count=4 | hexdump -e '1/1 "%02x"')
|
||||
[ -x "$OPENSSL_BIN" ] && GENKEY_CMD="$OPENSSL_BIN req -x509 -nodes"
|
||||
[ -x "$PX5G_BIN" ] && GENKEY_CMD="$PX5G_BIN selfsigned"
|
||||
[ -n "$GENKEY_CMD" ] && {
|
||||
$GENKEY_CMD \
|
||||
-days 730 -newkey rsa:2048 -keyout "${NGINX_KEY}.new" -out "${NGINX_CER}.new" \
|
||||
-subj /C="ZZ"/ST="Somewhere"/L="Unknown"/O="OpenWrt""$UNIQUEID"/CN="OpenWrt"
|
||||
sync
|
||||
mv "${NGINX_KEY}.new" "${NGINX_KEY}"
|
||||
mv "${NGINX_CER}.new" "${NGINX_CER}"
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
exit 0
|
|
@ -1,51 +0,0 @@
|
|||
|
||||
user nobody nogroup;
|
||||
worker_processes 1;
|
||||
|
||||
#error_log logs/error.log;
|
||||
#error_log logs/error.log notice;
|
||||
#error_log logs/error.log info;
|
||||
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
sendfile on;
|
||||
keepalive_timeout 0;
|
||||
|
||||
client_body_buffer_size 10K;
|
||||
client_header_buffer_size 1k;
|
||||
client_max_body_size 1G;
|
||||
large_client_header_buffers 2 1k;
|
||||
|
||||
gzip on;
|
||||
gzip_http_version 1.1;
|
||||
gzip_vary on;
|
||||
gzip_comp_level 1;
|
||||
gzip_proxied any;
|
||||
|
||||
root /www;
|
||||
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
server_name localhost;
|
||||
|
||||
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
|
||||
expires 365d;
|
||||
}
|
||||
|
||||
include luci_uwsgi.conf;
|
||||
|
||||
}
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
|
||||
user root;
|
||||
worker_processes 1;
|
||||
|
||||
#error_log logs/error.log;
|
||||
#error_log logs/error.log notice;
|
||||
#error_log logs/error.log info;
|
||||
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
sendfile on;
|
||||
keepalive_timeout 0;
|
||||
|
||||
client_body_buffer_size 10K;
|
||||
client_header_buffer_size 1k;
|
||||
client_max_body_size 1G;
|
||||
large_client_header_buffers 2 1k;
|
||||
|
||||
gzip on;
|
||||
gzip_http_version 1.1;
|
||||
gzip_vary on;
|
||||
gzip_comp_level 1;
|
||||
gzip_proxied any;
|
||||
|
||||
root /www;
|
||||
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
server_name _;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl default_server;
|
||||
listen [::]:443 ssl default_server;
|
||||
server_name localhost;
|
||||
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:DHE+AESGCM:DHE:!RSA!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!CAMELLIA:!SEED";
|
||||
ssl_session_tickets off;
|
||||
|
||||
ssl_certificate /etc/nginx/nginx.cer;
|
||||
ssl_certificate_key /etc/nginx/nginx.key;
|
||||
|
||||
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
|
||||
expires 365d;
|
||||
}
|
||||
|
||||
include luci_uwsgi.conf;
|
||||
|
||||
}
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
location /cgi-bin/luci {
|
||||
index index.html;
|
||||
uwsgi_param QUERY_STRING $query_string;
|
||||
uwsgi_param REQUEST_METHOD $request_method;
|
||||
uwsgi_param CONTENT_TYPE $content_type;
|
||||
uwsgi_param CONTENT_LENGTH $content_length if_not_empty;
|
||||
uwsgi_param REQUEST_URI $request_uri;
|
||||
uwsgi_param PATH_INFO $document_uri;
|
||||
uwsgi_param SERVER_PROTOCOL $server_protocol;
|
||||
uwsgi_param REMOTE_ADDR $remote_addr;
|
||||
uwsgi_param REMOTE_PORT $remote_port;
|
||||
uwsgi_param SERVER_ADDR $server_addr;
|
||||
uwsgi_param SERVER_PORT $server_port;
|
||||
uwsgi_param SERVER_NAME $server_name;
|
||||
uwsgi_modifier1 9;
|
||||
uwsgi_pass unix:////var/run/uwsgi.sock;
|
||||
}
|
||||
|
||||
location /luci-static {
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2015 OpenWrt.org
|
||||
|
||||
START=80
|
||||
|
||||
USE_PROCD=1
|
||||
|
||||
start_service() {
|
||||
[ -d /var/log/nginx ] || mkdir -p /var/log/nginx
|
||||
[ -d /var/lib/nginx ] || mkdir -p /var/lib/nginx
|
||||
|
||||
procd_open_instance
|
||||
procd_set_param command /usr/sbin/nginx -c /etc/nginx/nginx.conf -g 'daemon off;'
|
||||
procd_set_param file /etc/nginx/nginx.conf
|
||||
procd_set_param respawn
|
||||
procd_close_instance
|
||||
}
|
|
@ -1,195 +0,0 @@
|
|||
--- a/lua-nginx/src/ngx_http_lua_module.c
|
||||
+++ b/lua-nginx/src/ngx_http_lua_module.c
|
||||
@@ -165,14 +165,14 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
offsetof(ngx_http_lua_loc_conf_t, log_socket_errors),
|
||||
NULL },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
{ ngx_string("init_by_lua_block"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
|
||||
ngx_http_lua_init_by_lua_block,
|
||||
NGX_HTTP_MAIN_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_init_by_inline },
|
||||
-
|
||||
+#endif
|
||||
{ ngx_string("init_by_lua"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
|
||||
ngx_http_lua_init_by_lua,
|
||||
@@ -186,14 +186,14 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_MAIN_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_init_by_file },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
{ ngx_string("init_worker_by_lua_block"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
|
||||
ngx_http_lua_init_worker_by_lua_block,
|
||||
NGX_HTTP_MAIN_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_init_worker_by_inline },
|
||||
-
|
||||
+#endif
|
||||
{ ngx_string("init_worker_by_lua"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
|
||||
ngx_http_lua_init_worker_by_lua,
|
||||
@@ -209,6 +209,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
(void *) ngx_http_lua_init_worker_by_file },
|
||||
|
||||
#if defined(NDK) && NDK
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
/* set_by_lua $res { inline Lua code } [$arg1 [$arg2 [...]]] */
|
||||
{ ngx_string("set_by_lua_block"),
|
||||
NGX_HTTP_SRV_CONF|NGX_HTTP_SIF_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
@@ -217,7 +218,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_filter_set_by_lua_inline },
|
||||
-
|
||||
+#endif
|
||||
/* set_by_lua $res <inline script> [$arg1 [$arg2 [...]]] */
|
||||
{ ngx_string("set_by_lua"),
|
||||
NGX_HTTP_SRV_CONF|NGX_HTTP_SIF_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
@@ -245,7 +246,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_rewrite_handler_inline },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
/* rewrite_by_lua_block { <inline script> } */
|
||||
{ ngx_string("rewrite_by_lua_block"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
@@ -254,7 +255,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_rewrite_handler_inline },
|
||||
-
|
||||
+#endif
|
||||
/* access_by_lua "<inline script>" */
|
||||
{ ngx_string("access_by_lua"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
@@ -263,7 +264,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_access_handler_inline },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
/* access_by_lua_block { <inline script> } */
|
||||
{ ngx_string("access_by_lua_block"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
@@ -272,7 +273,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_access_handler_inline },
|
||||
-
|
||||
+#endif
|
||||
/* content_by_lua "<inline script>" */
|
||||
{ ngx_string("content_by_lua"),
|
||||
NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
|
||||
@@ -280,7 +281,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_content_handler_inline },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
/* content_by_lua_block { <inline script> } */
|
||||
{ ngx_string("content_by_lua_block"),
|
||||
NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
|
||||
@@ -288,7 +289,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_content_handler_inline },
|
||||
-
|
||||
+#endif
|
||||
/* log_by_lua <inline script> */
|
||||
{ ngx_string("log_by_lua"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
@@ -297,7 +298,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_log_handler_inline },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
/* log_by_lua_block { <inline script> } */
|
||||
{ ngx_string("log_by_lua_block"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
@@ -306,7 +307,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_log_handler_inline },
|
||||
-
|
||||
+#endif
|
||||
{ ngx_string("rewrite_by_lua_file"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
|NGX_CONF_TAKE1,
|
||||
@@ -361,7 +362,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_header_filter_inline },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
/* header_filter_by_lua_block { <inline script> } */
|
||||
{ ngx_string("header_filter_by_lua_block"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
@@ -370,7 +371,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_header_filter_inline },
|
||||
-
|
||||
+#endif
|
||||
{ ngx_string("header_filter_by_lua_file"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
|NGX_CONF_TAKE1,
|
||||
@@ -386,7 +387,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_body_filter_inline },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
/* body_filter_by_lua_block { <inline script> } */
|
||||
{ ngx_string("body_filter_by_lua_block"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
@@ -395,7 +396,7 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_body_filter_inline },
|
||||
-
|
||||
+#endif
|
||||
{ ngx_string("body_filter_by_lua_file"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
||||
|NGX_CONF_TAKE1,
|
||||
@@ -403,14 +404,14 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_body_filter_file },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
{ ngx_string("balancer_by_lua_block"),
|
||||
NGX_HTTP_UPS_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
|
||||
ngx_http_lua_balancer_by_lua_block,
|
||||
NGX_HTTP_SRV_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_balancer_handler_inline },
|
||||
-
|
||||
+#endif
|
||||
{ ngx_string("balancer_by_lua_file"),
|
||||
NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
|
||||
ngx_http_lua_balancer_by_lua,
|
||||
@@ -517,14 +518,14 @@ static ngx_command_t ngx_http_lua_cmds[]
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
offsetof(ngx_http_lua_loc_conf_t, ssl_ciphers),
|
||||
NULL },
|
||||
-
|
||||
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
|
||||
{ ngx_string("ssl_certificate_by_lua_block"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
|
||||
ngx_http_lua_ssl_cert_by_lua_block,
|
||||
NGX_HTTP_SRV_CONF_OFFSET,
|
||||
0,
|
||||
(void *) ngx_http_lua_ssl_cert_handler_inline },
|
||||
-
|
||||
+#endif
|
||||
{ ngx_string("ssl_certificate_by_lua_file"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
|
||||
ngx_http_lua_ssl_cert_by_lua,
|
|
@ -1,116 +0,0 @@
|
|||
--- a/auto/cc/name
|
||||
+++ b/auto/cc/name
|
||||
@@ -7,7 +7,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
|
||||
|
||||
ngx_feature="C compiler"
|
||||
ngx_feature_name=
|
||||
- ngx_feature_run=yes
|
||||
+ ngx_feature_run=
|
||||
ngx_feature_incs=
|
||||
ngx_feature_path=
|
||||
ngx_feature_libs=
|
||||
--- a/auto/cc/conf
|
||||
+++ b/auto/cc/conf
|
||||
@@ -183,7 +183,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
|
||||
else
|
||||
ngx_feature="gcc builtin atomic operations"
|
||||
ngx_feature_name=NGX_HAVE_GCC_ATOMIC
|
||||
- ngx_feature_run=yes
|
||||
+ ngx_feature_run=no
|
||||
ngx_feature_incs=
|
||||
ngx_feature_path=
|
||||
ngx_feature_libs=
|
||||
@@ -204,7 +204,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
|
||||
else
|
||||
ngx_feature="C99 variadic macros"
|
||||
ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS"
|
||||
- ngx_feature_run=yes
|
||||
+ ngx_feature_run=no
|
||||
ngx_feature_incs="#include <stdio.h>
|
||||
#define var(dummy, ...) sprintf(__VA_ARGS__)"
|
||||
ngx_feature_path=
|
||||
@@ -218,7 +218,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
|
||||
|
||||
ngx_feature="gcc variadic macros"
|
||||
ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS"
|
||||
- ngx_feature_run=yes
|
||||
+ ngx_feature_run=no
|
||||
ngx_feature_incs="#include <stdio.h>
|
||||
#define var(dummy, args...) sprintf(args)"
|
||||
ngx_feature_path=
|
||||
--- a/auto/os/linux
|
||||
+++ b/auto/os/linux
|
||||
@@ -36,7 +36,7 @@ fi
|
||||
|
||||
ngx_feature="epoll"
|
||||
ngx_feature_name="NGX_HAVE_EPOLL"
|
||||
-ngx_feature_run=yes
|
||||
+ngx_feature_run=no
|
||||
ngx_feature_incs="#include <sys/epoll.h>"
|
||||
ngx_feature_path=
|
||||
ngx_feature_libs=
|
||||
@@ -110,7 +110,7 @@ ngx_feature_test="int fd; struct stat sb
|
||||
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE"
|
||||
ngx_feature="sendfile()"
|
||||
ngx_feature_name="NGX_HAVE_SENDFILE"
|
||||
-ngx_feature_run=yes
|
||||
+ngx_feature_run=no
|
||||
ngx_feature_incs="#include <sys/sendfile.h>
|
||||
#include <errno.h>"
|
||||
ngx_feature_path=
|
||||
@@ -131,7 +131,7 @@ fi
|
||||
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
|
||||
ngx_feature="sendfile64()"
|
||||
ngx_feature_name="NGX_HAVE_SENDFILE64"
|
||||
-ngx_feature_run=yes
|
||||
+ngx_feature_run=no
|
||||
ngx_feature_incs="#include <sys/sendfile.h>
|
||||
#include <errno.h>"
|
||||
ngx_feature_path=
|
||||
@@ -149,7 +149,7 @@ ngx_include="sys/prctl.h"; . auto/includ
|
||||
|
||||
ngx_feature="prctl(PR_SET_DUMPABLE)"
|
||||
ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE"
|
||||
-ngx_feature_run=yes
|
||||
+ngx_feature_run=no
|
||||
ngx_feature_incs="#include <sys/prctl.h>"
|
||||
ngx_feature_path=
|
||||
ngx_feature_libs=
|
||||
--- a/auto/unix
|
||||
+++ b/auto/unix
|
||||
@@ -840,7 +840,7 @@ ngx_feature_test="void *p; p = memalign(
|
||||
|
||||
ngx_feature="mmap(MAP_ANON|MAP_SHARED)"
|
||||
ngx_feature_name="NGX_HAVE_MAP_ANON"
|
||||
-ngx_feature_run=yes
|
||||
+ngx_feature_run=no
|
||||
ngx_feature_incs="#include <sys/mman.h>"
|
||||
ngx_feature_path=
|
||||
ngx_feature_libs=
|
||||
@@ -853,7 +853,7 @@ ngx_feature_test="void *p;
|
||||
|
||||
ngx_feature='mmap("/dev/zero", MAP_SHARED)'
|
||||
ngx_feature_name="NGX_HAVE_MAP_DEVZERO"
|
||||
-ngx_feature_run=yes
|
||||
+ngx_feature_run=no
|
||||
ngx_feature_incs="#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>"
|
||||
@@ -868,7 +868,7 @@ ngx_feature_test='void *p; int fd;
|
||||
|
||||
ngx_feature="System V shared memory"
|
||||
ngx_feature_name="NGX_HAVE_SYSVSHM"
|
||||
-ngx_feature_run=yes
|
||||
+ngx_feature_run=no
|
||||
ngx_feature_incs="#include <sys/ipc.h>
|
||||
#include <sys/shm.h>"
|
||||
ngx_feature_path=
|
||||
@@ -882,7 +882,7 @@ ngx_feature_test="int id;
|
||||
|
||||
ngx_feature="POSIX semaphores"
|
||||
ngx_feature_name="NGX_HAVE_POSIX_SEM"
|
||||
-ngx_feature_run=yes
|
||||
+ngx_feature_run=no
|
||||
ngx_feature_incs="#include <semaphore.h>"
|
||||
ngx_feature_path=
|
||||
ngx_feature_libs=
|
|
@ -1,27 +0,0 @@
|
|||
--- a/auto/types/sizeof
|
||||
+++ b/auto/types/sizeof
|
||||
@@ -25,8 +25,14 @@ $NGX_INCLUDE_UNISTD_H
|
||||
$NGX_INCLUDE_INTTYPES_H
|
||||
$NGX_INCLUDE_AUTO_CONFIG_H
|
||||
|
||||
+char object_code_block[] = {
|
||||
+ '\n', 'e', '4', 'V', 'A',
|
||||
+ '0', 'x', ('0' + sizeof($ngx_type)),
|
||||
+ 'Y', '3', 'p', 'M', '\n'
|
||||
+};
|
||||
+
|
||||
int main(void) {
|
||||
- printf("%d", (int) sizeof($ngx_type));
|
||||
+ printf("dummy use of object_code_block to avoid gc-section: %c", object_code_block[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -40,7 +46,7 @@ eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&
|
||||
|
||||
|
||||
if [ -x $NGX_AUTOTEST ]; then
|
||||
- ngx_size=`$NGX_AUTOTEST`
|
||||
+ ngx_size=`sed -ne 's/^e4VA0x\(.\)Y3pM$/\1/p' < $NGX_AUTOTEST`
|
||||
echo " $ngx_size bytes"
|
||||
fi
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
--- a/src/os/unix/ngx_errno.c
|
||||
+++ b/src/os/unix/ngx_errno.c
|
||||
@@ -8,6 +8,9 @@
|
||||
#include <ngx_config.h>
|
||||
#include <ngx_core.h>
|
||||
|
||||
+#ifndef NGX_SYS_NERR
|
||||
+#define NGX_SYS_NERR 128
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* The strerror() messages are copied because:
|
|
@ -1,18 +0,0 @@
|
|||
--- a/conf/nginx.conf
|
||||
+++ b/conf/nginx.conf
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
-#user nobody;
|
||||
+user nobody nogroup;
|
||||
worker_processes 1;
|
||||
|
||||
#error_log logs/error.log;
|
||||
@@ -16,7 +16,7 @@ events {
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
- default_type application/octet-stream;
|
||||
+ #default_type application/octet-stream;
|
||||
|
||||
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||
# '$status $body_bytes_sent "$http_referer" '
|
|
@ -1,12 +0,0 @@
|
|||
--- a/auto/options
|
||||
+++ b/auto/options
|
||||
@@ -397,8 +397,7 @@ $0: warning: the \"--with-sha1-asm\" opt
|
||||
--test-build-solaris-sendfilev) NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;;
|
||||
|
||||
*)
|
||||
- echo "$0: error: invalid option \"$option\""
|
||||
- exit 1
|
||||
+ echo "$0: error: ignoring invalid option \"$option\""
|
||||
;;
|
||||
esac
|
||||
done
|
|
@ -1,11 +0,0 @@
|
|||
--- a/src/os/unix/ngx_process.h
|
||||
+++ b/src/os/unix/ngx_process.h
|
||||
@@ -44,7 +44,7 @@ typedef struct {
|
||||
} ngx_exec_ctx_t;
|
||||
|
||||
|
||||
-#define NGX_MAX_PROCESSES 1024
|
||||
+#define NGX_MAX_PROCESSES 8
|
||||
|
||||
#define NGX_PROCESS_NORESPAWN -1
|
||||
#define NGX_PROCESS_JUST_SPAWN -2
|
|
@ -45,6 +45,14 @@ config proxy 'proxy'
|
|||
list hosts '77.88.55.77'
|
||||
list hosts '74.82.42.42'
|
||||
list hosts '176.103.130.130'
|
||||
list hosts 'baidu.com'
|
||||
list hosts 'qq.com'
|
||||
list hosts 'weibo.com'
|
||||
list hosts 'aliyun.com'
|
||||
list hosts 'taobao.com'
|
||||
list hosts 'iqiyi.com'
|
||||
list hosts 'youku.com'
|
||||
list hosts 'douyin.com'
|
||||
option timeout '10'
|
||||
option tries '3'
|
||||
option wait_test '0'
|
||||
|
|
27
openmptcprouter/files/etc/init.d/fengshan
Executable file
27
openmptcprouter/files/etc/init.d/fengshan
Executable file
|
@ -0,0 +1,27 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=20
|
||||
start()
|
||||
{
|
||||
# 温度阈值设置
|
||||
HIGH_THRESHOLD=60000
|
||||
LOW_THRESHOLD=50000
|
||||
|
||||
# 读取初始温度值
|
||||
temperature=$(cat /sys/class/thermal/thermal_zone0/temp)
|
||||
echo "初始温度:$temperature"
|
||||
|
||||
# 获取当前温度值
|
||||
temperature=$(cat /sys/class/thermal/thermal_zone0/temp)
|
||||
echo "当前温度:$temperature"
|
||||
|
||||
if [ "$temperature" -ge "$HIGH_THRESHOLD" ]; then
|
||||
echo 1 > /sys/class/leds/green:fengshan/brightness
|
||||
echo "风扇高转速"
|
||||
logger -t "fengshanup" "温度过高"
|
||||
elif [ "$temperature" -le "$LOW_THRESHOLD" ]; then
|
||||
echo 0 > /sys/class/leds/green:fengshan/brightness
|
||||
echo "风扇低转速"
|
||||
logger -t "fengshandown" "温度正常"
|
||||
fi
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue